共用方式為


MPI_Iscatterv函式

語法

int MPIAPI MPI_Iscatterv(
  _In_opt_  const void         *sendbuf,
  _In_opt_  const int          sendcounts[],
  _In_opt_  const int          displs[],
  _In_            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, optional]
    緩衝區的指標,其中包含根進程要傳送的數據。

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

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

  • sendcounts[] [in, optional]
    要傳送至每個進程的項目數目。 如果 sendcounts[i] 為零,則該程式之訊息的數據部分是空的。

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

  • displs[] [in, optional]
    要傳送至每個通訊程式之數據的位置。 陣列中的每個位置都是相對於 sendbuf 陣列的對應專案。

    sendbufsendcountsdispls 參數陣列中,每個數位的第 n個元素會參考要傳送至 nth communicator 進程的數據。

    此參數只有在根進程才重要。

  • sendtype [in]
    緩衝區中每個項目的數據類型。

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

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

  • recvcount [in]
    接收緩衝區中的項目數目。 如果計數為零,則訊息的數據部分是空的。

  • recvtype [in]
    接收緩衝區中項目的數據型別。

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

  • comm [in]
    MPI_Comm communicator 句柄。

  • 要求 [out]
    表示通訊作業 的MPI_Request 句柄。

傳回值

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

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

Fortran

    MPI_ISCATTERV(SENDBUF, SENDCOUNTS, DISPLS, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, ROOT, COMM, REQUEST, IERROR)
        <type> SENDBUF(*), RECVBUF(*)
        INTEGER SENDCOUNTS(*), DISPLS(*), SENDTYPE, RECVCOUNT, RECVTYPE, ROOT, COMM, REQUEST, IERROR

備註

非封鎖呼叫會起始必須在個別完成呼叫中完成的統一縮減作業。 一旦起始,作業可能會獨立於參與進程的任何計算或其他通訊之外進行。 如此一來,非封鎖縮減作業就可以藉由在「背景」中執行減少作業,來減輕縮減作業的可能同步處理效果。

所有完成呼叫 (例如,非封鎖縮減作業都支援 MPI_Wait)

規格需求

產品

Microsoft MPI v7

標頭

Mpi.h;Mpif.h

媒體櫃

Msmpi.lib

DLL

Msmpi.dll

另請參閱

MPI 共同函式

MPI_Datatype

MPI_Scatterv

MPI_Test

MPI_Testall

MPI_Testany

MPI_Testsome

MPI_Wait

MPI_Waitall

MPI_Waitany

MPI_Waitsome