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_Datatypesendcount 连续元素组成。 消息长度按元素数(而不是字节数)指定。

  • sendcount
    sendbuf 中 sendtype 元素的数目。 如果值为零,则消息的数据部分为空。

  • sendtype
    表示 sendbuf 中每个元素的数据类型的MPI_Datatype句柄。

  • recvbuf [out, 可选]
    指向缓冲区的指针,该缓冲区包含从根上每个进程接收的数据,包括根进程发送的数据,仅在根) (重要。 对于所有非根进程,将忽略接收缓冲区 recvbuf 。 在根进程中, recvbufrecvtype 句柄指示 的MPI_Datatyperecvcount 连续元素组成。 消息长度按元素数(而不是字节数)指定。

  • recvcount [in]
    recvbufrecvtype 元素的数目。 如果值为零,则消息的数据部分为空 (仅在根) 有效。

  • 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

另请参阅

MPI 集合函数

MPI_Datatype

MPI_Gather

MPI_Test

MPI_Testall

MPI_Testany

MPI_Testsome

MPI_Wait

MPI_Waitall

MPI_Waitany

MPI_Waitsome