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 |