당신의 질문은 말할 수 없지만 당신이 C++에서 일한다고 가정 할 것입니다. 어쨌든 MPI_Send의 인수를 살펴 보겠습니다. 두 번째 인수는 보낼 데이터 항목 수를 지정합니다. 이 호출은 "buf
은 count
개의 숫자가있는 메모리의 한 지점을 가리키며, 모두가 datatype
인 형식으로 하나씩 보내면됩니다.
int values[10];
for (int i=0; i<10; i++)
values[i] = i;
MPI_Send(values, 10, MPI_INTEGER, 1, 0, MPI_COMM_WORLD);
이 values
의 시작 부분에 메모리를 읽기 시작, 10 개 MPI_INTEGER
의 읽을 때까지 계속 읽어 것이다 : 이것은 당신이 이런 식으로, 전체 배열의 내용을 보낼 수 있습니다.
int values[40];
for (int i=0; i<40; i++)
values[i] = i;
for (int i=1; i<4; i++) // start at rank 1: don't send to ourselves
MPI_Send(values+10*i, 10, MPI_INTEGER, i, 0, MPI_COMM_WORLD);
그러나,이 MPI는 그것을 그 자신의 기능을 제공합니다 분산 컴퓨팅에서 같은 일반적인 작업을, MPI_Scatter입니다 : 프로세스 사이의 숫자를 배포 사건에 대한
, 이것은 당신이 MPI_Send 함께 할 방법입니다 . Scatter는 원하는 것을 정확히 수행합니다. 하나의 배열을 호출하고이를 호출하는 모든 프로세스간에 균등하게 분할합니다. 이것은 약간 고급 주제 인
collective communication 콜입니다. 따라서 MPI를 배우는 것만으로도 MPI_Send 및 MPI_Recv를 사용하기가 편할 때까지 자유롭게 건너 뛸 수 있습니다.