DistributedMatrix.hpp File Reference

Contains the DistributedMatrix and DistributedMatrixWrapper classes, wrappers around ScaLAPACK/PBLAS style 2d block cyclic matrices. See also strumpack::BLACSGrid for the processor grid (BLACS functionality). More...

#include <vector>
#include <string>
#include <cmath>
#include <functional>
#include "misc/MPIWrapper.hpp"
#include "misc/RandomWrapper.hpp"
#include "DenseMatrix.hpp"
#include "BLACSGrid.hpp"
Include dependency graph for DistributedMatrix.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  strumpack::DistributedMatrix< scalar_t >
 2D block cyclicly distributed matrix, as used by ScaLAPACK. More...
 
class  strumpack::DistributedMatrixWrapper< scalar_t >
 

Namespaces

 strumpack
 

Functions

template<typename scalar_t >
void strumpack::copy (std::size_t m, std::size_t n, const DistributedMatrix< scalar_t > &a, std::size_t ia, std::size_t ja, DenseMatrix< scalar_t > &b, int dest, int context_all)
 
template<typename scalar_t >
void strumpack::copy (std::size_t m, std::size_t n, const DenseMatrix< scalar_t > &a, int src, DistributedMatrix< scalar_t > &b, std::size_t ib, std::size_t jb, int context_all)
 
template<typename scalar_t >
void strumpack::copy (std::size_t m, std::size_t n, const DistributedMatrix< scalar_t > &a, std::size_t ia, std::size_t ja, DistributedMatrix< scalar_t > &b, std::size_t ib, std::size_t jb, int context_all)
 
template<typename scalar_t >
long long int strumpack::LU_flops (const DistributedMatrix< scalar_t > &a)
 
template<typename scalar_t >
long long int strumpack::solve_flops (const DistributedMatrix< scalar_t > &b)
 
template<typename scalar_t >
long long int strumpack::LQ_flops (const DistributedMatrix< scalar_t > &a)
 
template<typename scalar_t >
long long int strumpack::ID_row_flops (const DistributedMatrix< scalar_t > &a, int rank)
 
template<typename scalar_t >
long long int strumpack::trsm_flops (Side s, scalar_t alpha, const DistributedMatrix< scalar_t > &a, const DistributedMatrix< scalar_t > &b)
 
template<typename scalar_t >
long long int strumpack::gemm_flops (Trans ta, Trans tb, scalar_t alpha, const DistributedMatrix< scalar_t > &a, const DistributedMatrix< scalar_t > &b, scalar_t beta)
 
template<typename scalar_t >
long long int strumpack::gemv_flops (Trans ta, const DistributedMatrix< scalar_t > &a, scalar_t alpha, scalar_t beta)
 
template<typename scalar_t >
long long int strumpack::orthogonalize_flops (const DistributedMatrix< scalar_t > &a)
 
template<typename scalar_t >
std::unique_ptr< const DistributedMatrixWrapper< scalar_t > > strumpack::ConstDistributedMatrixWrapperPtr (std::size_t m, std::size_t n, const DistributedMatrix< scalar_t > &D, std::size_t i, std::size_t j)
 
template<typename scalar_t >
void strumpack::gemm (Trans ta, Trans tb, scalar_t alpha, const DistributedMatrix< scalar_t > &A, const DistributedMatrix< scalar_t > &B, scalar_t beta, DistributedMatrix< scalar_t > &C)
 
template<typename scalar_t >
void strumpack::trsm (Side s, UpLo u, Trans ta, Diag d, scalar_t alpha, const DistributedMatrix< scalar_t > &A, DistributedMatrix< scalar_t > &B)
 
template<typename scalar_t >
void strumpack::trsv (UpLo ul, Trans ta, Diag d, const DistributedMatrix< scalar_t > &A, DistributedMatrix< scalar_t > &B)
 
template<typename scalar_t >
void strumpack::gemv (Trans ta, scalar_t alpha, const DistributedMatrix< scalar_t > &A, const DistributedMatrix< scalar_t > &X, scalar_t beta, DistributedMatrix< scalar_t > &Y)
 
template<typename scalar_t >
DistributedMatrix< scalar_t > strumpack::vconcat (int cols, int arows, int brows, const DistributedMatrix< scalar_t > &a, const DistributedMatrix< scalar_t > &b, const BLACSGrid *gnew, int cxt_all)
 
template<typename scalar_t >
void strumpack::subgrid_copy_to_buffers (const DistributedMatrix< scalar_t > &a, const DistributedMatrix< scalar_t > &b, int p0, int npr, int npc, std::vector< std::vector< scalar_t >> &sbuf)
 
template<typename scalar_t >
void strumpack::subproc_copy_to_buffers (const DenseMatrix< scalar_t > &a, const DistributedMatrix< scalar_t > &b, int p0, int npr, int npc, std::vector< std::vector< scalar_t >> &sbuf)
 
template<typename scalar_t >
void strumpack::subgrid_add_from_buffers (const BLACSGrid *subg, int master, DistributedMatrix< scalar_t > &b, std::vector< scalar_t * > &pbuf)
 

Detailed Description

Contains the DistributedMatrix and DistributedMatrixWrapper classes, wrappers around ScaLAPACK/PBLAS style 2d block cyclic matrices. See also strumpack::BLACSGrid for the processor grid (BLACS functionality).