1 #ifndef PARALUTION_BASE_MATRIX_HPP_
2 #define PARALUTION_BASE_MATRIX_HPP_
11 template <
typename ValueType>
13 template <
typename ValueType>
15 template <
typename ValueType>
17 template <
typename ValueType>
19 template <
typename ValueType>
21 template <
typename ValueType>
23 template <
typename ValueType>
25 template <
typename ValueType>
27 template <
typename ValueType>
30 template <
typename ValueType>
33 template <
typename ValueType>
35 template <
typename ValueType>
37 template <
typename ValueType>
39 template <
typename ValueType>
41 template <
typename ValueType>
43 template <
typename ValueType>
45 template <
typename ValueType>
47 template <
typename ValueType>
49 template <
typename ValueType>
52 template <
typename ValueType>
54 template <
typename ValueType>
56 template <
typename ValueType>
58 template <
typename ValueType>
60 template <
typename ValueType>
62 template <
typename ValueType>
64 template <
typename ValueType>
66 template <
typename ValueType>
68 template <
typename ValueType>
71 template <
typename ValueType>
73 template <
typename ValueType>
75 template <
typename ValueType>
77 template <
typename ValueType>
79 template <
typename ValueType>
81 template <
typename ValueType>
83 template <
typename ValueType>
85 template <
typename ValueType>
87 template <
typename ValueType>
91 template <
typename ValueType>
106 virtual void info(
void)
const = 0;
112 virtual bool Check(
void)
const;
115 virtual void AllocateCSR(
const int nnz,
const int nrow,
const int ncol);
117 virtual void AllocateMCSR(
const int nnz,
const int nrow,
const int ncol);
119 virtual void AllocateCOO(
const int nnz,
const int nrow,
const int ncol);
121 virtual void AllocateDIA(
const int nnz,
const int nrow,
const int ncol,
const int ndiag);
123 virtual void AllocateELL(
const int nnz,
const int nrow,
const int ncol,
const int max_row);
125 virtual void AllocateHYB(
const int ell_nnz,
const int coo_nnz,
const int ell_max_row,
126 const int nrow,
const int ncol);
131 virtual void SetDataPtrCOO(
int **row,
int **col, ValueType **val,
132 const int nnz,
const int nrow,
const int ncol);
137 virtual void SetDataPtrCSR(
int **row_offset,
int **col, ValueType **val,
138 const int nnz,
const int nrow,
const int ncol);
140 virtual void LeaveDataPtrCSR(
int **row_offset,
int **col, ValueType **val);
144 const int nnz,
const int nrow,
const int ncol,
const int max_row);
146 virtual void LeaveDataPtrELL(
int **col, ValueType **val,
int &max_row);
150 const int nnz,
const int nrow,
const int ncol,
const int num_diag);
152 virtual void LeaveDataPtrDIA(
int **offset, ValueType **val,
int &num_diag);
155 virtual void SetDataPtrDENSE(ValueType **val,
const int nrow,
const int ncol);
160 virtual void Clear(
void) = 0;
163 virtual bool Zeros(
void);
166 virtual bool Assemble(
const int *
i,
const int *
j,
const ValueType *v,
167 const int size,
const int n,
const int m,
168 int **pp_assembly_rank,
169 int **pp_assembly_irank,
170 int **pp_assembly_loop_start,
171 int **pp_assembly_loop_end,
174 const int *assembly_rank,
175 const int *assembly_irank,
176 const int *assembly_loop_start,
177 const int *assembly_loop_end,
181 virtual bool Scale(
const ValueType alpha);
187 virtual bool AddScalar(
const ValueType alpha);
195 const int col_offset,
254 virtual void CopyFromCSR(
const int *row_offsets,
const int *col,
const ValueType *val);
257 virtual void CopyToCSR(
int *row_offsets,
int *col, ValueType *val)
const;
260 virtual void CopyFromCOO(
const int *row,
const int *col,
const ValueType *val);
263 virtual void CopyToCOO(
int *row,
int *col, ValueType *val)
const;
269 virtual bool ReadFileMTX(
const std::string filename);
271 virtual bool WriteFileMTX(
const std::string filename)
const;
274 virtual bool ReadFileCSR(
const std::string filename);
276 virtual bool WriteFileCSR(
const std::string filename)
const;
302 const ValueType beta,
const bool structure);
310 virtual bool ILUTFactorize(
const double t,
const int maxrow);
340 virtual void LAnalyse(
const bool diag_unit=
false);
350 virtual void UAnalyse(
const bool diag_unit=
false);
365 virtual bool Invert(
void);
368 virtual bool Gershgorin(ValueType &lambda_min, ValueType &lambda_max)
const;
378 virtual bool Compress(
const double drop_off);
384 virtual bool Sort(
void);
414 virtual bool SPAI(
void);
437 template <
typename ValueType>
447 template <
typename ValueType>
448 class AcceleratorMatrix :
public BaseMatrix<ValueType> {
456 virtual void CopyFromHost(
const HostMatrix<ValueType> &src) = 0;
462 virtual void CopyToHost(HostMatrix<ValueType> *dst)
const = 0;
469 template <
typename ValueType>
470 class GPUAcceleratorMatrix :
public AcceleratorMatrix<ValueType> {
479 template <
typename ValueType>
480 class OCLAcceleratorMatrix :
public AcceleratorMatrix<ValueType> {
489 template <
typename ValueType>
490 class MICAcceleratorMatrix :
public AcceleratorMatrix<ValueType> {
502 #endif // PARALUTION_BASE_MATRIX_HPP_
A
Definition: pcg_example.m:10
virtual void SetDataPtrCOO(int **row, int **col, ValueType **val, const int nnz, const int nrow, const int ncol)
Initialize a COO matrix on the Host with externally allocated data.
Definition: base_matrix.cpp:587
virtual bool ILUpFactorizeNumeric(const int p, const BaseMatrix< ValueType > &mat)
Perform ILU(p) factorization based on power (see power(q)-pattern method, D. Lukarski "Parallel Spars...
Definition: base_matrix.cpp:330
virtual bool DiagonalMatrixMultL(const BaseVector< ValueType > &diag)
Multiply the matrix with diagonal matrix (stored in LocalVector), this=diag*this (left multiplication...
Definition: base_matrix.cpp:552
virtual bool CreateFromMap(const BaseVector< int > &map, const int n, const int m)
Create a restriction matrix operator based on an int vector map.
Definition: base_matrix.cpp:701
virtual bool NumericMatMatMult(const BaseMatrix< ValueType > &A, const BaseMatrix< ValueType > &B)
Perform numerical matrix-matrix multiplication (i.e. value computation), this = A*B.
Definition: base_matrix.cpp:476
IndexType i
Definition: cuda_kernels_coo.hpp:195
virtual bool Assemble(const int *i, const int *j, const ValueType *v, const int size, const int n, const int m, int **pp_assembly_rank, int **pp_assembly_irank, int **pp_assembly_loop_start, int **pp_assembly_loop_end, int &nThreads)
Assembling.
Definition: base_matrix.cpp:726
virtual void CopyTo(BaseMatrix< ValueType > *mat) const =0
Copy to another matrix.
virtual bool AMGSmoothedAggregation(const ValueType relax, const BaseVector< int > &aggregates, const BaseVector< int > &connections, BaseMatrix< ValueType > *prolong, BaseMatrix< ValueType > *restrict) const
Definition: base_matrix.cpp:496
virtual bool SymbolicPower(const int p)
Perform symbolic computation (structure only) of |this|^p.
Definition: base_matrix.cpp:320
Definition: base_matrix.hpp:86
Definition: base_matrix.hpp:24
virtual void ApplyAdd(const BaseVector< ValueType > &in, const ValueType scalar, BaseVector< ValueType > *out) const =0
Apply and add the matrix to vector, out = out + scalar*this*in;.
Definition: base_matrix.hpp:44
virtual void CopyToHostAsync(HostMatrix< ValueType > *dst) const
Async opy (accelerator matrix) to host matrix.
Definition: base_matrix.cpp:805
int get_nrow(void) const
Return the number of rows in the matrix.
Definition: base_matrix.cpp:32
virtual bool Invert(void)
Invert this.
Definition: base_matrix.cpp:532
virtual bool ReadFileMTX(const std::string filename)
Read matrix from MTX (Matrix Market Format) file.
Definition: base_matrix.cpp:194
virtual bool ConvertFrom(const BaseMatrix< ValueType > &mat)=0
Convert the matrix from another matrix (with different structure)
Definition: base_matrix.cpp:562
Definition: base_matrix.hpp:59
Definition: base_matrix.hpp:67
const IndexType idx
Definition: cuda_kernels_coo.hpp:115
Definition: base_matrix.hpp:80
Definition: base_matrix.hpp:14
virtual void CopyToAsync(BaseMatrix< ValueType > *mat) const
Copy to another matrix.
Definition: base_matrix.cpp:716
virtual void UAnalyseClear(void)
Delete the analysed data (see UAnalyse) U-party.
Definition: base_matrix.cpp:460
virtual void LUAnalyse(void)
Analyse the structure (level-scheduling)
Definition: base_matrix.cpp:378
virtual void SetDataPtrELL(int **col, ValueType **val, const int nnz, const int nrow, const int ncol, const int max_row)
Initialize an ELL matrix on the Host with externally allocated data.
Definition: base_matrix.cpp:655
virtual ~MICAcceleratorMatrix()
Definition: base_matrix.cpp:840
virtual ~HostMatrix()
Definition: base_matrix.cpp:777
Definition: base_matrix.hpp:65
virtual bool AMGConnect(const ValueType eps, BaseVector< int > *connections) const
Definition: base_matrix.cpp:486
virtual void LeaveDataPtrDIA(int **offset, ValueType **val, int &num_diag)
Leave a DIA matrix to Host pointers.
Definition: base_matrix.cpp:690
int get_nnz(void) const
Return the non-zeros of the matrix.
Definition: base_matrix.cpp:46
virtual bool ExtractLDiagonal(BaseMatrix< ValueType > *L) const
Extract the lower triangular matrix including diagonal.
Definition: base_matrix.cpp:239
virtual void CopyFrom(const BaseMatrix< ValueType > &mat)=0
Copy from another matrix.
virtual void AllocateHYB(const int ell_nnz, const int coo_nnz, const int ell_max_row, const int nrow, const int ncol)
Allocate HYB Matrix.
Definition: base_matrix.cpp:159
virtual void LAnalyseClear(void)
Delete the analysed data (see LAnalyse) L-party.
Definition: base_matrix.cpp:433
virtual bool LSolve(const BaseVector< ValueType > &in, BaseVector< ValueType > *out) const
Solve L out = in; if level-scheduling algorithm is provided then the graph traversing is performed in...
Definition: base_matrix.cpp:444
Definition: base_matrix.hpp:26
Definition: backend_manager.hpp:10
Backend descriptor - keeps information about the hardware - OpenMP (threads); CUDA (blocksizes...
Definition: backend_manager.hpp:19
virtual bool CMK(BaseVector< int > *permutation) const
Create permutation vector for CMK reordering of the matrix.
Definition: base_matrix.cpp:295
virtual bool Transpose(void)
Transpose the matrix.
Definition: base_matrix.cpp:577
virtual void CopyToCOO(int *row, int *col, ValueType *val) const
Copy to COO array (the arrays have to be allocated)
Definition: base_matrix.cpp:104
Definition: base_vector.hpp:16
Definition: base_matrix.hpp:50
virtual void Apply(const BaseVector< ValueType > &in, BaseVector< ValueType > *out) const =0
Apply the matrix to vector, out = this*in;.
AcceleratorMatrix()
Definition: base_matrix.cpp:787
nnz
Definition: pcg_example.m:8
virtual void LeaveDataPtrDENSE(ValueType **val)
Leave a DENSE matrix to Host pointers.
Definition: base_matrix.cpp:644
virtual bool AssembleUpdate(const ValueType *v, const int *assembly_rank, const int *assembly_irank, const int *assembly_loop_start, const int *assembly_loop_end, const int nThreads)
Definition: base_matrix.cpp:737
end if j
Definition: pcg_example.m:22
virtual void UAnalyse(const bool diag_unit=false)
Analyse the structure (level-scheduling) U-part; diag_unit == true the diag is 1; diag_unit == false ...
Definition: base_matrix.cpp:449
virtual bool AMGAggregation(const BaseVector< int > &aggregates, BaseMatrix< ValueType > *prolong, BaseMatrix< ValueType > *restrict) const
Definition: base_matrix.cpp:505
const IndexType const IndexType const IndexType const ValueType const ValueType scalar
Definition: cuda_kernels_coo.hpp:91
virtual bool DiagonalMatrixMultR(const BaseVector< ValueType > &diag)
Multiply the matrix with diagonal matrix (stored in LocalVector), this=this*diag (right multiplicatio...
Definition: base_matrix.cpp:547
int get_ncol(void) const
Return the number of columns in the matrix.
Definition: base_matrix.cpp:39
Definition: base_matrix.hpp:28
virtual bool AddScalarDiagonal(const ValueType alpha)
Add alpha to the diagonal entries of the matrix.
Definition: base_matrix.cpp:368
virtual bool ExtractDiagonal(BaseVector< ValueType > *vec_diag) const
Extract the diagonal values of the matrix into a LocalVector.
Definition: base_matrix.cpp:215
virtual bool AMGAggregate(const BaseVector< int > &connections, BaseVector< int > *aggregates) const
Definition: base_matrix.cpp:491
virtual bool Householder(const int idx, ValueType &beta, BaseVector< ValueType > *vec) const
Compute Householder vector.
Definition: base_matrix.cpp:517
virtual void CopyFromCSR(const int *row_offsets, const int *col, const ValueType *val)
Copy from CSR array (the matrix has to be allocated)
Definition: base_matrix.cpp:71
HostMatrix()
Definition: base_matrix.cpp:773
virtual void SetDataPtrCSR(int **row_offset, int **col, ValueType **val, const int nnz, const int nrow, const int ncol)
Initialize a CSR matrix on the Host with externally allocated data.
Definition: base_matrix.cpp:610
virtual bool Sort(void)
Sort the matrix indices.
Definition: base_matrix.cpp:582
virtual void CopyFromHost(const HostMatrix< ValueType > &src)=0
Copy (accelerator matrix) from host matrix.
virtual bool RCMK(BaseVector< int > *permutation) const
Create permutation vector for reverse CMK reordering of the matrix.
Definition: base_matrix.cpp:300
virtual void Clear(void)=0
Clear (free) the matrix.
virtual bool SPAI(void)
SParse Approximate Inverse assembly for given system matrix pattern.
Definition: base_matrix.cpp:542
virtual void AllocateMCSR(const int nnz, const int nrow, const int ncol)
Allocate MCSR Matrix.
Definition: base_matrix.cpp:182
Definition: base_matrix.hpp:74
virtual void LAnalyse(const bool diag_unit=false)
Analyse the structure (level-scheduling) L-part diag_unit == true the diag is 1; diag_unit == false t...
Definition: base_matrix.cpp:422
Definition: base_matrix.hpp:78
virtual bool AddScalarOffDiagonal(const ValueType alpha)
Add alpha to the off-diagonal entries of the matrix.
Definition: base_matrix.cpp:373
virtual bool Compress(const double drop_off)
Delete all entries abs(a_ij) <= drop_off; the diagonal elements are never deleted.
Definition: base_matrix.cpp:572
virtual void SetDataPtrDENSE(ValueType **val, const int nrow, const int ncol)
Initialize a DENSE matrix on the Host with externally allocated data.
Definition: base_matrix.cpp:633
Definition: base_vector.hpp:10
GPUAcceleratorMatrix()
Definition: base_matrix.cpp:816
Definition: base_matrix.hpp:34
virtual bool ExtractU(BaseMatrix< ValueType > *U) const
Extract the upper triangular matrix.
Definition: base_matrix.cpp:244
Definition: base_matrix.hpp:61
void power(const int mic_dev, const int size, const double val, ValueType *vec)
Definition: mic_vector_kernel.cpp:241
Definition: base_matrix.hpp:88
virtual bool Scale(const ValueType alpha)
Scale all values.
Definition: base_matrix.cpp:347
virtual unsigned int get_mat_format(void) const =0
Return the matrix format id (see matrix_formats.hpp)
int ncol_
Number of columns.
Definition: base_matrix.hpp:421
virtual bool ExtractL(BaseMatrix< ValueType > *L) const
Extract the lower triangular matrix.
Definition: base_matrix.cpp:234
virtual ~GPUAcceleratorMatrix()
Definition: base_matrix.cpp:820
virtual bool QRSolve(const BaseVector< ValueType > &in, BaseVector< ValueType > *out) const
Solve QR out = in.
Definition: base_matrix.cpp:527
Definition: backend_manager.hpp:12
virtual bool WriteFileMTX(const std::string filename) const
Write matrix to MTX (Matrix Market Format) file.
Definition: base_matrix.cpp:200
virtual bool MaximalIndependentSet(int &size, BaseVector< int > *permutation) const
Perform maximal independent set decomposition of the matrix; Returns the size of the maximal independ...
Definition: base_matrix.cpp:310
virtual bool ScaleDiagonal(const ValueType alpha)
Scale the diagonal entries of the matrix with alpha.
Definition: base_matrix.cpp:353
virtual bool MatMatMult(const BaseMatrix< ValueType > &A, const BaseMatrix< ValueType > &B)
Multiply two matrices, this = A * B.
Definition: base_matrix.cpp:557
virtual void AllocateCOO(const int nnz, const int nrow, const int ncol)
Allocate COO Matrix.
Definition: base_matrix.cpp:126
Definition: base_matrix.hpp:42
virtual void AllocateDIA(const int nnz, const int nrow, const int ncol, const int ndiag)
Allocate DIA Matrix.
Definition: base_matrix.cpp:137
Definition: base_matrix.hpp:20
Definition: base_matrix.hpp:22
Definition: base_matrix.hpp:82
virtual bool ReadFileCSR(const std::string filename)
Read matrix from CSR (PARALUTION binary format) file.
Definition: base_matrix.cpp:205
virtual bool ICFactorize(BaseVector< ValueType > *inv_diag)
Perform IC(0) factorization.
Definition: base_matrix.cpp:280
Definition: base_matrix.hpp:76
virtual bool ILUTFactorize(const double t, const int maxrow)
Perform ILU(t,m) factorization based on threshold and maximum number of elements per row...
Definition: base_matrix.cpp:275
OCLAcceleratorMatrix()
Definition: base_matrix.cpp:827
virtual bool ExtractUDiagonal(BaseMatrix< ValueType > *U) const
Extract the upper triangular matrix including diagonal.
Definition: base_matrix.cpp:249
virtual void AllocateELL(const int nnz, const int nrow, const int ncol, const int max_row)
Allocate ELL Matrix.
Definition: base_matrix.cpp:148
virtual bool SymbolicMatMatMult(const BaseMatrix< ValueType > &src)
Perform symbolic matrix-matrix multiplication (i.e. determine the structure), this = this*src...
Definition: base_matrix.cpp:325
Base class for all host/accelerator matrices.
Definition: base_matrix.hpp:92
Definition: base_vector.hpp:22
virtual bool ExtractRowVector(const int idx, BaseVector< ValueType > *vec) const
Extract values from a row of a matrix to a vector.
Definition: base_matrix.cpp:762
virtual void CopyToHost(HostMatrix< ValueType > *dst) const =0
Copy (accelerator matrix) to host matrix.
virtual bool MultiColoring(int &num_colors, int **size_colors, BaseVector< int > *permutation) const
Perform multi-coloring decomposition of the matrix; Returns number of colors, the corresponding sizes...
Definition: base_matrix.cpp:305
virtual void LUAnalyseClear(void)
Delete the analysed data (see LUAnalyse)
Definition: base_matrix.cpp:389
virtual bool ReplaceRowVector(const int idx, const BaseVector< ValueType > &vec)
Replace a column vector of a matrix.
Definition: base_matrix.cpp:757
Definition: base_matrix.hpp:72
virtual bool PermuteBackward(const BaseVector< int > &permutation)
Perform (backward) permutation of the matrix.
Definition: base_matrix.cpp:290
virtual bool ScaleOffDiagonal(const ValueType alpha)
Scale the off-diagonal entries of the matrix with alpha.
Definition: base_matrix.cpp:358
Definition: base_matrix.hpp:16
virtual bool USolve(const BaseVector< ValueType > &in, BaseVector< ValueType > *out) const
Solve U out = in; if level-scheduling algorithm is provided then the graph traversing is performed in...
Definition: base_matrix.cpp:471
virtual bool ExtractInverseDiagonal(BaseVector< ValueType > *vec_inv_diag) const
Extract the inverse (reciprocal) diagonal values of the matrix into a LocalVector.
Definition: base_matrix.cpp:220
virtual void info(void) const =0
Shows simple info about the object.
virtual void LeaveDataPtrCOO(int **row, int **col, ValueType **val)
Leave a COO matrix to Host pointers.
Definition: base_matrix.cpp:599
Definition: backend_manager.cpp:43
virtual bool ILU0Factorize(void)
Perform ILU(0) factorization.
Definition: base_matrix.cpp:270
virtual bool QRDecompose(void)
QR Decomposition.
Definition: base_matrix.cpp:522
Definition: base_matrix.hpp:55
virtual bool LLSolve(const BaseVector< ValueType > &in, BaseVector< ValueType > *out) const
Solve LL^T out = in; if level-scheduling algorithm is provided then the graph.
Definition: base_matrix.cpp:259
virtual ~AcceleratorMatrix()
Definition: base_matrix.cpp:791
virtual bool ZeroBlockPermutation(int &size, BaseVector< int > *permutation) const
Return a permutation for saddle-point problems (zero diagonal entries), where all zero diagonal eleme...
Definition: base_matrix.cpp:315
Definition: base_matrix.hpp:63
virtual ~OCLAcceleratorMatrix()
Definition: base_matrix.cpp:831
Definition: backend_manager.hpp:14
virtual bool Zeros(void)
Set all the values to zero.
Definition: base_matrix.cpp:567
Definition: base_matrix.hpp:57
Definition: base_matrix.hpp:69
Definition: base_matrix.hpp:40
virtual bool ExtractSubMatrix(const int row_offset, const int col_offset, const int row_size, const int col_size, BaseMatrix< ValueType > *mat) const
Extrat a sub-matrix with row/col_offset and row/col_size.
Definition: base_matrix.cpp:225
virtual bool ReplaceColumnVector(const int idx, const BaseVector< ValueType > &vec)
Replace a column vector of a matrix.
Definition: base_matrix.cpp:747
virtual void AllocateCSR(const int nnz, const int nrow, const int ncol)
Allocate CSR Matrix.
Definition: base_matrix.cpp:115
virtual ~BaseMatrix()
Definition: base_matrix.cpp:24
virtual void set_backend(const Paralution_Backend_Descriptor local_backend)
Copy the backend descriptor information.
Definition: base_matrix.cpp:53
virtual void AllocateDENSE(const int nrow, const int ncol)
Allocate DENSE Matrix.
Definition: base_matrix.cpp:171
virtual bool AddScalar(const ValueType alpha)
Add alpha to all values.
Definition: base_matrix.cpp:363
Definition: base_matrix.hpp:46
Definition: base_vector.hpp:19
virtual void CopyToCSR(int *row_offsets, int *col, ValueType *val) const
Copy to CSR array (the arrays have to be allocated)
Definition: base_matrix.cpp:82
int nrow_
Number of rows.
Definition: base_matrix.hpp:419
Paralution_Backend_Descriptor local_backend_
Backend descriptor (local copy)
Definition: base_matrix.hpp:426
Definition: base_matrix.hpp:53
Base class for all host/accelerator vectors.
Definition: base_vector.hpp:26
virtual void LLAnalyseClear(void)
Delete the analysed data (see LLAnalyse)
Definition: base_matrix.cpp:411
virtual bool MatrixAdd(const BaseMatrix< ValueType > &mat, const ValueType alpha, const ValueType beta, const bool structure)
Perform matrix addition, this = alpha*this + beta*mat; if structure==false the structure of the matri...
Definition: base_matrix.cpp:335
Definition: base_matrix.hpp:48
virtual bool FSAI(const int power, const BaseMatrix< ValueType > *pattern)
Factorized Sparse Approximate Inverse assembly for given system matrix power pattern or external spar...
Definition: base_matrix.cpp:537
virtual void CopyFromAsync(const BaseMatrix< ValueType > &mat)
Async copy from another matrix.
Definition: base_matrix.cpp:706
virtual void LeaveDataPtrCSR(int **row_offset, int **col, ValueType **val)
Leave a CSR matrix to Host pointers.
Definition: base_matrix.cpp:622
virtual void CopyFromCOO(const int *row, const int *col, const ValueType *val)
Copy from COO array (the matrix has to be allocated)
Definition: base_matrix.cpp:93
Definition: base_matrix.hpp:84
virtual bool ExtractColumnVector(const int idx, BaseVector< ValueType > *vec) const
Extract values from a column of a matrix to a vector.
Definition: base_matrix.cpp:752
virtual bool Check(void) const
Definition: base_matrix.cpp:60
virtual bool WriteFileCSR(const std::string filename) const
Write matrix to CSR (PARALUTION binary format) file.
Definition: base_matrix.cpp:210
virtual void LLAnalyse(void)
Analyse the structure (level-scheduling)
Definition: base_matrix.cpp:400
int nnz_
Number of non-zero elements.
Definition: base_matrix.hpp:423
virtual void CopyFromHostAsync(const HostMatrix< ValueType > &src)
Async copy (accelerator matrix) from host matrix.
Definition: base_matrix.cpp:796
MICAcceleratorMatrix()
Definition: base_matrix.cpp:836
virtual void SetDataPtrDIA(int **offset, ValueType **val, const int nnz, const int nrow, const int ncol, const int num_diag)
Initialize a DIA matrix on the Host with externally allocated data.
Definition: base_matrix.cpp:678
Definition: base_matrix.hpp:38
virtual bool Gershgorin(ValueType &lambda_min, ValueType &lambda_max) const
Compute the spectrum approximation with Gershgorin circles theorem.
Definition: base_matrix.cpp:341
Definition: base_matrix.hpp:18
virtual bool LUFactorize(void)
Perform LU factorization.
Definition: base_matrix.cpp:512
virtual bool LUSolve(const BaseVector< ValueType > &in, BaseVector< ValueType > *out) const
Solve LU out = in; if level-scheduling algorithm is provided then the graph traversing is performed i...
Definition: base_matrix.cpp:254
virtual bool Permute(const BaseVector< int > &permutation)
Perform (forward) permutation of the matrix.
Definition: base_matrix.cpp:285
BaseMatrix()
Definition: base_matrix.cpp:12
Definition: base_matrix.hpp:36
virtual void LeaveDataPtrELL(int **col, ValueType **val, int &max_row)
Leave an ELL matrix to Host pointers.
Definition: base_matrix.cpp:667