strumpack::BLR::BLRMatrix< scalar_t > Class Template Reference

Class to represent a block low-rank matrix. More...

#include <BLRMatrix.hpp>

Inheritance diagram for strumpack::BLR::BLRMatrix< scalar_t >:
Collaboration diagram for strumpack::BLR::BLRMatrix< scalar_t >:

Public Member Functions

 BLRMatrix (DenseM_t &A, const std::vector< std::size_t > &rowtiles, const std::vector< std::size_t > &coltiles, const Opts_t &opts)
 
 BLRMatrix (DenseM_t &A, const std::vector< std::size_t > &tiles, const adm_t &admissible, const Opts_t &opts)
 
 BLRMatrix (std::size_t m, const std::vector< std::size_t > &rowtiles, std::size_t n, const std::vector< std::size_t > &coltiles)
 
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
 
DenseM_t dense () const
 
void dense (DenseM_t &A) const
 
void draw (std::ostream &of, std::size_t roff, std::size_t coff) const
 
void print (const std::string &name) const
 
void clear ()
 
void solve (DenseM_t &x) const override
 
const std::vector< int > & piv () const
 
void mult (Trans op, const DenseM_t &x, DenseM_t &y) const override
 
std::size_t rg2t (std::size_t i) const
 
std::size_t cg2t (std::size_t j) const
 
scalar_t operator() (std::size_t i, std::size_t j) const
 
scalar_t & operator() (std::size_t i, std::size_t j)
 
DenseM_t extract (const std::vector< std::size_t > &I, const std::vector< std::size_t > &J) const
 
void decompress ()
 
void decompress_local_columns (int c_min, int c_max)
 
void remove_tiles_before_local_column (int c_min, int c_max)
 
std::size_t rowblocks () const
 
std::size_t colblocks () 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
 
BLRTile< scalar_t > & tile (std::size_t i, std::size_t j)
 
const BLRTile< scalar_t > & tile (std::size_t i, std::size_t j) const
 
std::unique_ptr< BLRTile< scalar_t > > & block (std::size_t i, std::size_t j)
 
DenseMW_t tile (DenseM_t &A, std::size_t i, std::size_t j) const
 
DenseTile< scalar_t > & tile_dense (std::size_t i, std::size_t j)
 
const DenseTile< scalar_t > & tile_dense (std::size_t i, std::size_t j) const
 
void compress_tile (std::size_t i, std::size_t j, const Opts_t &opts)
 
void fill (scalar_t v)
 
void fill_col (scalar_t v, std::size_t k, std::size_t CP)
 
- Public Member Functions inherited from strumpack::structured::StructuredMatrix< scalar_t >
virtual ~StructuredMatrix ()=default
 
virtual std::size_t rows () const =0
 
virtual std::size_t cols () const =0
 
virtual std::size_t memory () const =0
 
virtual std::size_t nonzeros () const =0
 
virtual std::size_t rank () const =0
 
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 void construct_and_partial_factor (DenseM_t &A11, DenseM_t &A12, DenseM_t &A21, DenseM_t &A22, BLRMatrix< scalar_t > &B11, BLRMatrix< scalar_t > &B12, BLRMatrix< scalar_t > &B21, const std::vector< std::size_t > &tiles1, const std::vector< std::size_t > &tiles2, const adm_t &admissible, const Opts_t &opts)
 
static void construct_and_partial_factor (BLRMatrix< scalar_t > &B11, BLRMatrix< scalar_t > &B12, BLRMatrix< scalar_t > &B21, BLRMatrix< scalar_t > &B22, const std::vector< std::size_t > &tiles1, const std::vector< std::size_t > &tiles2, const adm_t &admissible, const Opts_t &opts)
 
static void construct_and_partial_factor_col (BLRMatrix< scalar_t > &B11, BLRMatrix< scalar_t > &B12, BLRMatrix< scalar_t > &B21, BLRMatrix< scalar_t > &B22, const std::vector< std::size_t > &tiles1, const std::vector< std::size_t > &tiles2, const adm_t &admissible, const Opts_t &opts, const std::function< void(int, bool, std::size_t)> &blockcol)
 
static void construct_and_partial_factor (std::size_t n1, std::size_t n2, const extract_t< scalar_t > &A11, const extract_t< scalar_t > &A12, const extract_t< scalar_t > &A21, const extract_t< scalar_t > &A22, BLRMatrix< scalar_t > &B11, BLRMatrix< scalar_t > &B12, BLRMatrix< scalar_t > &B21, BLRMatrix< scalar_t > &B22, const std::vector< std::size_t > &tiles1, const std::vector< std::size_t > &tiles2, const adm_t &admissible, const BLROptions< scalar_t > &opts)
 
static void trsmLNU_gemm (const BLRMatrix< scalar_t > &F1, const BLRMatrix< scalar_t > &F2, DenseM_t &B1, DenseM_t &B2, int task_depth)
 
static void gemm_trsmUNN (const BLRMatrix< scalar_t > &F1, const BLRMatrix< scalar_t > &F2, DenseM_t &B1, DenseM_t &B2, int task_depth)
 

Friends

template<typename T , typename I >
class BLRExtendAdd
 
template<typename T >
void draw (const BLRMatrix< T > &H, const std::string &name)
 

Detailed Description

template<typename scalar_t>
class strumpack::BLR::BLRMatrix< scalar_t >

Class to represent a block low-rank matrix.

This is for non-symmetric matrices, but can be used with symmetric matrices as well. This class inherits from StructuredMatrix.

Template Parameters
scalar_tCan be float, double, std:complex<float> or std::complex<double>.
See also
structured::StructuredMatrix, BLRMatrixMPI

Member Function Documentation

◆ cols()

template<typename scalar_t >
std::size_t strumpack::BLR::BLRMatrix< scalar_t >::cols ( ) const
inlineoverridevirtual

Get number of columns in this matrix

Implements strumpack::structured::StructuredMatrix< scalar_t >.

◆ memory()

template<typename scalar_t >
std::size_t strumpack::BLR::BLRMatrix< scalar_t >::memory ( ) const
overridevirtual

Return the total amount of memory used by this matrix, in bytes.

Returns
Memory usage in bytes.
See also
nonzeros

Implements strumpack::structured::StructuredMatrix< scalar_t >.

◆ mult()

template<typename scalar_t >
void strumpack::BLR::BLRMatrix< scalar_t >::mult ( Trans  op,
const DenseM_t x,
DenseM_t y 
) const
overridevirtual

Multiply this BLR matrix with a dense matrix (vector), ie, compute y = op(this) * x. Overrides from the StructuredMatrix class method.

Parameters
opTranspose or complex conjugate
xright hand side matrix to multiply with, from the left, rows(x) == cols(op(this))
yresult of op(this) * b, cols(y) == cols(x), rows(r) = rows(op(this))

Reimplemented from strumpack::structured::StructuredMatrix< scalar_t >.

◆ nonzeros()

template<typename scalar_t >
std::size_t strumpack::BLR::BLRMatrix< scalar_t >::nonzeros ( ) const
overridevirtual

Return the total number of nonzeros stored by this matrix.

Returns
Nonzeros in the matrix representation.
See also
memory

Implements strumpack::structured::StructuredMatrix< scalar_t >.

◆ rank()

template<typename scalar_t >
std::size_t strumpack::BLR::BLRMatrix< scalar_t >::rank ( ) const
overridevirtual

Return the maximum rank of this matrix over all low-rank compressed blocks.

Returns
Maximum rank.

Implements strumpack::structured::StructuredMatrix< scalar_t >.

◆ rows()

template<typename scalar_t >
std::size_t strumpack::BLR::BLRMatrix< scalar_t >::rows ( ) const
inlineoverridevirtual

Get number of rows in this matrix

Implements strumpack::structured::StructuredMatrix< scalar_t >.

◆ solve()

template<typename scalar_t >
void strumpack::BLR::BLRMatrix< scalar_t >::solve ( DenseM_t b) const
inlineoverridevirtual

Solve a linear system A*x=b, with this StructuredMatrix (A). This solve is done in-place.

Parameters
bright-hand side, b.rows() == A.cols(), will be overwritten with the solution x.

Reimplemented from strumpack::structured::StructuredMatrix< scalar_t >.


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