다음을 통해 공유


MPI_Allgatherv 함수

그룹의 각 멤버에서 가변적인 양의 데이터를 수집하고 그룹의 모든 멤버에게 데이터를 보냅니다. MPI_Allgatherv 함수는 모든 프로세스가 루트가 아닌 결과를 수신한다는 점을 제외하고 MPI_Gatherv 같습니다. jth프로세스에서 전송되는 데이터 블록은 모든 프로세스에서 수신되고 버퍼 recvbufj번째 블록에 배치됩니다. 이러한 블록이 모두 크기가 같을 필요는 없습니다.

구문

int MPIAPI MPI_Allgatherv(
  _In_  void         *sendbuf,
        int          sendcount,
        MPI_Datatype sendtype,
  _Out_ void         *recvbuf,
  _In_  int          *recvcounts,
  _In_  int          *displs,
        MPI_Datatype recvtype,
        MPI_Comm     comm
);

매개 변수

  • sendbuf [in]
    그룹의 모든 프로세스로 보낼 데이터에 대한 포인터입니다. 버퍼에 있는 요소의 수와 데이터 형식은 sendcountsendtype 매개 변수에 지정됩니다. 버퍼의 각 요소는 그룹의 프로세스에 해당합니다.

    comm 매개 변수가 통신 내를 참조하는 경우 모든 프로세스에서 MPI_IN_PLACE 지정하여 현재 위치 옵션을 지정할 수 있습니다. sendcountsendtype 매개 변수는 무시됩니다. 각 프로세스는 해당 수신 버퍼 요소에 데이터를 입력합니다. n번째 프로세스는 수신 버퍼의 n번째 요소로 데이터를 보냅니다.

  • sendcount
    이 프로세스가 sendbuf 매개 변수에 지정된 버퍼에서 보내는 데이터 요소의 수입니다. sendcount의 요소가 0이면 해당 프로세스의 메시지 데이터 부분이 비어 있습니다.

  • sendtype
    송신 버퍼에 있는 요소의 MPI 데이터 형식입니다.

  • recvbuf [out]
    각 프로세스에서 받은 데이터를 포함하는 버퍼에 대한 포인터입니다. 버퍼에 있는 요소의 수와 데이터 형식은 recvcountrecvtype 매개 변수에 지정됩니다.

  • recvcounts [in]
    수신 버퍼에 있는 각 통신기 프로세스의 데이터 요소 수입니다.

  • displs [in]
    각 통신기 프로세스의 데이터의 recvbuf 매개 변수를 기준으로 하는 위치입니다.

    recvbuf, recvcountsdispls 매개 변수 배열에서 각 배열의 n번째 요소는 n번째 통신기 프로세스에서 수신된 데이터를 참조합니다.

  • recvtype
    버퍼에 있는 각 요소의 MPI 데이터 형식입니다.

  • 통신
    MPI_Comm 통신기 핸들입니다.

반환 값

성공에 대한 MPI_SUCCESS 반환합니다. 그렇지 않으면 반환 값이 오류 코드입니다.

Fortran에서 반환 값은 IERROR 매개 변수에 저장됩니다.

Fortran

    MPI_ALLGATHERV(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNTS,DISPLS, RECVTYPE,COMM, IERROR)
        <type> SENDBUF(*), R.ECVBUF(*)
        INTEGER SENDCOUNT, SENDTYPE, RECVCOUNTS(*), DISPLS(*), RECVTYPE, COMM, IERROR

설명

MPI_Allgatherv 사용 규칙은 MPI_Gatherv 규칙에 해당합니다.

프로세스의 sendtype 매개 변수와 연결된 형식 서명은 다른 프로세스의 recvtype 매개 변수와 연결된 형식 서명과 같아야 합니다.

comm 매개 변수가 인트라 커미토리를 참조하는 MPI_Allgatherv(...)경우 에 대한 호출 결과는 모든 프로세스에서 에 대한 root = 0 , ..., n-1호출을 MPI_GatherV(sendbuf,sendcount,sendtype,recvbuf,recvcounts,displs,recvtype,root,comm)실행하는 것처럼 됩니다.

comm 매개 변수가 상호 통신기를 참조하는 경우 한 그룹의 각 프로세스(예: 그룹 A)는 sendcount 매개 변수에 지정된 데이터 항목 수를 기여합니다. 이 데이터는 연결되고 결과는 다른 그룹 B의 각 프로세스에 저장됩니다. 반대로 그룹 B에 있는 프로세스의 데이터 연결은 그룹 A의 각 프로세스에 저장됩니다. 그룹 A의 송신 버퍼 매개 변수는 그룹 B의 수신 버퍼 매개 변수와 일치해야 하며 그 반대의 경우도 마찬가지입니다.

요구 사항

제품

HPC 팩 2012 MS-MPI 재배포 가능 패키지, HPC 팩 2008 R2 MS-MPI 재배포 가능 패키지, HPC Pack 2008 MS-MPI 재배포 가능 패키지 또는 HPC 팩 2008 클라이언트 유틸리티

헤더

Mpi.h; Mpif.h

라이브러리

Msmpi.lib

DLL

Msmpi.dll

추가 정보

MPI 집합 함수

MPI_Gatherv

MPI_Datatype