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

另请参阅

MPI 集合函数

MPI_Datatype

MPI_Op

MPI_Reduce

MPI_Test

MPI_Testall

MPI_Testany

MPI_Testsome

MPI_Wait

MPI_Waitall

MPI_Waitany

MPI_Waitsome