共用方式為


MPI_Ireduce函式

執行全域縮減作業 (例如,以非封鎖方式跨群組的所有成員的總和、最大值或邏輯和) 。

語法

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

參數

  • sendbuf [in]
    緩衝區的指標,其中包含要用於縮減的這個排名中的資料。 緩衝區是由資料類型控制碼所指示之MPI_Datatype的後續元素所組成。 訊息長度是以元素數目來指定,而不是位元組數目。

  • recvbuf [out, optional]
    要接收縮減作業結果之緩衝區的指標。 此參數只有在根進程才重要。

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

  • 資料類型 [in]
    MPI_Datatype控制碼,代表sendbuf中每個專案的資料類型。

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

  • root [in]
    接收進程 在 MPI_Commcomm內的排名。

  • comm [in]
    MPI_Comm communicator 控制碼。

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

傳回值

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

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

Fortran

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

備註

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

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

規格需求

產品

Microsoft MPI v6

標頭

Mpi.h;Mpif.h

媒體櫃

Msmpi.lib

DLL

Msmpi.dll

另請參閱

MPI 共同函式

MPI_Datatype

MPI_Op

MPI_Reduce

MPI_Test

MPI_Testall

MPI_Testany

MPI_Testsome

MPI_Wait

MPI_Waitall

MPI_Waitany

MPI_Waitsome