Block-row distributed compressed sparse row storage. More...
#include <CSRMatrixMPI.hpp>


| Public Member Functions | |
| CSRMatrixMPI (integer_t local_rows, const integer_t *row_ptr, const integer_t *col_ind, const scalar_t *values, const integer_t *dist, MPIComm comm, bool symm_sparse) | |
| CSRMatrixMPI (integer_t rows, integer_t local_rows, integer_t local_nnz, const integer_t *dist, MPIComm comm, bool symm_sparse) | |
| CSRMatrixMPI (integer_t lrows, const integer_t *d_ptr, const integer_t *d_ind, const scalar_t *d_val, const integer_t *o_ptr, const integer_t *o_ind, const scalar_t *o_val, const integer_t *garray, MPIComm comm, bool symm_sparse=false) | |
| CSRMatrixMPI (const CSRMatrix< scalar_t, integer_t > *A, MPIComm c, bool only_at_root) | |
| integer_t | local_nnz () const | 
| integer_t | local_rows () const | 
| integer_t | begin_row () const | 
| integer_t | end_row () const | 
| const MPIComm & | Comm () const | 
| MPI_Comm | comm () const | 
| const std::vector< integer_t > & | dist () const | 
| const integer_t & | dist (std::size_t p) const | 
| real_t | norm1 () const override | 
| void | spmv (const DenseM_t &x, DenseM_t &y) const override | 
| void | spmv (const scalar_t *x, scalar_t *y) const override | 
| void | permute (const integer_t *iorder, const integer_t *order) override | 
| std::unique_ptr< CSRMatrix< scalar_t, integer_t > > | gather () const | 
| std::unique_ptr< CSRGraph< integer_t > > | gather_graph () const | 
| Match_t | matching (MatchingJob job, bool apply=true) override | 
| Equil_t | equilibration () const override | 
| void | equilibrate (const Equil_t &) override | 
| void | permute_columns (const std::vector< integer_t > &perm) override | 
| void | symmetrize_sparsity () override | 
| int | read_matrix_market (const std::string &filename) override | 
| real_t | max_scaled_residual (const DenseM_t &x, const DenseM_t &b) const override | 
| real_t | max_scaled_residual (const scalar_t *x, const scalar_t *b) const override | 
| std::unique_ptr< CSRMatrixMPI< scalar_t, integer_t > > | add_missing_diagonal (const scalar_t &s) const | 
| CSRGraph< integer_t > | get_sub_graph (const std::vector< integer_t > &perm, const std::vector< std::pair< integer_t, integer_t >> &graph_ranges) const | 
| CSRGraph< integer_t > | extract_graph (int ordering_level, integer_t lo, integer_t hi) const override | 
| void | print () const override | 
| void | print_dense (const std::string &name) const override | 
| void | print_matrix_market (const std::string &filename) const override | 
| void | check () const | 
|  Public Member Functions inherited from strumpack::CompressedSparseMatrix< scalar_t, integer_t > | |
| virtual | ~CompressedSparseMatrix () | 
| integer_t | size () const | 
| integer_t | nnz () const | 
| const integer_t * | ptr () const | 
| const integer_t * | ind () const | 
| const scalar_t * | val () const | 
| integer_t * | ptr () | 
| integer_t * | ind () | 
| scalar_t * | val () | 
| const integer_t & | ptr (integer_t i) const | 
| const integer_t & | ind (integer_t i) const | 
| const scalar_t & | val (integer_t i) const | 
| integer_t & | ptr (integer_t i) | 
| integer_t & | ind (integer_t i) | 
| scalar_t & | val (integer_t i) | 
| bool | symm_sparse () const | 
| void | set_symm_sparse (bool symm_sparse=true) | 
| virtual void | permute (const std::vector< integer_t > &iorder, const std::vector< integer_t > &order) | 
| virtual void | apply_matching (const Match_t &) | 
Block-row distributed compressed sparse row storage.
TODO: cleanup this class
| scalar_t | ... | 
| integer_t | TODO set a default for this? | 
| 
 | overridevirtual | 
This gathers the matrix to 1 process, then applies MC64 sequentially. lDr and gDc are only set when job == MatchingJob::MAX_DIAGONAL_PRODUCT_SCALING.
| job | The job type. | 
| perm | Output, column permutation vector containing the GLOBAL column permutation, such that the column perm[j] of the original matrix is column j in the permuted matrix. | 
| lDr | Row scaling factors, this is local, ie, Dr.size() == this->local_rows(). | 
| gDc | Col scaling factors, this is global, ie, Dc.size() == this->size() | 
Reimplemented from strumpack::CompressedSparseMatrix< scalar_t, integer_t >.
| 
 | overridevirtual | 
TODO Obtain reordering Anew = A(iorder,iorder). In addition, entries of IND, VAL are sorted in increasing order
Reimplemented from strumpack::CompressedSparseMatrix< scalar_t, integer_t >.
| 
 | overridevirtual | 
Sparse matrix times dense vector/matrix product y = this * x x and y can have multiple columns. y should be pre-allocated!
TODO make the public interface non-virtual
| x | input right hand-side vector/matrix, should satisfy x.size() == this->size() | 
| y | output, result of y = this * x, should satisfy y.size() == this->size() | 
Implements strumpack::CompressedSparseMatrix< scalar_t, integer_t >.
| 
 | overridevirtual | 
Sparse matrix times dense vector product y = this * x x and y can have multiple columns. y should be pre-allocated.
TODO make the public interface non-virtual
| x | input right hand-side vector/matrix, should be a pointer to an array of size size() | 
| y | output, result of y = this * x, should be a pointer to an array of size size(), already allocated | 
Implements strumpack::CompressedSparseMatrix< scalar_t, integer_t >.