에서 데이터를 수집하고 그룹의 모든 멤버에 데이터를 분산합니다. MPI_AlltoallMPI_Allgather 함수의 확장입니다. 각 프로세스는 각 수신기에 고유한 데이터를 보냅니다. 프로세스에서 전송되는 j번째 블록은 프로세스j 에 의해 수신되고 수신 버퍼의 i번째 블록에 배치됩니다.
구문
int MPIAPI MPI_Alltoall(
_In_ void *sendbuf,
int sendcount,
MPI_Datatype sendtype,
_Out_ void *recvbuf,
int recvcount,
MPI_Datatype recvtype,
MPI_Comm comm
);
매개 변수
sendbuf [in]
그룹의 모든 프로세스로 보낼 데이터에 대한 포인터입니다. 버퍼에 있는 요소의 수와 데이터 형식은 sendcount 및 sendtype 매개 변수에 지정됩니다.comm 매개 변수가 통신 내를 참조하는 경우 모든 프로세스에서 MPI_IN_PLACE 지정하여 현재 위치 옵션을 지정할 수 있습니다. sendcount 및 sendtype 매개 변수는 무시됩니다. 각 프로세스는 해당 수신 버퍼 요소에 데이터를 입력합니다. n번째 프로세스는 수신 버퍼의 n번째 요소로 데이터를 보냅니다.
sendcount
sendbuf 매개 변수에 지정된 버퍼의 요소 수입니다. sendcount가 0이면 메시지의 데이터 부분이 비어 있습니다.sendtype
송신 버퍼에 있는 요소의 MPI 데이터 형식입니다.recvbuf [out]
각 프로세스에서 받은 데이터를 포함하는 버퍼에 대한 포인터입니다. 버퍼에 있는 요소의 수와 데이터 형식은 recvcount 및 recvtype 매개 변수에 지정됩니다.recvcount
수신 버퍼의 요소 수입니다. 개수가 0이면 메시지의 데이터 부분이 비어 있습니다.recvtype
수신 버퍼에 있는 요소의 MPI 데이터 형식입니다.통신
MPI_Comm 커뮤니케이터 핸들입니다.
반환 값
성공에 대한 MPI_SUCCESS 반환합니다. 그렇지 않으면 반환 값이 오류 코드입니다.
Fortran에서 반환 값은 IERROR 매개 변수에 저장됩니다.
Fortran
MPI_ALLTOALL(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE,
COMM, IERROR)
<type> SENDBUF(*), R.ECVBUF(*)
INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, COMM, IERROR
설명
모든 매개 변수는 모든 프로세스에서 중요합니다. comm 매개 변수는 모든 프로세스에서 동일해야 합니다.
sendcount로 지정된 형식 서명과 프로세스에 대한 sendtype 매개 변수는 recvcount 및 recvtype 매개 변수로 지정된 형식 서명과 같아야 합니다. 따라서 전송되는 데이터의 양은 프로세스 쌍 간에 수신되는 데이터 양과 같아야 합니다. 발신자와 수신자 간의 고유 형식 맵은 여전히 허용됩니다.
comm 매개 변수가 통신 내를 참조하는 MPI_ALLGATHER(...) 경우 에 대한 호출 결과는 각 프로세스가 를 사용하여 를 사용하고 를 사용하여 MPI_Send(sendbuf + i*sendcount*extent(sendtype), sendcount, sendtype, I, …)MPI_Recv(recvbuf + i*recvcount*extent(recvtype), recvcount, recvtype, I, …)다른 모든 프로세스에서 를 수신하여 각 프로세스에 대한 보내기를 실행한 것과 같습니다.
comm 매개 변수가 상호 통신자를 참조하는 경우 결과는 그룹 A의 각 프로세스가 그룹 B의 각 프로세스에 메시지를 보내는 것처럼 되며 그 반대의 경우도 마찬가지입니다. 그룹 A에 있는 프로세스 i의 j번째 송신 버퍼는 그룹 B에서 프로세스 j의 i번째 수신 버퍼와 일치해야 하며 그 반대의 경우도 마찬가지입니다.
그룹 A의 프로세스에서 보낸 항목의 수는 그룹 B의 프로세스에서 보낸 항목 수와 같을 필요가 없습니다. 특히 통신의 sendcount == 0을 역방향으로 지정하여 데이터를 한 방향으로만 이동할 수 있습니다.
요구 사항
제품 |
HPC Pack 2012 MS-MPI 재배포 가능 패키지, HPC Pack 2008 R2 MS-MPI 재배포 가능 패키지, HPC Pack 2008 MS-MPI 재배포 가능 패키지 또는 HPC Pack 2008 클라이언트 유틸리티 |
헤더 |
Mpi.h; Mpif.h |
라이브러리 |
Msmpi.lib |
DLL |
Msmpi.dll |