다음을 통해 공유


MPI_Recv 함수

수신 작업을 수행하고 일치하는 메시지를 받을 때까지 반환되지 않습니다.

구문

int MPIAPI MPI_Recv(
  _In_opt_ void         *buf,
           int          count,
           MPI_Datatype datatype,
           int          source,
           int          tag,
           MPI_Comm     comm,
  _Out_    MPI_Status   *status
);

매개 변수

  • buf [in, optional]
    보낼 데이터가 포함된 버퍼에 대한 포인터입니다.

  • count
    버퍼의 요소 수입니다. 메시지의 데이터 부분이 비어 있는 경우 count 매개 변수를 0으로 설정합니다.

  • datatype
    버퍼 배열에 있는 요소의 데이터 형식입니다.

  • source
    지정된 통신기 내에서 보내는 프로세스의 순위입니다. MPI_ANY_SOURCE 상수를 지정하여 모든 원본이 허용되도록 지정합니다.

  • 태그
    다양한 유형의 메시지를 구분하는 데 사용되는 메시지 태그입니다. 태그가 허용 가능함을 나타내려면 MPI_ANY_TAG 상수를 지정합니다.

  • 통신
    통신자에 대한 핸들입니다.

  • 상태 [out]
    반환할 때 수신된 메시지에 대한 정보가 저장되는 MPI_Status 구조체에 대한 포인터를 포함합니다.

반환 값

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

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

Fortran

    MPI_RECV(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, STATUS, IERROR)
        <type> BUF(*)
        INTEGER COUNT, DATATYPE, SOURCE, TAG, COMM, STATUS(MPI_STATUS_SIZE), IERROR

설명

수신된 메시지의 길이는 수신 버퍼의 길이보다 작거나 같아야 합니다. 들어오는 모든 데이터가 수신 버퍼에 맞지 않으면 이 함수는 오버플로 오류를 반환합니다.

수신된 메시지가 버퍼보다 짧은 경우 메시지에 해당하는 버퍼의 일부만 수정됩니다. 버퍼의 나머지 는 수정되지 않습니다.

프로세스는 자신에게 메시지를 보낼 수 있습니다. 그러나 이러한 차단 송신 및 수신 작업으로 인해 교착 상태가 발생할 수 있으므로 MPI_Send 및MPI_Recv 송신 및 수신 차단 작업으로 이 작업을 수행하는 것은 안전하지 않습니다.

참고

송신 작업과 수신 작업 사이에는 비대칭이 있습니다. 수신 작업은 임의 보낸 사람의 메시지를 수락할 수 있지만 보내기 작업은 고유한 수신자를 지정해야 합니다. 이는 데이터 전송이 수신자의 영향을 받는 끌어오기 스타일이 아니라 보낸 사람의 데이터 전송이 적용되는 푸시 통신 스타일을 구현합니다.

 

요구 사항

제품

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_Send

MPI_Irecv

MPI_Datatype

MPI_Comm

MPI_Status