|
| MPISparseBlockMat ()=default |
|
| MPISparseBlockMat (const LocalMatrixInner &inside, const LocalMatrixOuter &outside, const MPIKroneckerGather< Vector > &mpi_gather) |
|
template<template< class > class V, class LI , class LO > |
| MPISparseBlockMat (const MPISparseBlockMat< V, LI, LO > &src) |
|
const LocalMatrixInner & | inner_matrix () const |
| Read access to the inner matrix.
|
|
const LocalMatrixOuter & | outer_matrix () const |
| Read access to the outer matrix.
|
|
LocalMatrixInner & | inner_matrix () |
| Write access to the inner matrix.
|
|
LocalMatrixOuter & | outer_matrix () |
| Write access to the outer matrix.
|
|
MPI_Comm | communicator () const |
|
template<class ContainerType1 , class ContainerType2 > |
void | symv (dg::get_value_type< ContainerType1 > alpha, const ContainerType1 &x, dg::get_value_type< ContainerType1 > beta, ContainerType2 &y) const |
| Matrix Vector product.
|
|
template<class ContainerType1 , class ContainerType2 > |
void | symv (const ContainerType1 &x, ContainerType2 &y) const |
|
template<template< class > class Vector, class LocalMatrixInner, class LocalMatrixOuter = LocalMatrixInner>
struct dg::MPISparseBlockMat< Vector, LocalMatrixInner, LocalMatrixOuter >
Distributed memory Sparse block matrix class, asynchronous communication.
This is a specialisation of MPIDiatMat
for our dg::EllSparseBlockMat
See Separation of communication and computation
- Template Parameters
-
LocalMatrixInner | The class of the matrix for local computations of the inner points. symv(m,x,y) needs to be callable on the container class of the MPI_Vector |
LocalMatrixOuter | The class of the matrix for local computations of the outer points. symv(1,m,x,1,y) needs to be callable on the container class of the MPI_Vector |
Vector | The storage class for internal buffers must match the execution policy of the containers in the symv functions |
- Note
- This class overlaps communication with computation of the inner matrix
template<template< class > class Vector, class LocalMatrixInner , class LocalMatrixOuter = LocalMatrixInner>
template<class ContainerType1 , class ContainerType2 >
Matrix Vector product.
First the inner elements are computed with a call to symv then the global_gather function of the communication object is called. Finally the outer elements are added with a call to symv for the outer matrix
- Template Parameters
-
ContainerType | container class of the vector elements |
- Parameters
-
alpha | scalar |
x | input |
beta | scalar |
y | output |