|
| MPIDistMat () |
| no memory allocation More...
|
|
| MPIDistMat (const LocalMatrix &m, const Collective &c, enum dist_type dist=row_dist) |
| Constructor. More...
|
|
template<class OtherMatrix , class OtherCollective > |
| MPIDistMat (const MPIDistMat< OtherMatrix, OtherCollective > &src) |
| Copy Constructor. More...
|
|
const LocalMatrix & | matrix () const |
| Access to the local matrix. More...
|
|
const Collective & | collective () const |
| Access to the communication object. More...
|
|
enum dist_type | get_dist () const |
|
void | set_dist (enum dist_type dist) |
|
template<class ContainerType1 , class ContainerType2 > |
void | symv (value_type alpha, const ContainerType1 &x, value_type beta, ContainerType2 &y) const |
|
template<class ContainerType1 , class ContainerType2 > |
void | symv (const ContainerType1 &x, ContainerType2 &y) const |
|
template<class Functor , class ContainerType1 , class ContainerType2 > |
void | stencil (const Functor f, const ContainerType1 &x, ContainerType2 &y) const |
|
template<class LocalMatrix, class Collective>
struct dg::MPIDistMat< LocalMatrix, Collective >
Distributed memory matrix class.
The idea of this mpi matrix is to separate communication and computation in order to reuse existing optimized matrix formats for the computation. It can be expected that this works particularly well for cases in which the communication to computation ratio is low. In this class the matrix elements can be distributed rowwise or columnwise among mpi processes.
- Template Parameters
-
LocalMatrix | The class of the matrix for local computations. symv needs to be callable on the container class of the MPI_Vector |
Collective | models aCommunicator The Communication class needs to scatter and gather values across processes. Gather all points (including the ones that the process already has) necessary for the local matrix-vector product into one vector, such that the local matrix can be applied. If !isCommunicating () the global_gather and global_scatter_reduce functions won't be called and only the local matrix is applied. |