MPI_Ireduce 函数
以非阻塞方式对组的所有成员执行全局化简操作(例如总和、最大值或逻辑操作)。
语法
int MPIAPI MPI_Ireduce(
_In_ void *sendbuf,
_Out_opt_ void *recvbuf,
_In_ int count,
_In_ MPI_Datatype datatype,
_In_ MPI_Op op,
_In_ int root,
_In_ MPI_Comm comm,
_Out_ MPI_Request *request
);
参数
sendbuf [in]
指向缓冲区的指针,该缓冲区包含要用于缩减的此排名中的数据。 缓冲区由 计数MPI_Datatype数据类型 句柄指示的连续元素组成。 消息长度根据元素数而不是字节数来指定。recvbuf [out, optional]
指向缓冲区的指针,用于接收缩减操作的结果。 此参数仅在根进程中非常重要。计数 [in]
要从此过程发送的元素数。数据类型 [in]
MPI_Datatype 句柄,表示 sendbuf中每个元素的数据类型。op [in]
指示要执行的全局缩减操作的 MPI_Op 句柄。 句柄可以指示内置或应用程序定义的操作。 有关预定义操作的列表,请参阅 MPI_Op 主题。根 [in]
MPI_Comm通信中的接收进程的排名。comm [in]
MPI_Comm 通信器句柄。请求 [out]
表示通信操作的 MPI_Request 句柄。
返回值
返回成功 MPI_SUCCESS。 否则,返回值为错误代码。
在 Fortran 中,返回值存储在 IERROR 参数中。
Fortran
MPI_IREDUCE(SENDBUF, RECVBUF, COUNT, DATATYPE, OP, ROOT, COMM, REQUEST, IERROR)
<type> SENDBUF(*), RECVBUF(*)
INTEGER COUNT, DATATYPE, OP, ROOT, COMM, REQUEST, IERROR
言论
非阻塞调用启动必须在单独的完成调用中完成的集体缩减操作。 启动后,该操作可能会独立于参与进程中的任何计算或其他通信进行。 通过这种方式,非阻塞性减少操作可以通过在“后台”运行减少操作来缓解减少操作的可能同步效果。
非阻塞性减少操作支持所有完成调用(例如,MPI_Wait)。
要求
产品 |
Microsoft MPI v6 |
页眉 |
Mpi.h;Mpif.h |
图书馆 |
Msmpi.lib |
DLL |
Msmpi.dll |