共用方式為


MPI_Scatter函式

散佈群組中一個成員的資料。 MPI_Scatter函式會執行MPI_Gather函式所執行的作業反轉。

語法

int MPIAPI MPI_Scatter(
  _In_  void         *sendbuf,
        int          sendcount,
        MPI_Datatype sendtype,
  _Out_ void         *recvbuf,
        int          recvcount,
        MPI_Datatype recvtype,
        int          root,
        MPI_Comm     comm
);

參數

  • sendbuf [in]
    緩衝區的控制碼,其中包含根進程要傳送的資料。

    所有非根進程都會忽略 sendbuf 參數。

    如果 comm 參數參考內部通訊程式,您可以在根進程中指定 MPI_IN_PLACE ,以指定就地選項。 會忽略 recvcountrecvtype參數。 散佈向量仍視為包含 n 個區段,其中 n 是群組大小;對應至根進程的區段不會移動。

  • sendcount
    傳送緩衝區中的專案數目。 如果 sendcount 為零,則訊息的資料部分是空的。

    所有非根進程都會忽略 sendcount 參數。

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

    所有非根進程都會忽略 sendcount 參數。

  • recvbuf [out]
    緩衝區的控制碼,其中包含在每個進程上接收的資料。 緩衝區中元素的數目和資料類型是在 recvcountrecvtype 參數中指定。

  • recvcount
    接收緩衝區中的專案數目。 如果計數為零,則訊息的資料部分是空的。

  • recvtype
    接收緩衝區中專案的資料型別。

  • root
    指定通訊器內傳送程式的排名。

  • 通訊
    MPI_Comm communicator 控制碼。

傳回值

傳回成功時 MPI_SUCCESS 。 否則,傳回值是錯誤碼。

在 Fortran 中,傳回值會儲存在 IERROR 參數中。

Fortran

    MPI_SCATTER(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, ROOT, COMM, IERROR)
        <type> SENDBUF(*), RECVBUF(*)
        INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, ROOT, COMM, IERROR

備註

MPI_Scatter函式的效果就像根進程使用MPI_Send函式傳送訊息一樣。 此訊息會分割成 n 個相等區段,每個群組成員各一個。 第 i個區段會傳送至群組中的 i進程。

如果 comm 是內部通訊程式,則結果就像根執行 n 個傳送作業 MPI_Send(sendbuf + i*sendcount*extent(sendtype), sendcount, sendtype, I, …) 一樣;而且每個進程都執行接收 。 MPI_Recv(recvbuf, recvcount, recvtype, i,…)

根進程的 sendcountsendtype 參數所指定的類型簽章必須等於 recvcount所指定的類型簽章,以及所有進程的 recvtype 參數。 因此,傳送的資料量必須等於任何一對進程之間收到的資料量。 仍然允許傳送者和接收者之間的相異類型對應。

所有函式參數在根進程上都很重要,只有recvbufrecvcount、recvtyperootcomm參數對其他進程而言很重要。 comm參數在所有進程上都必須相同。

計數和類型的規格不應造成根目錄上的任何位置多次讀取。

如果 comm 參數參考 intercomicator,則呼叫會牽涉到 intercomicator 中的所有進程,但具有定義根進程的一個群組 A。 另一個群組 B 中的所有進程在參數中設定相同的值,也就是群組 A 中根進程的排名。根進程會在參數中設定值MPI_ROOT。 群組 A 中的所有其他進程都會在參數中設定值MPI_PROC_Null。 資料會從根進程廣播到群組 B 中的所有進程。群組 B 中進程的 緩衝區 參數必須與根進程的 buffer 參數一致。

規格需求

產品

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_Datatype

MPI_Gather

MPI_Gatherv

MPI_Scatterv