MPI Library Reference


Non Blocking Message Passing

<< Message Passing Blocking | Table of Contents | Data Types >>
(:begfnct mpi_irecv:)

int MPI_Irecv( void *buf, int count, MPI_Datatype datatype,

int srcPid, int tag, MPI_Comm comm, MPI_Status *status, MPI_Request *request)

Begins a non-blocking receive operation. This function returns before the data has actually been received. The contents of buf must not be used until you are certain the data has arrived. The request argument is used with MPI_Wait() or MPI_Test() to determine when the entire message has been received. (:endfnct:)

(:begfnct mpi_isend:)

int MPI_Isend( void *buf, int count, MPI_Datatype datatype,

int destPid, int tag, MPI_Comm comm, MPI_Request *request)

Starts a non-blocking send. The request parameter is used by MPI_Wait() or MPI_Test() to determine when the send operation has completed. (:endfnct:)

(:begfnct mpi_iprobe:)

int MPI_Iprobe( int source, int tag, MPI_Comm comm, int *flag,

MPI_Status *status );

Non-blocking message probe which tests to see if a message with the given data tag has arrived from the given source process. This function does not actually receive the message it simply determines if a message has arrived.

srcPid
the id of the process from which you are waiting for a message.
tag
the tag associated with the type of message for which you are waiting.
comm
the communications group being probed.
flag
address of an int variable into which a logical value is stored. If a message with the given properties is waiting, flag is set to a non-zero value (true), otherwise, it is set to zero (false).
status
address of a struct into which information related to the message can be stored.

(:endfnct:)

(:begfnct mpi_wait:)

int MPI_Wait( MPI_Request *request, MPI_Status *status );

Blocks and waits for an MPI non-blocking send or receive to complete.

request
the address of the MPI_Request variable passed earlier to the non-blocking send or receive function.
status
the same as the status parameter of MPI_Irecv().

(:endfnct:)

(:begfnct mpi_test:)

int MPI_Test( MPI_Request *request, int *flag, MPI_Status *status );

A non-blocking routine which tests for the completion of a non-blocking send or receive operation.

request
the address of the MPI_Request variable passed earlier to the non-blocking send or receive function.
flag
the boolean completion status. If the given operation has completed, flag will be non-zero (true). Otherwise, flag will be zero (false).
status
the same as the status parameter of MPI_Irecv().

(:endfnct:)

<< Message Passing Blocking | Table of Contents | Data Types >>

Print - Changes - Search
Last modified: May 10, 2007, at 12:11 PM.