MPI_Imrecv function

Performs a non-blocking receive for a message matched by MPI_Mprobe or MPI_Improbe.

Syntax

int MPIAPI MPI_Imrecv(
  _Out_   void         *buf,
  _In_    int          count,
  _In_    MPI_Datatype datatype,
  _Inout_ MPI_Message  *message,
  _Out_   MPI_Request  *request
);

Parameters

  • buf [out]
    A pointer to the address of the receive buffer.

  • count [in]
    The number of datatype elements in buf.

  • datatype [in]
    The MPI data type of the elements in buf.

  • message [in, out]
    Contains a pointer to the message.

  • request [out]
    On return, contains a pointer to an MPI_REQUEST handle representing the communication operation.

Return value

Returns MPI_SUCCESS on success. Otherwise, the return value is an error code.

In Fortran, the return value is stored in the IERROR parameter.

Fortran

    MPI_IMRECV(BUF, COUNT, DATATYPE, MESSAGE, REQUEST, IERROR)
        <type> BUF(*)
        INTEGER COUNT, DATATYPE, MESSAGE, REQUEST, IERROR

Remarks

This function is the non-blocking variant of MPI_Mrecv and starts a non-blocking receive of a matched message. Completion semantics are similar to MPI_Irecv.

On return from this function, the message handle is set to MPI_MESSAGE_NULL.

If this function is called with MPI_MESSAGE_NO_PROC as the message argument, the call returns immediately with a request object which, when completed, will yield a status object set to source = MPI_PROC_NULL, tag = MPI_ANY_TAG, and count = 0, as if a receive from MPI_PROC_NULL was issued. A call to this function with MPI_MESSAGE_NULL is erroneous.

Requirements

Product

Microsoft MPI v6

Header

Mpi.h; Mpif.h

Library

Msmpi.lib

DLL

Msmpi.dll

See also

MPI Point to Point Functions

MPI_Irecv

MPI_Mrecv

MPI_Mprobe

MPI_Improbe