Distributed memory block low rank matrix. More...
#include <BLRMatrixMPI.hpp>
Public Member Functions | |
BLRMatrixMPI (const ProcessorGrid2D &grid, const vec_t &Rt, const vec_t &Ct) | |
std::size_t | rows () const override |
std::size_t | cols () const override |
std::size_t | memory () const override |
std::size_t | nonzeros () const override |
std::size_t | rank () const override |
std::size_t | total_memory () const |
std::size_t | total_nonzeros () const |
std::size_t | max_rank () const |
const MPIComm & | Comm () const |
const ProcessorGrid2D * | grid () const |
bool | active () const |
void | fill (scalar_t v) |
void | fill_col (scalar_t v, std::size_t k, std::size_t CP) |
std::vector< int > | factor (const Opts_t &opts) |
std::vector< int > | factor (const adm_t &adm, const Opts_t &opts) |
std::vector< int > | factor_col (const adm_t &adm, const Opts_t &opts, const std::function< void(int, bool, std::size_t)> &blockcol) |
void | laswp (const std::vector< int > &piv, bool fwd) |
void | compress (const Opts_t &opts) |
DistM_t | to_ScaLAPACK (const BLACSGrid *g) const |
void | to_ScaLAPACK (DistM_t &A) const |
void | print (const std::string &name) |
std::size_t | rowblocks () const |
std::size_t | colblocks () const |
std::size_t | rowblockslocal () const |
std::size_t | colblockslocal () const |
std::size_t | tilerows (std::size_t i) const |
std::size_t | tilecols (std::size_t j) const |
std::size_t | tileroff (std::size_t i) const |
std::size_t | tilecoff (std::size_t j) const |
int | rg2p (std::size_t i) const |
int | cg2p (std::size_t j) const |
std::size_t | rl2g (std::size_t i) const |
std::size_t | cl2g (std::size_t j) const |
std::size_t | rg2t (std::size_t i) const |
std::size_t | cg2t (std::size_t j) const |
std::size_t | lrows () const |
std::size_t | lcols () const |
scalar_t | operator() (std::size_t i, std::size_t j) const |
scalar_t & | operator() (std::size_t i, std::size_t j) |
scalar_t | get_element_and_decompress_HODBF (int tr, int tc, int lr, int lc) |
void | decompress_local_columns (int c_min, int c_max) |
void | remove_tiles_before_local_column (int c_min, int c_max) |
const scalar_t & | global (std::size_t i, std::size_t j) const |
scalar_t & | global (std::size_t i, std::size_t j) |
Public Member Functions inherited from strumpack::structured::StructuredMatrix< scalar_t > | |
virtual | ~StructuredMatrix ()=default |
virtual std::size_t | local_rows () const |
virtual std::size_t | begin_row () const |
virtual std::size_t | end_row () const |
virtual const std::vector< int > & | dist () const |
virtual const std::vector< int > & | rdist () const |
virtual const std::vector< int > & | cdist () const |
virtual void | mult (Trans op, const DenseMatrix< scalar_t > &x, DenseMatrix< scalar_t > &y) const |
void | mult (Trans op, int m, const scalar_t *x, int ldx, scalar_t *y, int ldy) const |
virtual void | mult (Trans op, const DistributedMatrix< scalar_t > &x, DistributedMatrix< scalar_t > &y) const |
virtual void | factor () |
virtual void | solve (DenseMatrix< scalar_t > &b) const |
virtual void | solve (int nrhs, scalar_t *b, int ldb) const |
virtual void | solve (DistributedMatrix< scalar_t > &b) const |
virtual void | shift (scalar_t s) |
Static Public Member Functions | |
static std::vector< int > | partial_factor (BLRMPI_t &A11, BLRMPI_t &A12, BLRMPI_t &A21, BLRMPI_t &A22, const adm_t &adm, const Opts_t &opts) |
static std::vector< int > | partial_factor_col (BLRMPI_t &F11, BLRMPI_t &F12, BLRMPI_t &F21, BLRMPI_t &F22, const adm_t &adm, const Opts_t &opts, const std::function< void(int, bool, std::size_t)> &blockcol) |
static BLRMPI_t | from_ScaLAPACK (const DistM_t &A, const ProcessorGrid2D &g, const Opts_t &opts) |
static BLRMPI_t | from_ScaLAPACK (const DistM_t &A, const ProcessorGrid2D &g, const vec_t &Rt, const vec_t &Ct) |
Friends | |
template<typename T , typename I > | |
class | strumpack::ExtendAdd |
template<typename T , typename I > | |
class | BLRExtendAdd |
template<typename T > | |
void | trsv (UpLo ul, Trans ta, Diag d, const BLRMatrixMPI< T > &a, BLRMatrixMPI< T > &b) |
template<typename T > | |
void | gemv (Trans ta, T alpha, const BLRMatrixMPI< T > &a, const BLRMatrixMPI< T > &x, T beta, BLRMatrixMPI< T > &y) |
template<typename T > | |
void | trsm (Side s, UpLo ul, Trans ta, Diag d, T alpha, const BLRMatrixMPI< T > &a, BLRMatrixMPI< T > &b) |
template<typename T > | |
void | gemm (Trans ta, Trans tb, T alpha, const BLRMatrixMPI< T > &a, const BLRMatrixMPI< T > &b, T beta, BLRMatrixMPI< T > &c) |
Distributed memory block low rank matrix.
This is for non-symmetric matrices, but can be used with symmetric matrices as well. This class inherits from StructuredMatrix.
scalar_t | Can be float, double, std:complex<float> or std::complex<double>. |
|
inlineoverridevirtual |
Get number of columns in this matrix
Implements strumpack::structured::StructuredMatrix< scalar_t >.
const scalar_t& strumpack::BLR::BLRMatrixMPI< scalar_t >::global | ( | std::size_t | i, |
std::size_t | j | ||
) | const |
Same as operator()(std::size_t i, std::size_t j), but with global indexing. This assumes the global element is stored locally, otherwise behaviour is undefined.
|
overridevirtual |
Return the total amount of memory used by this matrix, in bytes.
Implements strumpack::structured::StructuredMatrix< scalar_t >.
|
overridevirtual |
Return the total number of nonzeros stored by this matrix.
Implements strumpack::structured::StructuredMatrix< scalar_t >.
scalar_t strumpack::BLR::BLRMatrixMPI< scalar_t >::operator() | ( | std::size_t | i, |
std::size_t | j | ||
) | const |
Direct access to element with local indexing, only for dense tiles, for instance before the factorization/compression.
|
overridevirtual |
Return the maximum rank of this matrix over all low-rank compressed blocks.
Implements strumpack::structured::StructuredMatrix< scalar_t >.
|
inlineoverridevirtual |
Get number of rows in this matrix
Implements strumpack::structured::StructuredMatrix< scalar_t >.