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_TAG和 count = 0 的状态对象,就像发出 了来自MPI_PROC_NULL 的接收一样。 使用 MPI_MESSAGE_NULL 调用此函数是错误的。
要求
产品 |
Microsoft MPI v6 |
标头 |
Mpi.h;Mpif.h |
库 |
Msmpi.lib |
DLL |
Msmpi.dll |