共用方式為


MPI_Iallreduce 函式

結合所有進程的值,並以非封鎖方式將結果散發回所有進程。

語法

int MPIAPI MPI_Iallreduce(
  _In_opt_  const void         *sendbuf,
  _Out_opt_       void         *recvbuf,
  _In_            int          count,
  _In_            MPI_Datatype datatype,
  _In_            MPI_Op       op,
  _In_            MPI_Comm     comm,
  _Out_           MPI_Request  *request
);

參數

  • sendbuf [in, optional]
    要傳送至群組中所有進程的資料的指標。 緩衝區中元素的數目和資料類型是在 計數資料類型 參數中指定。

    如果 comm 參數參考內部通訊器,您可以在所有進程中指定 MPI_IN_PLACE 來指定就地選項。 在此情況下,輸入資料會從接收緩衝區取得每個進程,其中會由輸出資料取代。

  • recvbuf [out, 選擇性]
    要接收縮減作業結果之緩衝區的指標。

  • count [in]
    要從這個進程傳送的專案數目。

  • 資料類型 [in]
    緩衝區中每個專案的資料類型。 此參數必須與 op 參數中指定的作業相容。

  • op [in]
    要執行的全域縮減作業。 控制碼可以指出內建或應用程式定義的作業。 如需預先定義的作業清單,請參閱 MPI_Op

  • comm [in]
    MPI_Comm通訊器控制碼。

  • 要求 [out]
    表示通訊作業 的MPI_Request 控制碼。

傳回值

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

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

Fortran

    MPI_IALLREDUCE(SENDBUF, RECVBUF, COUNT, DATATYPE, OP, COMM, REQUEST, IERROR)
        <type> SENDBUF(*), RECVBUF(*)
        INTEGER COUNT, DATATYPE, OP, COMM, REQUEST, IERROR

備註

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

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

規格需求

產品

Microsoft MPI v7

標頭

Mpi.h;Mpif.h

媒體櫃

Msmpi.lib

DLL

Msmpi.dll

另請參閱

MPI 整體函式

MPI_Datatype

MPI_Op

MPI_Allreduce

MPI_Test

MPI_Testall

MPI_Testany

MPI_Testsome

MPI_Wait

MPI_Waitall

MPI_Waitany

MPI_Waitsome