MaMiCo 1.2
|
generic class for send-/ receive methodology. More...
#include <SendReceiveBuffer.h>
Classes | |
struct | BufferCollective |
struct | BufferWithID |
Public Member Functions | |
SendReceiveBuffer () | |
virtual | ~SendReceiveBuffer () |
Protected Member Functions | |
void | deleteBuffers () |
deletes the buffers | |
template<class Container_T> | |
void | writeToSendBuffer (coupling::sendrecv::DataExchange< Cell_T, dim > &dataExchange, const Container_T &cells) |
fills all information that needs to be sent from a coupling cell into the send-buffer. | |
void | writeToBcastBuffer (coupling::sendrecv::DataExchange< Cell_T, dim > &dataExchange, const Cell_T &cell, I01 idx) |
fills all information that needs to be broadcast from a coupling cell into the broadcast-buffer. | |
void | writeToReduceBuffer (coupling::sendrecv::DataExchange< Cell_T, dim > &dataExchange, const Cell_T &cell, I01 idx) |
fills all information that needs to be reduced to a coupling cell into the reduce-buffer. | |
template<class Container_T> | |
void | readFromReceiveBuffer (coupling::sendrecv::DataExchange< Cell_T, dim > &dataExchange, const Container_T &cells) |
void | readFromCollectiveBuffer (coupling::sendrecv::DataExchange< Cell_T, dim > &dataExchange, Cell_T &couplingCell, I01 idx) |
void | readFromReduceBuffer (coupling::sendrecv::DataExchangeFromMD2Macro< dim > &dataExchange, Cell_T &couplingCell, I01 idx) |
void | allocateReceiveBuffers (coupling::sendrecv::DataExchange< Cell_T, dim > &dataExchange, I01 idx) |
void | allocateBcastBufferForReceiving (coupling::sendrecv::DataExchange< Cell_T, dim > &dataExchange, I01 idx) |
void | allocateReduceBufferForReceiving (coupling::sendrecv::DataExchange< Cell_T, dim > &dataExchange, I01 idx) |
void | triggerSending (coupling::sendrecv::DataExchange< Cell_T, dim > &dataExchange) |
void | triggerBcasts (unsigned int rank) |
void | triggerReceiving (coupling::sendrecv::DataExchange< Cell_T, dim > &dataExchange) |
void | triggerReduce (unsigned int rank) |
void | waitAllOperations () |
void | waitAllCollectiveOperations () |
void | allocateRequests () |
void | allocateBcastRequests (unsigned int thisRank) |
void | allocateReduceRequests (unsigned int thisRank) |
Private Member Functions | |
void | deleteBuffer (std::map< unsigned int, BufferWithID > &buffer) |
Static Private Member Functions | |
static void | elementWiseSum (void *in, void *inout, int *len, MPI_Datatype *datatype) |
Private Attributes | |
std::map< unsigned int, BufferWithID > | _receiveBuffer |
std::map< unsigned int, BufferWithID > | _sendBuffer |
std::map< unsigned int, BufferCollective > | _bcastBuffer |
std::map< unsigned int, BufferCollective > | _reduceBuffer |
bool | _requestsAllocated |
MPI_Request * | _requests |
int | _receiveSize |
int | _sendSize |
std::vector< MPI_Comm > | _subComms |
std::vector< MPI_Group > | _subGroups |
int | _bcastOrReduceSize |
MPI_Op | elementWiseSumOperation |
generic class for send-/ receive methodology.
generic class for send-/ receive methodology including buffer implementations. The access to the buffers is prescribed by the DataExchange object.
Cell_T | cell type |
dim | Number of dimensions; it can be 1, 2 or 3 |
coupling::sendrecv::SendReceiveBuffer< Cell_T, dim >::SendReceiveBuffer | ( | ) |
Constructor
|
virtual |
Destructor
|
protected |
Allocates buffer for receiving in the context of the broadcast operation
dataExchange | |
idx |
|
protected |
allocates broadcast request
thisRank |
|
protected |
according to rule by dataExchange, the receive buffers are allocated. This function adds a contribution for the cell at idx.
dataExchange | |
idx |
|
protected |
Allocates buffer for receiving in the context of the reduce operation
dataExchange | |
idx |
|
protected |
allocates reduce request
thisRank |
|
protected |
allocates send and receive requests
|
private |
deletes everything inside a given buffer
buffer |
|
protected |
reads the information from the receive-buffer and fills it into a coupling cell.
dataExchange | |
couplingCell | |
idx |
|
protected |
reads the information from the reduce-buffer and fills it into a coupling cell.
dataExchange | |
couplingCell | |
idx |
|
protected |
triggers the MPI-broadcast on the respective buffers.
rank |
|
protected |
triggers the MPI-receiving on the respective buffers. No receiving of information from/to this rank.
dataExchange |
|
protected |
triggers the MPI-reduce on the respective buffers.
rank |
|
protected |
triggers the MPI-sending on the respective buffers. No sending for information transfer from/ to this rank.
dataExchange |
|
protected |
wait for all broadcast or reduce operations to complete
|
protected |
wait for all send and receive operations to complete.
|
protected |
fills all information that needs to be broadcast from a coupling cell into the broadcast-buffer.
dataExchange | |
cell | |
idx |
|
protected |
fills all information that needs to be reduced to a coupling cell into the reduce-buffer.
dataExchange | |
cell | |
idx |
|
protected |
fills all information that needs to be sent from a coupling cell into the send-buffer.
dataExchange | |
cells |
|
private |
members for collective communication
|
private |
buffer for storing all received messages from MD. Each map entry is identified by a respective rank.
|
private |
flag that will always be reset after every send operation. Triggers instantiation of requests
|
private |
number of receive requests
|
private |
number of send requests