strumpack::DistributedMatrixWrapper< scalar_t > Class Template Reference

#include <DistributedMatrix.hpp>

Inheritance diagram for strumpack::DistributedMatrixWrapper< scalar_t >:
Collaboration diagram for strumpack::DistributedMatrixWrapper< scalar_t >:

Public Member Functions

 DistributedMatrixWrapper (DistributedMatrix< scalar_t > &A)
 
 DistributedMatrixWrapper (const DistributedMatrixWrapper< scalar_t > &A)
 
 DistributedMatrixWrapper (DistributedMatrixWrapper< scalar_t > &&A)
 
 DistributedMatrixWrapper (std::size_t m, std::size_t n, DistributedMatrix< scalar_t > &A, std::size_t i, std::size_t j)
 
 DistributedMatrixWrapper (const BLACSGrid *g, std::size_t m, std::size_t n, scalar_t *A)
 
 DistributedMatrixWrapper (const BLACSGrid *g, std::size_t m, std::size_t n, int MB, int NB, scalar_t *A)
 
 DistributedMatrixWrapper (const BLACSGrid *g, std::size_t m, std::size_t n, DenseMatrix< scalar_t > &A)
 
DistributedMatrixWrapper< scalar_t > & operator= (const DistributedMatrixWrapper< scalar_t > &A)
 
DistributedMatrixWrapper< scalar_t > & operator= (DistributedMatrixWrapper< scalar_t > &&A)
 
int rows () const override
 
int cols () const override
 
int I () const override
 
int J () const override
 
void lranges (int &rlo, int &rhi, int &clo, int &chi) const override
 
void resize (std::size_t m, std::size_t n) override
 
void hconcat (const DistributedMatrix< scalar_t > &b) override
 
void clear ()
 
std::size_t memory () const override
 
std::size_t total_memory () const override
 
std::size_t nonzeros () const override
 
std::size_t total_nonzeros () const override
 
DenseMatrix< scalar_t > dense_and_clear ()=delete
 
DenseMatrixWrapper< scalar_t > dense_wrapper ()=delete
 
DistributedMatrixWrapper< scalar_t > & operator= (const DistributedMatrix< scalar_t > &)=delete
 
DistributedMatrixWrapper< scalar_t > & operator= (DistributedMatrix< scalar_t > &&)=delete
 
- Public Member Functions inherited from strumpack::DistributedMatrix< scalar_t >
 DistributedMatrix ()
 
 DistributedMatrix (const BLACSGrid *g, int M, int N)
 
 DistributedMatrix (const BLACSGrid *g, int M, int N, const std::function< scalar_t(std::size_t, std::size_t)> &A)
 
 DistributedMatrix (const BLACSGrid *g, const DenseMatrix< scalar_t > &m)
 
 DistributedMatrix (const BLACSGrid *g, DenseMatrix< scalar_t > &&m)
 
 DistributedMatrix (const BLACSGrid *g, DenseMatrixWrapper< scalar_t > &&m)
 
 DistributedMatrix (const BLACSGrid *g, int M, int N, const DistributedMatrix< scalar_t > &m, int context_all)
 
 DistributedMatrix (const BLACSGrid *g, int M, int N, int MB, int NB)
 
 DistributedMatrix (const DistributedMatrix< scalar_t > &m)
 
 DistributedMatrix (DistributedMatrix< scalar_t > &&m)
 
virtual ~DistributedMatrix ()
 
DistributedMatrix< scalar_t > & operator= (const DistributedMatrix< scalar_t > &m)
 
DistributedMatrix< scalar_t > & operator= (DistributedMatrix< scalar_t > &&m)
 
const int * desc () const
 
bool active () const
 
const BLACSGridgrid () const
 
const MPICommComm () const
 
MPI_Comm comm () const
 
int ctxt () const
 
int ctxt_all () const
 
virtual int rows () const
 
virtual int cols () const
 
int lrows () const
 
int lcols () const
 
int ld () const
 
int MB () const
 
int NB () const
 
int rowblocks () const
 
int colblocks () const
 
virtual int I () const
 
virtual int J () const
 
virtual void lranges (int &rlo, int &rhi, int &clo, int &chi) const
 
const scalar_t * data () const
 
scalar_t * data ()
 
const scalar_t & operator() (int r, int c) const
 
scalar_t & operator() (int r, int c)
 
int prow () const
 
int pcol () const
 
int nprows () const
 
int npcols () const
 
int npactives () const
 
bool is_master () const
 
int rowl2g (int row) const
 
int coll2g (int col) const
 
int rowg2l (int row) const
 
int colg2l (int col) const
 
int rowg2p (int row) const
 
int colg2p (int col) const
 
int rank (int r, int c) const
 
bool is_local (int r, int c) const
 
const scalar_t & global (int r, int c) const
 
scalar_t & global (int r, int c)
 
void global (int r, int c, scalar_t v)
 
scalar_t all_global (int r, int c) const
 
void print () const
 
void print (std::string name, int precision=15) const
 
void print_to_file (std::string name, std::string filename, int width=8) const
 
void print_to_files (std::string name, int precision=16) const
 
void random ()
 
void random (random::RandomGeneratorBase< typename RealType< scalar_t >::value_type > &rgen)
 
void zero ()
 
void fill (scalar_t a)
 
void fill (const std::function< scalar_t(std::size_t, std::size_t)> &A)
 
void eye ()
 
void shift (scalar_t sigma)
 
scalar_t trace () const
 
void clear ()
 
virtual void resize (std::size_t m, std::size_t n)
 
virtual void hconcat (const DistributedMatrix< scalar_t > &b)
 
DistributedMatrix< scalar_t > transpose () const
 
void mult (Trans op, const DistributedMatrix< scalar_t > &X, DistributedMatrix< scalar_t > &Y) const
 
void laswp (const std::vector< int > &P, bool fwd)
 
DistributedMatrix< scalar_t > extract_rows (const std::vector< std::size_t > &Ir) const
 
DistributedMatrix< scalar_t > extract_cols (const std::vector< std::size_t > &Ic) const
 
DistributedMatrix< scalar_t > extract (const std::vector< std::size_t > &I, const std::vector< std::size_t > &J) const
 
DistributedMatrix< scalar_t > & add (const DistributedMatrix< scalar_t > &B)
 
DistributedMatrix< scalar_t > & scaled_add (scalar_t alpha, const DistributedMatrix< scalar_t > &B)
 
DistributedMatrix< scalar_t > & scale_and_add (scalar_t alpha, const DistributedMatrix< scalar_t > &B)
 
real_t norm () const
 
real_t normF () const
 
real_t norm1 () const
 
real_t normI () const
 
virtual std::size_t memory () const
 
virtual std::size_t total_memory () const
 
virtual std::size_t nonzeros () const
 
virtual std::size_t total_nonzeros () const
 
void scatter (const DenseMatrix< scalar_t > &a)
 
DenseMatrix< scalar_t > gather () const
 
DenseMatrix< scalar_t > all_gather () const
 
DenseMatrix< scalar_t > dense_and_clear ()
 
DenseMatrix< scalar_t > dense () const
 
DenseMatrixWrapper< scalar_t > dense_wrapper ()
 
std::vector< int > LU ()
 
int LU (std::vector< int > &)
 
DistributedMatrix< scalar_t > solve (const DistributedMatrix< scalar_t > &b, const std::vector< int > &piv) const
 
void LQ (DistributedMatrix< scalar_t > &L, DistributedMatrix< scalar_t > &Q) const
 
void orthogonalize (scalar_t &r_max, scalar_t &r_min)
 
void ID_column (DistributedMatrix< scalar_t > &X, std::vector< int > &piv, std::vector< std::size_t > &ind, real_t rel_tol, real_t abs_tol, int max_rank)
 
void ID_row (DistributedMatrix< scalar_t > &X, std::vector< int > &piv, std::vector< std::size_t > &ind, real_t rel_tol, real_t abs_tol, int max_rank, const BLACSGrid *grid_T)
 

Additional Inherited Members

- Static Public Attributes inherited from strumpack::DistributedMatrix< scalar_t >
static const int default_MB = STRUMPACK_PBLAS_BLOCKSIZE
 
static const int default_NB = STRUMPACK_PBLAS_BLOCKSIZE
 

Detailed Description

template<typename scalar_t>
class strumpack::DistributedMatrixWrapper< scalar_t >

Wrapper class does exactly the same as a regular DistributedMatrix, but it is initialized with existing memory, so it does not allocate, own or delete the memory

Member Function Documentation

◆ cols()

template<typename scalar_t >
int strumpack::DistributedMatrixWrapper< scalar_t >::cols ( ) const
inlineoverridevirtual

Get the number of global rows in the matrix

Returns
Global number of matrix columns

Reimplemented from strumpack::DistributedMatrix< scalar_t >.

◆ hconcat()

template<typename scalar_t >
void strumpack::DistributedMatrixWrapper< scalar_t >::hconcat ( const DistributedMatrix< scalar_t > &  b)
inlineoverridevirtual

◆ I()

template<typename scalar_t >
int strumpack::DistributedMatrixWrapper< scalar_t >::I ( ) const
inlineoverridevirtual

Row index of top left element. This is always 1 for a DistributedMatrix. For a DistributedMatrixWrapper, this can be different from to denote the position in the original matrix.

Returns
Row index of top left element (1-based).

Reimplemented from strumpack::DistributedMatrix< scalar_t >.

◆ J()

template<typename scalar_t >
int strumpack::DistributedMatrixWrapper< scalar_t >::J ( ) const
inlineoverridevirtual

Columns index of top left element. This is always 1 for a DistributedMatrix. For a DistributedMatrixWrapper, this can be different from to denote the position in the original matrix.

Returns
Column index of top left element (1-based).

Reimplemented from strumpack::DistributedMatrix< scalar_t >.

◆ lranges()

template<typename scalar_t >
void strumpack::DistributedMatrixWrapper< scalar_t >::lranges ( int &  rlo,
int &  rhi,
int &  clo,
int &  chi 
) const
overridevirtual

Get the ranges of local rows and columns. For a DistributedMatrix, this will simply be (0, lrows(), 0, lcols()). For a DistributedMatrixWrapper, this returns the local rows/columns of the DistributedMatrix that correspond the the submatrix represented by the wrapper. The values are 0-based

Parameters
rlooutput parameter, first local row
rhioutput parameter, one more than the last local row
clooutput parameter, first local column
chioutput parameter, one more than the last local column

Reimplemented from strumpack::DistributedMatrix< scalar_t >.

◆ memory()

template<typename scalar_t >
std::size_t strumpack::DistributedMatrixWrapper< scalar_t >::memory ( ) const
inlineoverridevirtual

◆ nonzeros()

template<typename scalar_t >
std::size_t strumpack::DistributedMatrixWrapper< scalar_t >::nonzeros ( ) const
inlineoverridevirtual

◆ resize()

template<typename scalar_t >
void strumpack::DistributedMatrixWrapper< scalar_t >::resize ( std::size_t  m,
std::size_t  n 
)
inlineoverridevirtual

◆ rows()

template<typename scalar_t >
int strumpack::DistributedMatrixWrapper< scalar_t >::rows ( ) const
inlineoverridevirtual

Get the number of global rows in the matrix

Returns
Global number of matrix rows

Reimplemented from strumpack::DistributedMatrix< scalar_t >.

◆ total_memory()

template<typename scalar_t >
std::size_t strumpack::DistributedMatrixWrapper< scalar_t >::total_memory ( ) const
inlineoverridevirtual

◆ total_nonzeros()

template<typename scalar_t >
std::size_t strumpack::DistributedMatrixWrapper< scalar_t >::total_nonzeros ( ) const
inlineoverridevirtual

The documentation for this class was generated from the following file: