MPI_Igather 函数
以非阻止方式从组的所有成员收集数据到一个成员。
语法
int WINAPI MPI_Igather(
_In_ void *sendbuf,
int sendcount,
MPI_Datatype sendtype,
_Out_opt_ void *recvbuf,
_In_ int recvcount,
_In_ MPI_Datatype recvtype,
_In_ int root,
_In_ MPI_Comm comm,
_Out_ MPI_Request *request
);
参数
sendbuf [in]
指向包含要发送到根的数据的缓冲区的指针。 缓冲区由 sendtype 句柄指示 的MPI_Datatype 的 sendcount 连续元素组成。 消息长度按元素数(而不是字节数)指定。sendcount
sendbuf 中 sendtype 元素的数目。 如果值为零,则消息的数据部分为空。sendtype
表示 sendbuf 中每个元素的数据类型的MPI_Datatype句柄。recvbuf [out, 可选]
指向缓冲区的指针,该缓冲区包含从根上每个进程接收的数据,包括根进程发送的数据,仅在根) (重要。 对于所有非根进程,将忽略接收缓冲区 recvbuf 。 在根进程中, recvbuf 由 recvtype 句柄指示 的MPI_Datatype 的 recvcount 连续元素组成。 消息长度按元素数(而不是字节数)指定。recvcount [in]
recvbuf 中 recvtype 元素的数目。 如果值为零,则消息的数据部分为空 (仅在根) 有效。recvtype [in]
表示 recvbuf 中每个元素的数据类型的MPI_Datatype句柄仅在根) (显著。root [in]
接收进程在MPI_Comm通信中的排名。comm [in]
MPI_Comm通信器句柄。request [out]
表示通信操作 的MPI_Request 句柄。
返回值
返回成功 时MPI_SUCCESS 。 否则,返回值为错误代码。
在 Fortran 中,返回值存储在 IERROR 参数中。
Fortran
MPI_IGATHER(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE,
ROOT, COMM, REQUEST, IERROR)
<type> SENDBUF(*), RECVBUF(*)
INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, ROOT, COMM, REQUEST, IERROR
注解
非阻塞调用会启动集体收集操作,该操作必须在单独的完成调用中完成。 启动后,操作可以独立于参与进程中的任何计算或其他通信进行。 通过这种方式,非阻塞性收集操作可以通过在“后台”中运行收集操作来缓解收集操作的可能同步影响。
非阻塞性收集操作支持所有完成调用 (例如 MPI_Wait) 。
要求
产品 |
Microsoft MPI v6 |
标头 |
Mpi.h;Mpif.h |
库 |
Msmpi.lib |
DLL |
Msmpi.dll |