MPI_Imrecv 函数

MPI_Mprobe或MPI_Improbe匹配的消息执行非阻塞接收。

语法

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

参数

  • buf [out]
    指向接收缓冲区地址的指针。

  • count [in]
    buf数据类型元素的数目。

  • datatype [in]
    buf 中元素的 MPI 数据类型。

  • message [in, out]
    包含指向消息的指针。

  • request [out]
    返回时,包含指向表示通信操作 的MPI_REQUEST 句柄的指针。

返回值

返回成功 时MPI_SUCCESS 。 否则,返回值为错误代码。

在 Fortran 中,返回值存储在 IERROR 参数中。

Fortran

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

注解

此函数是 MPI_Mrecv 的非阻塞变体,可启动匹配消息的非阻塞接收。 完成语义类似于 MPI_Irecv

从此函数返回时,消息句柄设置为 MPI_MESSAGE_NULL

如果使用 MPI_MESSAGE_NO_PROC 作为 message 参数调用此函数,则调用会立即返回请求对象,该对象完成后,该对象将生成设置为 source = MPI_PROC_NULL标记 = MPI_ANY_TAGcount = 0 的状态对象,就像发出 了来自MPI_PROC_NULL 的接收一样。 使用 MPI_MESSAGE_NULL 调用此函数是错误的。

要求

产品

Microsoft MPI v6

标头

Mpi.h;Mpif.h

Msmpi.lib

DLL

Msmpi.dll

另请参阅

MPI 点到点函数

MPI_Irecv

MPI_Mrecv

MPI_Mprobe

MPI_Improbe