Version: 5.1.6

ParaMEDMEM.MPIAccess Class Reference

#include <MPIAccess.hxx>

Data Structures

struct  RequestStruct

Public Member Functions

 MPIAccess (MPIProcessorGroup *ProcessorGroup, int BaseTag=0, int MaxTag=0)
virtual ~MPIAccess ()
void trace (bool trace=true)
void deleteRequest (int RequestId)
void deleteRequests (int size, int *ArrayOfSendRequests)
int sendMPITag (int destrank)
int recvMPITag (int sourcerank)
int sendRequestIdsSize ()
int sendRequestIds (int size, int *ArrayOfSendRequests)
int recvRequestIdsSize ()
int recvRequestIds (int size, int *ArrayOfRecvRequests)
int sendRequestIdsSize (int destrank)
int sendRequestIds (int destrank, int size, int *ArrayOfSendRequests)
int recvRequestIdsSize (int sourcerank)
int recvRequestIds (int sourcerank, int size, int *ArrayOfRecvRequests)
int send (void *buffer, int count, MPI_Datatype datatype, int target, int &RequestId)
int ISend (void *buffer, int count, MPI_Datatype datatype, int target, int &RequestId)
int recv (void *buffer, int count, MPI_Datatype datatype, int source, int &RequestId, int *OutCount=0)
int IRecv (void *buffer, int count, MPI_Datatype datatype, int source, int &RequestId)
int sendRecv (void *sendbuf, int sendcount, MPI_Datatype sendtype, int dest, int &SendRequestId, void *recvbuf, int recvcount, MPI_Datatype recvtype, int source, int &RecvRequestId, int *OutCount=0)
int ISendRecv (void *sendbuf, int sendcount, MPI_Datatype sendtype, int dest, int &SendRequestId, void *recvbuf, int recvcount, MPI_Datatype recvtype, int source, int &RecvRequestId)
int wait (int RequestId)
int test (int RequestId, int &flag)
int waitAny (int count, int *array_of_RequestIds, int &RequestId)
int testAny (int count, int *array_of_RequestIds, int &RequestId, int &flag)
int waitAll (int count, int *array_of_RequestIds)
int testAll (int count, int *array_of_RequestIds, int &flag)
int waitSome (int count, int *array_of_RequestIds, int outcount, int *outarray_of_RequestIds)
int testSome (int count, int *array_of_RequestIds, int outcounts, int *outarray_of_RequestIds)
int probe (int FromSource, int &source, int &MPITag, MPI_Datatype &datatype, int &outcount)
int IProbe (int FromSource, int &source, int &MPITag, MPI_Datatype &datatype, int &outcount, int &flag)
int cancel (int RecvRequestId, int &flag)
int cancel (int source, int MPITag, MPI_Datatype datatype, int outcount, int &flag)
int cancelAll ()
int barrier ()
int errorString (int errorcode, char *string, int *resultlen) const
int status (int RequestId, int &source, int &tag, int &error, int &outcount, bool keepRequestStruct=false)
int requestFree (MPI_Request *request)
void check () const
MPI_Datatype timeType () const
bool isTimeMessage (int MPITag) const
MPI_Aint timeExtent () const
MPI_Aint intExtent () const
MPI_Aint doubleExtent () const
MPI_Aint extent (MPI_Datatype datatype) const
int MPITag (int RequestId)
int MPITarget (int RequestId)
bool MPIIsRecv (int RequestId)
bool MPIAsynchronous (int RequestId)
bool MPICompleted (int RequestId)
MPI_Datatype MPIDatatype (int RequestId)
int MPIOutCount (int RequestId)
int newRequest (MPI_Datatype datatype, int tag, int destsourcerank, bool fromsourcerank, bool asynchronous)
int newSendTag (MPI_Datatype datatype, int destrank, int method, bool asynchronous, int &RequestId)
int newRecvTag (MPI_Datatype datatype, int sourcerank, int method, bool asynchronous, int &RequestId)
int incrTag (int prevtag)
int valTag (int tag, int method)
void deleteSendRecvRequest (int RequestId)
void deleteStatus (int RequestId)
MPI_Request * MPIRequest (int RequestId)
MPI_Status * MPIStatus (int RequestId)
void setMPICompleted (int RequestId, bool completed)
void setMPIOutCount (int RequestId, int outcount)
void clearMPIStatus (int RequestId)
_MessageIdent methodId (MPI_Datatype datatype) const
MPI_Datatype datatype (_MessageIdent aMethodIdent) const

Data Fields

const CommInterface_comm_interface
const MPI_Comm * _intra_communicator
MPIProcessorGroup_processor_group
int _processor_group_size
int _my_rank
bool _trace
int _base_request
int _max_request
int _request
int_send_request
int_recv_request
std::vector< std::list< int > > _send_requests
std::vector< std::list< int > > _recv_requests
int _base_MPI_tag
int _max_MPI_tag
int_send_MPI_tag
int_recv_MPI_Tag
MPI_Datatype _MPI_TIME
std::map< int, RequestStruct * > _map_of_request_struct

Static Public Attributes

static const int MODULO_TAG = 10

Constructor & Destructor Documentation

ParaMEDMEM.MPIAccess::MPIAccess ( MPIProcessorGroup ProcessorGroup,
int  BaseTag = 0,
int  MaxTag = 0 
)

Creates a MPIAccess that is based on the processors included in ProcessorGroup. This class may be called for easier use of MPI API.

Parameters:
ProcessorGroup MPIProcessorGroup object giving access to group management
BaseTag and MaxTag define the range of tags to be used. Tags are managed by MPIAccess. They are cyclically incremented. When there is a Send or a Receive operation there is a new RequestId tag returned to the caller. That RequestId may be used to manage the operation Wait, Check of status etc... The MPITag internally managed by MPIAccess is used as "tag" argument in MPI call.

References ParaMEDMEM.MPIAccess._base_MPI_tag, ParaMEDMEM.MPIAccess._base_request, ParaMEDMEM.MPIAccess._intra_communicator, ParaMEDMEM.MPIAccess._max_MPI_tag, ParaMEDMEM.MPIAccess._max_request, ParaMEDMEM.MPIAccess._MPI_TIME, ParaMEDMEM.MPIAccess._my_rank, ParaMEDMEM.MPIAccess._processor_group, ParaMEDMEM.MPIAccess._processor_group_size, ParaMEDMEM.MPIAccess._recv_MPI_Tag, ParaMEDMEM.MPIAccess._recv_request, ParaMEDMEM.MPIAccess._recv_requests, ParaMEDMEM.MPIAccess._request, ParaMEDMEM.MPIAccess._send_MPI_tag, ParaMEDMEM.MPIAccess._send_request, ParaMEDMEM.MPIAccess._send_requests, ParaMEDMEM.MPIAccess._trace, ParaMEDMEM.MPIAccess.MODULO_TAG, and ParaMEDMEM.ProcessorGroup.size().

ParaMEDMEM.MPIAccess::~MPIAccess (  )  [virtual]

Member Function Documentation

void ParaMEDMEM.MPIAccess::trace ( bool  trace = true  ) 
void ParaMEDMEM.MPIAccess::deleteRequest ( int  RequestId  ) 
void ParaMEDMEM.MPIAccess::deleteRequests ( int  size,
int ArrayOfSendRequests 
)
int ParaMEDMEM.MPIAccess::sendMPITag ( int  destrank  ) 
int ParaMEDMEM.MPIAccess::recvMPITag ( int  sourcerank  ) 
int ParaMEDMEM.MPIAccess::sendRequestIdsSize (  ) 
int ParaMEDMEM.MPIAccess::sendRequestIds ( int  size,
int ArrayOfSendRequests 
)
int ParaMEDMEM.MPIAccess::recvRequestIdsSize (  ) 
int ParaMEDMEM.MPIAccess::recvRequestIds ( int  size,
int ArrayOfRecvRequests 
)
int ParaMEDMEM.MPIAccess::sendRequestIdsSize ( int  destrank  ) 
int ParaMEDMEM.MPIAccess::sendRequestIds ( int  destrank,
int  size,
int ArrayOfSendRequests 
)
int ParaMEDMEM.MPIAccess::recvRequestIdsSize ( int  sourcerank  ) 
int ParaMEDMEM.MPIAccess::recvRequestIds ( int  sourcerank,
int  size,
int ArrayOfRecvRequests 
)
int ParaMEDMEM.MPIAccess::send ( void *  buffer,
int  count,
MPI_Datatype  datatype,
int  target,
int RequestId 
)
int ParaMEDMEM.MPIAccess::ISend ( void *  buffer,
int  count,
MPI_Datatype  datatype,
int  target,
int RequestId 
)
int ParaMEDMEM.MPIAccess::recv ( void *  buffer,
int  count,
MPI_Datatype  datatype,
int  source,
int RequestId,
int OutCount = 0 
)
int ParaMEDMEM.MPIAccess::IRecv ( void *  buffer,
int  count,
MPI_Datatype  datatype,
int  source,
int RequestId 
)
int ParaMEDMEM.MPIAccess::sendRecv ( void *  sendbuf,
int  sendcount,
MPI_Datatype  sendtype,
int  dest,
int SendRequestId,
void *  recvbuf,
int  recvcount,
MPI_Datatype  recvtype,
int  source,
int RecvRequestId,
int OutCount = 0 
)
int ParaMEDMEM.MPIAccess::ISendRecv ( void *  sendbuf,
int  sendcount,
MPI_Datatype  sendtype,
int  dest,
int SendRequestId,
void *  recvbuf,
int  recvcount,
MPI_Datatype  recvtype,
int  source,
int RecvRequestId 
)
int ParaMEDMEM.MPIAccess::wait ( int  RequestId  ) 
int ParaMEDMEM.MPIAccess::test ( int  RequestId,
int flag 
)
int ParaMEDMEM.MPIAccess::waitAny ( int  count,
int array_of_RequestIds,
int RequestId 
)
int ParaMEDMEM.MPIAccess::testAny ( int  count,
int array_of_RequestIds,
int RequestId,
int flag 
)
int ParaMEDMEM.MPIAccess::waitAll ( int  count,
int array_of_RequestIds 
)
int ParaMEDMEM.MPIAccess::testAll ( int  count,
int array_of_RequestIds,
int flag 
)
int ParaMEDMEM.MPIAccess::waitSome ( int  count,
int array_of_RequestIds,
int  outcount,
int outarray_of_RequestIds 
)
int ParaMEDMEM.MPIAccess::testSome ( int  count,
int array_of_RequestIds,
int  outcounts,
int outarray_of_RequestIds 
)
int ParaMEDMEM.MPIAccess::probe ( int  FromSource,
int source,
int MPITag,
MPI_Datatype &  datatype,
int outcount 
)
int ParaMEDMEM.MPIAccess::IProbe ( int  FromSource,
int source,
int MPITag,
MPI_Datatype &  datatype,
int outcount,
int flag 
)
int ParaMEDMEM.MPIAccess::cancel ( int  RecvRequestId,
int flag 
)
int ParaMEDMEM.MPIAccess::cancel ( int  source,
int  MPITag,
MPI_Datatype  datatype,
int  outcount,
int flag 
)
int ParaMEDMEM.MPIAccess::cancelAll (  ) 
int ParaMEDMEM.MPIAccess::barrier (  ) 
int ParaMEDMEM.MPIAccess::errorString ( int  errorcode,
char *  string,
int resultlen 
) const
int ParaMEDMEM.MPIAccess::status ( int  RequestId,
int source,
int tag,
int error,
int outcount,
bool  keepRequestStruct = false 
)
int ParaMEDMEM.MPIAccess::requestFree ( MPI_Request *  request  ) 
void ParaMEDMEM.MPIAccess::check (  )  const
MPI_Datatype ParaMEDMEM.MPIAccess::timeType (  )  const
bool ParaMEDMEM.MPIAccess::isTimeMessage ( int  MPITag  )  const
MPI_Aint ParaMEDMEM.MPIAccess::timeExtent (  )  const
MPI_Aint ParaMEDMEM.MPIAccess::intExtent (  )  const
MPI_Aint ParaMEDMEM.MPIAccess::doubleExtent (  )  const
MPI_Aint ParaMEDMEM.MPIAccess::extent ( MPI_Datatype  datatype  )  const
int ParaMEDMEM.MPIAccess::MPITag ( int  RequestId  ) 
int ParaMEDMEM.MPIAccess::MPITarget ( int  RequestId  ) 
bool ParaMEDMEM.MPIAccess::MPIIsRecv ( int  RequestId  ) 
bool ParaMEDMEM.MPIAccess::MPIAsynchronous ( int  RequestId  ) 
bool ParaMEDMEM.MPIAccess::MPICompleted ( int  RequestId  ) 
MPI_Datatype ParaMEDMEM.MPIAccess::MPIDatatype ( int  RequestId  ) 
int ParaMEDMEM.MPIAccess::MPIOutCount ( int  RequestId  ) 
int ParaMEDMEM.MPIAccess::newRequest ( MPI_Datatype  datatype,
int  tag,
int  destsourcerank,
bool  fromsourcerank,
bool  asynchronous 
)
int ParaMEDMEM.MPIAccess::newSendTag ( MPI_Datatype  datatype,
int  destrank,
int  method,
bool  asynchronous,
int RequestId 
)
int ParaMEDMEM.MPIAccess::newRecvTag ( MPI_Datatype  datatype,
int  sourcerank,
int  method,
bool  asynchronous,
int RequestId 
)
int ParaMEDMEM.MPIAccess::incrTag ( int  prevtag  ) 
int ParaMEDMEM.MPIAccess::valTag ( int  tag,
int  method 
)
void ParaMEDMEM.MPIAccess::deleteSendRecvRequest ( int  RequestId  ) 
void ParaMEDMEM.MPIAccess::deleteStatus ( int  RequestId  ) 
MPI_Request * ParaMEDMEM.MPIAccess::MPIRequest ( int  RequestId  ) 
MPI_Status * ParaMEDMEM.MPIAccess::MPIStatus ( int  RequestId  ) 
void ParaMEDMEM.MPIAccess::setMPICompleted ( int  RequestId,
bool  completed 
)
void ParaMEDMEM.MPIAccess::setMPIOutCount ( int  RequestId,
int  outcount 
)
void ParaMEDMEM.MPIAccess::clearMPIStatus ( int  RequestId  ) 
_MessageIdent ParaMEDMEM.MPIAccess::methodId ( MPI_Datatype  datatype  )  const
MPI_Datatype ParaMEDMEM.MPIAccess::datatype ( _MessageIdent  aMethodIdent  )  const

Field Documentation

std::vector< std::list< int > > ParaMEDMEM.MPIAccess._send_requests
std::vector< std::list< int > > ParaMEDMEM.MPIAccess._recv_requests
const int ParaMEDMEM.MPIAccess.MODULO_TAG = 10 [static]