monolish
0.15.1
MONOlithic LInear equation Solvers for Highly-parallel architecture
|
Go to the documentation of this file.
18 template <
typename Float>
class vector;
20 template <
typename Float>
class Dense;
21 template <
typename Float>
class COO;
22 template <
typename Float>
class CRS;
30 template <
typename Float>
class LinearOperator {
94 const size_t M,
const size_t N,
110 const size_t M,
const size_t N,
125 const size_t M,
const size_t N,
141 const size_t M,
const size_t N,
209 [[nodiscard]] std::function<vector<Float>(
const vector<Float> &)>
222 [[nodiscard]] std::function<vector<Float>(
const vector<Float> &)>
234 [[nodiscard]] std::function<
248 [[nodiscard]] std::function<
262 return !(
matvec ==
nullptr);
349 [[nodiscard]] std::string
type()
const {
return "LinearOperator"; }
Linear Operator imitating Matrix.
void set_matvec(const std::function< vector< Float >(const vector< Float > &)> &MATVEC)
set multiplication function of matrix and vector
bool gpu_status
true: sended, false: not send
std::string type() const
get format name "LinearOperator"
std::function< vector< Float >const vector< Float > &)> matvec
pseudo multiplication function of matrix and vector
LinearOperator(Dense< Float > &dense)
bool get_rmatmul_dense_init_flag() const
get flag that shows rmatmul_dense is defined or not
void set_device_mem_stat(bool status)
void convert_to_Dense(Dense< Float > &dense) const
std::function< matrix::Dense< Float >const matrix::Dense< Float > &)> get_matmul_dense() const
get multiplication function of matrix and matrix dense
void send() const
send data to GPU
bool get_device_mem_stat() const
true: sended, false: not send
size_t get_col() const
get # of col
std::function< matrix::Dense< Float >const matrix::Dense< Float > &)> get_rmatmul_dense() const
get multiplication function of (Hermitian) transposed matrix and matrix dense;
std::function< Dense< Float >const Dense< Float > &)> rmatmul_dense
pseudo multiplication function of (Hermitian) transposed matrix and dense matrix
~LinearOperator()
destructor of LinearOperator, free GPU memory
bool get_matvec_init_flag() const
get flag that shows matvec is defined or not
std::function< vector< Float >const vector< Float > &)> rmatvec
pseudo multiplication function of (Hermitian) transposed matrix and vector
void diag(vector< Float > &vec) const
get diag. vector
std::function< Dense< Float >const Dense< Float > &)> matmul_dense
pseudo multiplication function of matrix and dense matrix
LinearOperator(COO< Float > &coo)
Create LinearOperator from COO.
size_t get_row() const
get # of row
void operator=(const LinearOperator< Float > &mat)
operator copy
void convert(COO< Float > &coo)
Convert LinearOperator from COO.
Coodinate (COO) format Matrix (need to sort)
void set_rmatmul_dense(const std::function< matrix::Dense< Float >(const matrix::Dense< Float > &)> &RMATMUL)
set multiplication function of (Hermitian) transposed matrix and matrix dense
void nonfree_recv() const
recv. data to GPU (w/o free)
LinearOperator(CRS< Float > &crs)
bool get_matmul_dense_init_flag() const
get flag that shows matmul_dense is defined or not
void recv() const
recv. data to GPU, and free data on GPU
std::function< vector< Float >const vector< Float > &)> get_rmatvec() const
get multiplication function of (Hermitian) transposed matrix and vector C = A;
void set_matmul_dense(const std::function< matrix::Dense< Float >(const matrix::Dense< Float > &)> &MATMUL)
set multiplication function of matrix and matrix dense
void set_rmatvec(const std::function< vector< Float >(const vector< Float > &)> &RMATVEC)
set multiplication function of (Hermitian) transposed matrix and vector
void device_free() const
free data on GPU
std::function< vector< Float >const vector< Float > &)> get_matvec() const
get multiplication function of matrix and vector
Compressed Row Storage (CRS) format Matrix.
bool get_rmatvec_init_flag() const
get flag that shows rmatvec is defined or not