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

typedef CollectiveCommunication< MPICommunicatorBaseType
 
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)
 

Static Protected Member Functions

static int getMessageTag (const unsigned int increment)
 
static int getMessageTag ()
 

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: