MPI_Allreduce 函数
合并所有进程中的值,并将结果分发回所有进程。
语法
int MPIAPI MPI_Allreduce(
_In_opt_ const void *sendbuf,
_Out_opt_ void *recvbuf,
_In_ int count,
_In_ MPI_Datatype datatype,
_In_ MPI_Op op,
_In_ MPI_Comm comm
);
参数
sendbuf [in, optional]
指向要发送到组中的所有进程的数据的指针。 缓冲区中元素的数量和数据类型在 count 和数据类型参数中指定。如果 comm 参数引用内部通信器,则可以通过在所有进程中指定 MPI_IN_PLACE 来指定就地选项。 在这种情况下,输入数据在每个进程中从接收缓冲区获取,其中将替换为输出数据。
recvbuf [out, optional]
指向用于接收缩减操作结果的缓冲区的指针。 此参数仅在根进程中有效。count [in]
要从此过程发送的元素数。datatype [in]
缓冲区中每个元素 的MPI_Datatype 。 此参数必须与 op 参数中指定的操作兼容。op [in]
MPI_Op句柄,指示要执行的全局缩减操作。 句柄可以指示内置或应用程序定义的操作。 有关预定义操作的列表,请参阅 MPI_Op。comm [in]
MPI_Comm通信器句柄。
返回值
返回成功 时MPI_SUCCESS 。 否则,返回值为错误代码。
在 Fortran 中,返回值存储在 IERROR 参数中。
Fortran
MPI_ALLREDUCE(SENDBUF, RECVBUF, COUNT, DATATYPE, OP, COMM, IERROR)
<type> SENDBUF(*), RECVBUF(*)
INTEGER COUNT, DATATYPE, OP, COMM, IERROR
注解
如果 comm 是通信器,则组 A 中进程提供的数据减少的结果存储在组 B 中的每个进程上,反之亦然。 这两个组都应提供指定相同类型签名的 count 和 datatype 参数。
所有完成调用 (例如 ,MPI_Wait) 支持非阻塞缩减操作。
要求
产品 |
HPC Pack 2012 MS-MPI 可再发行程序包、HPC Pack 2008 R2 MS-MPI 可再发行程序包、HPC Pack 2008 MS-MPI 可再发行程序包或 HPC Pack 2008 客户端实用工具 |
标头 |
Mpi.h;Mpif.h |
库 |
Msmpi.lib |
DLL |
Msmpi.dll |