#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=NULL) |
| 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=NULL) |
| 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) |
Private Member Functions | |
| 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 |
Private Attributes | |
| 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 Private Attributes | |
| static const int | MODULO_TAG = 10 |
| 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.
| 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] |
| void ParaMEDMEM.MPIAccess::trace | ( | bool | trace = true | ) |
References ParaMEDMEM.MPIAccess._trace.
| void ParaMEDMEM.MPIAccess::deleteRequest | ( | int | RequestId | ) |
References ParaMEDMEM.MPIAccess._map_of_request_struct, ParaMEDMEM.MPIAccess._my_rank, ParaMEDMEM.MPIAccess._trace, ParaMEDMEM.MPIAccess.deleteSendRecvRequest(), ParaMEDMEM.MPIAccess.deleteStatus(), ParaMEDMEM.MPIAccess.RequestStruct.MPIIsRecv, ParaMEDMEM.MPIAccess.MPIRequest(), ParaMEDMEM.MPIAccess.RequestStruct.MPIRequest, and ParaMEDMEM.MPIAccess.requestFree().
References ParaMEDMEM.MPIAccess.deleteRequest(), and test_NonCoincidentDEC.size.
References ParaMEDMEM.MPIAccess._send_MPI_tag.
References ParaMEDMEM.MPIAccess._recv_MPI_Tag.
| int ParaMEDMEM.MPIAccess::sendRequestIdsSize | ( | ) |
| int ParaMEDMEM.MPIAccess::recvRequestIdsSize | ( | ) |
References ParaMEDMEM.MPIAccess._send_requests.
References ParaMEDMEM.MPIAccess._send_requests, med_test1.begin, and test_NonCoincidentDEC.size.
References ParaMEDMEM.MPIAccess._recv_requests.
References ParaMEDMEM.MPIAccess._recv_requests, med_test1.begin, and test_NonCoincidentDEC.size.
| int ParaMEDMEM.MPIAccess::send | ( | void * | buffer, |
| int | count, | ||
| MPI_Datatype | datatype, | ||
| int | target, | ||
| int & | RequestId | ||
| ) |
References ParaMEDMEM.MPIAccess._comm_interface, ParaMEDMEM.MPIAccess._intra_communicator, ParaMEDMEM._message_time, ParaMEDMEM.MPIAccess._my_rank, ParaMEDMEM.MPIAccess._trace, ParaMEDMEM.MPIAccess.deleteRequest(), ParaMEDMEM.MPIAccess.methodId(), ParaMEDMEM.MPIAccess.newSendTag(), ParaMEDMEM.CommInterface.send(), and ParaMEDMEM.TimeMessage.tag.
| int ParaMEDMEM.MPIAccess::ISend | ( | void * | buffer, |
| int | count, | ||
| MPI_Datatype | datatype, | ||
| int | target, | ||
| int & | RequestId | ||
| ) |
References ParaMEDMEM.MPIAccess._comm_interface, ParaMEDMEM.MPIAccess._intra_communicator, ParaMEDMEM._message_time, ParaMEDMEM.MPIAccess._my_rank, ParaMEDMEM.MPIAccess._trace, ParaMEDMEM.CommInterface.Isend(), ParaMEDMEM.MPIAccess.methodId(), ParaMEDMEM.MPIAccess.MPIRequest(), ParaMEDMEM.MPIAccess.newSendTag(), and ParaMEDMEM.TimeMessage.tag.
| int ParaMEDMEM.MPIAccess::recv | ( | void * | buffer, |
| int | count, | ||
| MPI_Datatype | datatype, | ||
| int | source, | ||
| int & | RequestId, | ||
| int * | OutCount = NULL |
||
| ) |
References ParaMEDMEM.MPIAccess._comm_interface, ParaMEDMEM.MPIAccess._intra_communicator, ParaMEDMEM.MPIAccess._my_rank, ParaMEDMEM.MPIAccess._trace, ParaMEDMEM.MPIAccess.deleteRequest(), ParaMEDMEM.MPIAccess.deleteStatus(), ParaMEDMEM.CommInterface.getCount(), ParaMEDMEM.MPIAccess.methodId(), ParaMEDMEM.MPIAccess.MPIDatatype(), ParaMEDMEM.MPIAccess.MPIStatus(), ParaMEDMEM.MPIAccess.newRecvTag(), ParaMEDMEM.CommInterface.recv(), ParaMEDMEM.MPIAccess.setMPICompleted(), and ParaMEDMEM.MPIAccess.setMPIOutCount().
| 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 | ||
| ) |
References ParaMEDMEM.MPIAccess.IRecv(), and ParaMEDMEM.MPIAccess.ISend().
References ParaMEDMEM.MPIAccess._comm_interface, ParaMEDMEM.MPIAccess._my_rank, ParaMEDMEM.MPIAccess._trace, ParaMEDMEM.MPIAccess.datatype(), ParaMEDMEM.MPIAccess.deleteStatus(), ParaMEDMEM.CommInterface.getCount(), ParaMEDMEM.MPIAccess.MPICompleted(), ParaMEDMEM.MPIAccess.MPIDatatype(), ParaMEDMEM.MPIAccess.MPIIsRecv(), ParaMEDMEM.MPIAccess.MPIOutCount(), ParaMEDMEM.MPIAccess.MPIRequest(), ParaMEDMEM.MPIAccess.MPIStatus(), ParaMEDMEM.MPIAccess.MPITag(), ParaMEDMEM.MPIAccess.setMPICompleted(), ParaMEDMEM.MPIAccess.setMPIOutCount(), ParaMEDMEM.MPIAccess.status(), and ParaMEDMEM.CommInterface.wait().
References ParaMEDMEM.MPIAccess._comm_interface, ParaMEDMEM.MPIAccess._my_rank, ParaMEDMEM.MPIAccess._trace, ParaMEDMEM.MPIAccess.datatype(), ParaMEDMEM.MPIAccess.deleteStatus(), ParaMEDMEM.CommInterface.getCount(), ParaMEDMEM.MPIAccess.MPICompleted(), ParaMEDMEM.MPIAccess.MPIDatatype(), ParaMEDMEM.MPIAccess.MPIIsRecv(), ParaMEDMEM.MPIAccess.MPIOutCount(), ParaMEDMEM.MPIAccess.MPIRequest(), ParaMEDMEM.MPIAccess.MPIStatus(), ParaMEDMEM.MPIAccess.MPITag(), ParaMEDMEM.MPIAccess.setMPICompleted(), ParaMEDMEM.MPIAccess.setMPIOutCount(), ParaMEDMEM.MPIAccess.status(), and ParaMEDMEM.CommInterface.test().
References ParaMEDMEM.MPIAccess.status().
| int ParaMEDMEM.MPIAccess::testAny | ( | int | count, |
| int * | array_of_RequestIds, | ||
| int & | RequestId, | ||
| int & | flag | ||
| ) |
References ParaMEDMEM.MPIAccess.status().
| int ParaMEDMEM.MPIAccess::waitSome | ( | int | count, |
| int * | array_of_RequestIds, | ||
| int | outcount, | ||
| int * | outarray_of_RequestIds | ||
| ) |
References ParaMEDMEM.MPIAccess.status().
| int ParaMEDMEM.MPIAccess::testSome | ( | int | count, |
| int * | array_of_RequestIds, | ||
| int | outcounts, | ||
| int * | outarray_of_RequestIds | ||
| ) |
References ParaMEDMEM.MPIAccess.status().
| int ParaMEDMEM.MPIAccess::cancel | ( | int | source, |
| int | MPITag, | ||
| MPI_Datatype | datatype, | ||
| int | outcount, | ||
| int & | flag | ||
| ) |
References ParaMEDMEM.MPIAccess._comm_interface, ParaMEDMEM.MPIAccess._intra_communicator, ParaMEDMEM.MPIAccess._my_rank, ParaMEDMEM.MPIAccess._trace, ParaMEDMEM.CommInterface.cancel(), ParaMEDMEM.MPIAccess.extent(), ParaMEDMEM.CommInterface.Irecv(), ParaMEDMEM.CommInterface.testCancelled(), ParaMEDMEM.MPIAccess.timeType(), and ParaMEDMEM.CommInterface.wait().
| int ParaMEDMEM.MPIAccess::cancelAll | ( | ) |
| int ParaMEDMEM.MPIAccess::barrier | ( | ) |
| int ParaMEDMEM.MPIAccess::status | ( | int | RequestId, |
| int & | source, | ||
| int & | tag, | ||
| int & | error, | ||
| int & | outcount, | ||
| bool | keepRequestStruct = false |
||
| ) |
References ParaMEDMEM.MPIAccess._comm_interface, ParaMEDMEM.MPIAccess._my_rank, ParaMEDMEM.MPIAccess._trace, ParaMEDMEM.MPIAccess.datatype(), ParaMEDMEM.MPIAccess.deleteRequest(), ParaMEDMEM.CommInterface.getCount(), ParaMEDMEM.MPIAccess.MPIAsynchronous(), ParaMEDMEM.MPIAccess.MPICompleted(), ParaMEDMEM.MPIAccess.MPIDatatype(), ParaMEDMEM.MPIAccess.MPIIsRecv(), ParaMEDMEM.MPIAccess.MPIOutCount(), ParaMEDMEM.MPIAccess.MPIStatus(), ParaMEDMEM.MPIAccess.MPITag(), ParaMEDMEM.MPIAccess.MPITarget(), and ParaMEDMEM.MPIAccess.setMPIOutCount().
| int ParaMEDMEM.MPIAccess::requestFree | ( | MPI_Request * | request | ) |
| void ParaMEDMEM.MPIAccess::check | ( | ) | const |
| MPI_Datatype ParaMEDMEM.MPIAccess::timeType | ( | ) | const |
References ParaMEDMEM.MPIAccess._MPI_TIME.
| bool ParaMEDMEM.MPIAccess::isTimeMessage | ( | int | MPITag | ) | const |
References ParaMEDMEM._message_time, and ParaMEDMEM.MPIAccess.MODULO_TAG.
| MPI_Aint ParaMEDMEM.MPIAccess::timeExtent | ( | ) | const |
References ParaMEDMEM.MPIAccess._MPI_TIME, and ParaMEDMEM.MPIAccess.extent().
| MPI_Aint ParaMEDMEM.MPIAccess::intExtent | ( | ) | const |
References ParaMEDMEM.MPIAccess.extent().
| MPI_Aint ParaMEDMEM.MPIAccess::doubleExtent | ( | ) | const |
References ParaMEDMEM.MPIAccess.extent().
| MPI_Aint ParaMEDMEM.MPIAccess::extent | ( | MPI_Datatype | datatype | ) | const |
| 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::newRequest | ( | MPI_Datatype | datatype, |
| int | tag, | ||
| int | destsourcerank, | ||
| bool | fromsourcerank, | ||
| bool | asynchronous | ||
| ) | [private] |
References ParaMEDMEM.MPIAccess._base_request, ParaMEDMEM.MPIAccess._map_of_request_struct, ParaMEDMEM.MPIAccess._max_request, ParaMEDMEM.MPIAccess._my_rank, ParaMEDMEM.MPIAccess._recv_request, ParaMEDMEM.MPIAccess._request, ParaMEDMEM.MPIAccess._send_request, ParaMEDMEM.MPIAccess._trace, ParaMEDMEM.MPIAccess.datatype(), ParaMEDMEM.MPIAccess.RequestStruct.MPIAsynchronous, ParaMEDMEM.MPIAccess.RequestStruct.MPICompleted, ParaMEDMEM.MPIAccess.RequestStruct.MPIDatatype, ParaMEDMEM.MPIAccess.RequestStruct.MPIIsRecv, ParaMEDMEM.MPIAccess.RequestStruct.MPIOutCount, ParaMEDMEM.MPIAccess.RequestStruct.MPIRequest, ParaMEDMEM.MPIAccess.RequestStruct.MPIStatus, ParaMEDMEM.MPIAccess.RequestStruct.MPITag, and ParaMEDMEM.MPIAccess.RequestStruct.MPITarget.
References testRenumbering.method, and ParaMEDMEM.MPIAccess.MODULO_TAG.
| void ParaMEDMEM.MPIAccess::deleteSendRecvRequest | ( | int | RequestId | ) | [private] |
| void ParaMEDMEM.MPIAccess::deleteStatus | ( | int | RequestId | ) | [private] |
| MPI_Request * ParaMEDMEM.MPIAccess::MPIRequest | ( | int | RequestId | ) | [private] |
| MPI_Status * ParaMEDMEM.MPIAccess::MPIStatus | ( | int | RequestId | ) | [private] |
| void ParaMEDMEM.MPIAccess::setMPICompleted | ( | int | RequestId, |
| bool | completed | ||
| ) | [private] |
| void ParaMEDMEM.MPIAccess::clearMPIStatus | ( | int | RequestId | ) | [private] |
| _MessageIdent ParaMEDMEM.MPIAccess::methodId | ( | MPI_Datatype | datatype | ) | const [private] |
| MPI_Datatype ParaMEDMEM.MPIAccess::datatype | ( | _MessageIdent | aMethodIdent | ) | const [private] |
const CommInterface& ParaMEDMEM.MPIAccess._comm_interface [private] |
const MPI_Comm* ParaMEDMEM.MPIAccess._intra_communicator [private] |
int ParaMEDMEM.MPIAccess._my_rank [private] |
bool ParaMEDMEM.MPIAccess._trace [private] |
int ParaMEDMEM.MPIAccess._base_request [private] |
int ParaMEDMEM.MPIAccess._max_request [private] |
int ParaMEDMEM.MPIAccess._request [private] |
int* ParaMEDMEM.MPIAccess._send_request [private] |
int* ParaMEDMEM.MPIAccess._recv_request [private] |
std::vector< std::list< int > > ParaMEDMEM.MPIAccess._send_requests [private] |
std::vector< std::list< int > > ParaMEDMEM.MPIAccess._recv_requests [private] |
int ParaMEDMEM.MPIAccess._base_MPI_tag [private] |
int ParaMEDMEM.MPIAccess._max_MPI_tag [private] |
int* ParaMEDMEM.MPIAccess._send_MPI_tag [private] |
int* ParaMEDMEM.MPIAccess._recv_MPI_Tag [private] |
MPI_Datatype ParaMEDMEM.MPIAccess._MPI_TIME [private] |
const int ParaMEDMEM.MPIAccess.MODULO_TAG = 10 [static, private] |
std::map< int , RequestStruct * > ParaMEDMEM.MPIAccess._map_of_request_struct [private] |