MPI_Allgatherv 函数

从组的每个成员收集可变的数据量,并将数据发送给组的所有成员。 MPI_Allgatherv 函数类似于MPI_Gatherv,只是所有进程都接收结果,而不仅仅是根。 从 j进程发送的数据块由每个进程接收,并放置在缓冲区 recvbuf 的第 j个块中。 这些块不一定都是相同的大小。

语法

int MPIAPI MPI_Allgatherv(
  _In_  void         *sendbuf,
        int          sendcount,
        MPI_Datatype sendtype,
  _Out_ void         *recvbuf,
  _In_  int          *recvcounts,
  _In_  int          *displs,
        MPI_Datatype recvtype,
        MPI_Comm     comm
);

参数

  • sendbuf [in]
    指向要发送到组中的所有进程的数据的指针。 缓冲区中元素的数量和数据类型在 sendcountsendtype 参数中指定。 缓冲区中的每个元素对应于组中的一个进程。

    如果 comm 参数引用内部通信器,可以通过在所有进程中指定 MPI_IN_PLACE 来指定就地选项。 忽略 sendcountsendtype 参数。 每个进程在相应的接收缓冲区元素中输入数据。 第 n个进程将数据发送到接收缓冲区的第 n个元素。

  • sendcount
    此进程在 sendbuf 参数中指定的缓冲区中发送的数据元素数。 如果 sendcount 中的元素为零,则来自该进程的消息的数据部分为空。

  • sendtype
    发送缓冲区中元素的 MPI 数据类型。

  • recvbuf [out]
    指向缓冲区的指针,该缓冲区包含从每个进程接收的数据。 缓冲区中元素的数量和数据类型在 recvcountrecvtype 参数中指定。

  • recvcounts [in]
    接收缓冲区中每个通信器进程的数据元素数。

  • displs [in]
    每个通信器进程中的数据相对于 recvbuf 参数的位置。

    recvbufrecvcountsdispls 参数数组中,每个数组的第 n个元素引用从 n个通信器进程接收的数据。

  • recvtype
    缓冲区中每个元素的 MPI 数据类型。

  • comm
    MPI_Comm通信器句柄。

返回值

返回成功 时MPI_SUCCESS 。 否则,返回值为错误代码。

在 Fortran 中,返回值存储在 IERROR 参数中。

Fortran

    MPI_ALLGATHERV(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNTS,DISPLS, RECVTYPE,COMM, IERROR)
        <type> SENDBUF(*), R.ECVBUF(*)
        INTEGER SENDCOUNT, SENDTYPE, RECVCOUNTS(*), DISPLS(*), RECVTYPE, COMM, IERROR

注解

MPI_Allgatherv的使用规则对应于MPI_Gatherv规则。

与进程上的 sendtype 参数关联的类型签名必须等于与任何其他进程中的 recvtype 参数关联的类型签名。

如果 comm 参数引用内部通信器,则调用 MPI_Allgatherv(...)的结果就像执行的所有进程都对 MPI_GatherV(sendbuf,sendcount,sendtype,recvbuf,recvcounts,displs,recvtype,root,comm)调用 root = 0 , ..., n-1。。

如果 comm 参数引用通信器,则一个组(例如组 A)的每个进程都会提供 sendcount 参数中指定的数据项数。 此数据是串联的,结果存储在另一个组 B 中的每个进程中。相反,组 B 中进程数据的串联存储在组 A 中的每个进程中。组 A 中的发送缓冲区参数必须与组 B 中的接收缓冲区参数一致,反之亦然。

要求

产品

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

另请参阅

MPI 集合函数

MPI_Gatherv

MPI_Datatype