結合所有進程的值,並將結果散發回所有進程。
語法
int MPIAPI MPI_Allreduce(
_In_opt_ const void *sendbuf,
_Out_opt_ void *recvbuf,
_In_ int count,
_In_ MPI_Datatype datatype,
_In_ MPI_Op op,
_In_ MPI_Comm comm
);
參數
sendbuf [in, optional]
要傳送至群組中所有進程之資料的指標。 緩衝區中元素的數目和資料類型是在計數和資料類型參數中指定。如果 comm 參數參考內部通訊程式,您可以在所有進程中指定 MPI_IN_PLACE, 以指定就地選項。 在此案例中,輸入資料會從接收緩衝區取得,而輸出資料會取代它。
recvbuf [out, optional]
要接收縮減作業結果之緩衝區的指標。 此參數只有在根進程才重要。count [in]
要從這個進程傳送的專案數目。資料類型 [in]
緩衝區中每個專案的 MPI_Datatype 。 此參數必須與 op 參數中指定的作業相容。op [in]
MPI_Op控制碼,表示要執行的全域縮減作業。 控制碼可以指出內建或應用程式定義的作業。 如需預先定義的作業清單,請參閱 MPI_Op。comm [in]
MPI_Comm communicator 控制碼。
傳回值
傳回成功時 MPI_SUCCESS 。 否則,傳回值是錯誤碼。
在 Fortran 中,傳回值會儲存在 IERROR 參數中。
Fortran
MPI_ALLREDUCE(SENDBUF, RECVBUF, COUNT, DATATYPE, OP, COMM, IERROR)
<type> SENDBUF(*), RECVBUF(*)
INTEGER COUNT, DATATYPE, OP, COMM, IERROR
備註
如果 comm 是一個互動程式,則會將群組 A 中進程所提供的資料縮減結果儲存在群組 B 中的每個進程,反之亦然。 這兩個群組都應該提供指定相同類型簽章的 計數 和 資料類型 引數。
所有完成呼叫 (例如, MPI_Wait) 都支援非封鎖縮減作業。
規格需求
產品 |
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 |