#include <BufferSystemHelper.h>
Public Member Functions | |
KnownSizeCommunication (const MPI_Comm &communicator, int tag=0) | |
~KnownSizeCommunication () override=default | |
void | send (MPIRank receiver, const SendBuffer_T &sendBuffer) override |
Send buffer content to receiver using MPI_ISend, request is stored internally -> see waitForSends() More... | |
void | waitForSends () override |
Wait for all sends to complete. More... | |
void | scheduleReceives (std::map< MPIRank, ReceiveInfo > &recvInfos) override |
Executes MPI_Irecv calls, with the recvInfos as target memory. More... | |
MPIRank | waitForNextReceive (std::map< MPIRank, ReceiveInfo > &recvInfos) override |
size field of recvInfos is expected to be valid More... | |
Public Member Functions inherited from walberla::mpi::internal::AbstractCommunication< RecvBuffer_T, SendBuffer_T > | |
AbstractCommunication (const MPI_Comm &communicator, int tag=0) | |
virtual | ~AbstractCommunication ()=default |
virtual int | getTag () const |
virtual MPI_Comm | getCommunicator () const |
Private Attributes | |
bool | sending_ {false} |
bool | receiving_ {false} |
std::vector< MPI_Request > | sendRequests_ |
std::vector< MPI_Request > | recvRequests_ |
Additional Inherited Members | |
Protected Attributes inherited from walberla::mpi::internal::AbstractCommunication< RecvBuffer_T, SendBuffer_T > | |
MPI_Comm | communicator_ |
int | tag_ |
|
inline |
|
overridedefault |
|
overridevirtual |
Executes MPI_Irecv calls, with the recvInfos as target memory.
recvInfos | Map that has entries for all ranks where messages are expected. The KnownSizeCommunication also expects the size field to be valid ( defining the expected message size) Do not change/read the recvInfos after scheduleReceive() call and before waitForNextReceive() is completed |
Implements walberla::mpi::internal::AbstractCommunication< RecvBuffer_T, SendBuffer_T >.
|
overridevirtual |
Send buffer content to receiver using MPI_ISend, request is stored internally -> see waitForSends()
Implements walberla::mpi::internal::AbstractCommunication< RecvBuffer_T, SendBuffer_T >.
|
overridevirtual |
size field of recvInfos is expected to be valid
Implements walberla::mpi::internal::AbstractCommunication< RecvBuffer_T, SendBuffer_T >.
|
overridevirtual |
Wait for all sends to complete.
Implements walberla::mpi::internal::AbstractCommunication< RecvBuffer_T, SendBuffer_T >.
|
private |
|
private |
|
private |
|
private |