opm-grid
Loading...
Searching...
No Matches
Dune::Point2PointCommunicator< MsgBuffer > Class Template Reference

Point-2-Point communicator for exchange messages between processes. More...

#include <p2pcommunicator.hh>

Inheritance diagram for Dune::Point2PointCommunicator< MsgBuffer >:

Classes

class  DataHandleInterface

Public Types

typedef MPIHelper::MPICommunicator MPICommunicator
 type of MPI communicator, either MPI_Comm or NoComm as defined in MPIHelper
typedef MsgBuffer MessageBufferType
 type of message buffer used

Public Member Functions

 Point2PointCommunicator (const MPICommunicator &mpiComm=MPIHelper::getCommunicator())
 constructor taking mpi communicator
 Point2PointCommunicator (const BaseType &comm)
 constructor taking collective communication
void insertRequest (const std::set< int > &sendLinks, const std::set< int > &recvLinks)
 insert communication request with a set os ranks to send to and a set of ranks to receive from
int sendLinks () const
 return number of processes we will send data to
int recvLinks () const
 return number of processes we will receive data from
const vector_t & recvBufferSizes () const
 return vector containing possible recv buffer sizes
int sendLink (const int rank) const
 return send link number for a given send rank number
int recvLink (const int rank) const
 return recv link number for a given recv rank number
const std::vector< int > & sendDest () const
 return vector containing all process numbers we will send to
const std::vector< int > & recvSource () const
 return vector containing all process numbers we will receive from
void removeLinkage ()
 remove stored linkage
virtual std::vector< MessageBufferTypeexchange (const std::vector< MessageBufferType > &) const
 exchange message buffers with peers defined by inserted linkage
virtual void exchange (DataHandleInterface &) const
 exchange data with peers, handle defines pack and unpack of data
virtual void exchangeCached (DataHandleInterface &) const
 exchange data with peers, handle defines pack and unpack of data, if receive buffers are known from previous run and have not changed communication could be faster

Protected Types

using BaseType = Dune::Communication<MPICommunicator>
typedef Point2PointCommunicator< MessageBufferTypeThisType
typedef std::map< int, int > linkage_t
typedef std::vector< int > vector_t

Protected Member Functions

void computeDestinations (const linkage_t &linkage, vector_t &dest)
int getMessageTag (const unsigned int increment) const
int getMessageTag () const

Protected Attributes

linkage_t sendLinkage_
linkage_t recvLinkage_
vector_t sendDest_
vector_t recvSource_
vector_t _recvBufferSizes
bool _recvBufferSizesComputed

Static Protected Attributes

static const int messagetag = 234

Detailed Description

template<class MsgBuffer>
class Dune::Point2PointCommunicator< MsgBuffer >

Point-2-Point communicator for exchange messages between processes.


The documentation for this class was generated from the following files: