Interface for direction MPI datatype based communication using blockforest::UniformDirectScheme.
For direct bufferless MPI communication the MPI data type concept has to be used. With this interface a MPI data type can be associated with block data, such that this block data can be communicated using e.g. the blockforest::communication::UniformDirectScheme. In addition to providing the MPI data types for sending and receiving in each direction, a pointer to the data has to be provided.
#include <UniformMPIDatatypeInfo.h>
Public Member Functions | |
Construction & Destruction | |
UniformMPIDatatypeInfo ()=default | |
virtual | ~UniformMPIDatatypeInfo ()=default |
virtual shared_ptr< mpi::Datatype > | getSendDatatype (IBlock *block, const stencil::Direction dir)=0 |
Return the MPI data type that should be used for sending to neighbor in specified direction. More... | |
virtual shared_ptr< mpi::Datatype > | getRecvDatatype (IBlock *block, const stencil::Direction dir)=0 |
Return the MPI data type that should be used for receiving from neighbor in specified direction. More... | |
virtual void * | getSendPointer (IBlock *block, const stencil::Direction dir)=0 |
Return pointer to data that should be send to neighbor in specified direction. More... | |
virtual void * | getRecvPointer (IBlock *block, const stencil::Direction dir)=0 |
Return pointer to memory where received data is written to. More... | |
virtual int | getNumberOfItemsToCommunicate (IBlock *, const stencil::Direction) |
Return how many data items of the datatype should be communicated per block and direction Due to custom aggregated MPI datatypes this is usually 1. More... | |
|
default |
|
virtualdefault |
|
inlinevirtual |
Return how many data items of the datatype should be communicated per block and direction Due to custom aggregated MPI datatypes this is usually 1.
|
pure virtual |
Return the MPI data type that should be used for receiving from neighbor in specified direction.
Implemented in walberla::field::communication::StencilRestrictedMPIDatatypeInfo< GhostLayerField_T, Stencil_T >, and walberla::field::communication::UniformMPIDatatypeInfo< GhostLayerField_T >.
|
pure virtual |
Return pointer to memory where received data is written to.
Implemented in walberla::field::communication::StencilRestrictedMPIDatatypeInfo< GhostLayerField_T, Stencil_T >, and walberla::field::communication::UniformMPIDatatypeInfo< GhostLayerField_T >.
|
pure virtual |
Return the MPI data type that should be used for sending to neighbor in specified direction.
Implemented in walberla::field::communication::StencilRestrictedMPIDatatypeInfo< GhostLayerField_T, Stencil_T >, and walberla::field::communication::UniformMPIDatatypeInfo< GhostLayerField_T >.
|
pure virtual |
Return pointer to data that should be send to neighbor in specified direction.
Implemented in walberla::field::communication::StencilRestrictedMPIDatatypeInfo< GhostLayerField_T, Stencil_T >, and walberla::field::communication::UniformMPIDatatypeInfo< GhostLayerField_T >.