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]
指向用于接收缩减操作结果的缓冲区的指针。 此参数仅在根进程中有效。count [in]
要从此过程发送的元素数。datatype [in]
表示 sendbuf 中每个元素的数据类型的MPI_Datatype句柄。op [in]
MPI_Op句柄,指示要执行的全局缩减操作。 句柄可以指示内置或应用程序定义的操作。 有关预定义操作的列表,请参阅 MPI_Op 主题。root [in]
接收进程在 MPI_Comm通信中的排名。comm [in]
MPI_Comm通信器句柄。request [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 |
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈