다음을 통해 공유


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]
    이 프로세스에서 보낼 요소의 수입니다.

  • datatype [in]
    sendbuf에 있는 각 요소의 데이터 형식을 나타내는 MPI_Datatype 핸들입니다.

  • op [in]
    수행할 전역 감소 작업을 나타내는 MPI_Op 핸들입니다. 핸들은 기본 제공 또는 애플리케이션 정의 작업을 나타낼 수 있습니다. 미리 정의된 작업 목록은 MPI_Op 항목을 참조하세요.

  • root [in]
    MPI_Commcomm 내의 수신 프로세스의 순위입니다.

  • comm [in]
    MPI_Comm 통신기 핸들입니다.

  • request [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