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]
그룹의 모든 프로세스로 보낼 데이터에 대한 포인터입니다. 버퍼에 있는 요소의 수와 데이터 형식은 count 및 datatype 매개 변수에 지정됩니다.comm 매개 변수가 통신 내를 참조하는 경우 모든 프로세스에서 MPI_IN_PLACE 지정하여 현재 위치 옵션을 지정할 수 있습니다. 이 경우 입력 데이터는 수신 버퍼의 각 프로세스에서 가져와 출력 데이터로 대체됩니다.
recvbuf [out, optional]
감소 작업의 결과를 받을 버퍼에 대한 포인터입니다.count [in]
이 프로세스에서 보낼 요소의 수입니다.datatype [in]
버퍼에 있는 각 요소의 데이터 형식입니다. 이 매개 변수는 op 매개 변수에 지정된 작업과 호환되어야 합니다.op [in]
수행할 전역 감소 작업입니다. 핸들은 기본 제공 또는 애플리케이션 정의 작업을 나타낼 수 있습니다. 미리 정의된 작업 목록은 MPI_Op 참조하세요.comm [in]
MPI_Comm 통신기 핸들입니다.request [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 |