共用方式為


MPI_Allgatherv函式

從群組的每個成員收集可變的資料量,並將資料傳送給群組的所有成員。 MPI_Allgatherv函式就像MPI_Gatherv,不同之處在于所有進程都會收到結果,而不只是根。 每個進程都會接收從jth 進程傳送的資料區塊,並放在緩衝區recvbufj區塊中。 這些區塊不一定都必須是相同的大小。

語法

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]
    接收緩衝區中每個 Communicator 進程的資料元素數目。

  • displs [in]
    相對於每個 Communicator 進程之資料的 recvbuf 參數位置。

    recvbufrecvcountsdispls 參數陣列中,每個陣列的第 n個元素會參考從 nth communicator 進程接收的資料。

  • recvtype
    緩衝區中每個專案的 MPI 資料類型。

  • 通訊
    MPI_Comm communicator 控制碼。

傳回值

傳回成功時 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 參數參考 intercomicator,則一個群組的每個進程,例如,群組 A 會貢獻 sendcount 參數中指定的資料項目數目。 此資料會串連,且結果會儲存在其他群組 B 的每個進程,群組 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