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 |