|
| | 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 |