5 template <
typename Float> 
class vector;
 
    6 template <
typename TYPE, 
typename Float> 
class view1D;
 
   20 template <
typename Float> 
class Dense {
 
   46   std::vector<Float> 
val;
 
  118   Dense(
const size_t M, 
const size_t N);
 
  130   Dense(
const size_t M, 
const size_t N, 
const Float *value);
 
  142   Dense(
const size_t M, 
const size_t N, 
const std::vector<Float> &value);
 
  166   Dense(
const size_t M, 
const size_t N,
 
  167         const std::initializer_list<Float> &list);
 
  181   Dense(
const size_t M, 
const size_t N, 
const Float 
min, 
const Float 
max);
 
  195   Dense(
const size_t M, 
const size_t N, 
const Float 
min, 
const Float 
max,
 
  196         const std::uint32_t seed);
 
  208   Dense(
const size_t M, 
const size_t N, 
const Float value);
 
  220   void set_ptr(
const size_t M, 
const size_t N, 
const std::vector<Float> &value);
 
  283   [[nodiscard]] std::string 
type()
 const { 
return "Dense"; }
 
  315     return get_nnz() * 
sizeof(Float) / 1.0e+9;
 
  328   [[nodiscard]] Float 
at(
const size_t i, 
const size_t j) 
const;
 
  340   [[nodiscard]] Float 
at(
const size_t i, 
const size_t j) {
 
  341     return static_cast<const Dense *
>(
this)->
at(i, j);
 
  355   void insert(
const size_t i, 
const size_t j, 
const Float Val);
 
  501       throw std::runtime_error(
"Error, GPU matrix dense cant use operator[]");
 
  517                            bool compare_cpu_and_device = 
false) 
const;
 
Coodinate (COO) format Matrix (need to sort)
 
void row(const size_t r, view1D< vector< Float >, Float > &vec) const
 
Float at(const size_t i, const size_t j) const
get element A[i][j]
 
Float at(const size_t i, const size_t j)
get element A[i][j] (only CPU)
 
void row(const size_t r, view1D< matrix::Dense< Float >, Float > &vec) const
 
void set_nnz(const size_t NZ)
Set # of non-zero elements.
 
std::string type() const
get format name "Dense"
 
Dense(const Dense< Float > &dense, Float value)
Create Dense matrix of the same size as input matrix.
 
bool operator!=(const Dense< Float > &mat) const
Comparing matrices (A != mat)
 
bool get_device_mem_stat() const
true: sended, false: not send
 
void print_all(bool force_cpu=false) const
print all elements to standard I/O
 
void col(const size_t c, view1D< vector< Float >, Float > &vec) const
 
void diag_add(const view1D< vector< Float >, Float > &vec)
 
void diag_mul(const view1D< matrix::Dense< Float >, Float > &vec)
 
void convert(const Dense< Float > &dense)
Create Dense matrix from Dense matrix.
 
Float * operator[](size_t m)
reference to the pointer of the begining of the m-th row
 
Dense(const size_t M, const size_t N, const Float min, const Float max, const std::uint32_t seed)
Create random dense matrix from dense matrix.
 
Dense(const size_t M, const size_t N, const Float value)
Create construct dense matrix.
 
Dense(const COO< Float > &coo)
Create dense matrix from COO matrix.
 
Dense(const size_t M, const size_t N, const Float *value)
Create dense matrix from array.
 
void diag(vector< Float > &vec) const
get diag. vector
 
Dense(const size_t M, const size_t N, const vector< Float > &value)
Create dense matrix from monolish::vector.
 
size_t get_col() const
get # of col
 
~Dense()
destructor of CRS matrix, free GPU memory
 
void diag_mul(const view1D< vector< Float >, Float > &vec)
 
void transpose()
get transposed matrix (A = A^T)
 
bool operator==(const Dense< Float > &mat) const
Comparing matrices (A == mat)
 
void set_ptr(const size_t M, const size_t N, const std::vector< Float > &value)
Set Dense array from std::vector.
 
void col(const size_t c, view1D< matrix::Dense< Float >, Float > &vec) const
 
void diag_sub(const vector< Float > &vec)
Vector and diag. vector of Dense format matrix sub.
 
Dense(const size_t M, const size_t N)
Allocate dense matrix.
 
void diag_div(const view1D< matrix::Dense< Float >, Float > &vec)
 
bool gpu_status
true: sended, false: not send
 
std::vector< Float > val
Dense format value(size M x N)
 
void diag(view1D< vector< Float >, Float > &vec) const
 
bool equal(const Dense< Float > &mat, bool compare_cpu_and_device=false) const
Comparing matrices (A == mat)
 
size_t get_row() const
get # of row
 
void recv()
recv. data to GPU, and free data on GPU
 
void fill(Float value)
fill matrix elements with a scalar value
 
void transpose(const Dense &B)
create transposed matrix from Dense format matrix (A = B^T)
 
void diag_add(const Float alpha)
Scalar and diag. vector of Dense format matrix add.
 
void diag_add(const vector< Float > &vec)
Vector and diag. vector of Dense format matrix add.
 
void row(const size_t r, vector< Float > &vec) const
get row vector
 
double get_data_size() const
Memory data space required by the matrix.
 
void diag_sub(const view1D< matrix::Dense< Float >, Float > &vec)
 
size_t get_nnz() const
get # of non-zeros
 
void device_free() const
free data on GPU
 
Dense(const Dense< Float > &dense)
Create Dense matrix from Dense matrix.
 
void diag_sub(const view1D< vector< Float >, Float > &vec)
 
Dense(const size_t M, const size_t N, const std::initializer_list< Float > &list)
Create dense matrix from std::initializer_list.
 
void diag_sub(const Float alpha)
Scalar and diag. vector of Dense format matrix sub.
 
void diag_div(const vector< Float > &vec)
Vector and diag. vector of Dense format matrix div.
 
size_t nnz
# of non-zero element (M * N)
 
void col(const size_t c, vector< Float > &vec) const
get column vector
 
void operator=(const Dense< Float > &mat)
matrix copy
 
void set_col(const size_t M)
Set column number.
 
void diag_div(const view1D< vector< Float >, Float > &vec)
 
void diag(view1D< matrix::Dense< Float >, Float > &vec) const
 
void diag_mul(const Float alpha)
Scalar and diag. vector of Dense format matrix mul.
 
void insert(const size_t i, const size_t j, const Float Val)
get element A[i][j]
 
void convert(const COO< Float > &coo)
Create Dense matrix from COO matrix.
 
void set_row(const size_t N)
Set row number.
 
void diag_mul(const vector< Float > &vec)
Vector and diag. vector of Dense format matrix mul.
 
void diag_add(const view1D< matrix::Dense< Float >, Float > &vec)
 
Dense(const size_t M, const size_t N, const std::vector< Float > &value)
Create dense matrix from std::vector.
 
Dense(const size_t M, const size_t N, const Float min, const Float max)
Create random dense matrix from dense matrix.
 
void send() const
send data to GPU
 
void nonfree_recv()
recv. data to GPU (w/o free)
 
void diag_div(const Float alpha)
Scalar and diag. vector of Dense format matrix div.
 
void max(const matrix::CRS< double > &A, const matrix::CRS< double > &B, matrix::CRS< double > &C)
Create a new CRS matrix with greatest elements of two matrices (C[0:nnz] = max(A[0:nnz],...
 
void min(const matrix::CRS< double > &A, const matrix::CRS< double > &B, matrix::CRS< double > &C)
Create a new CRS matrix with smallest elements of two matrices (C[0:nnz] = min(A[0:nnz],...