2011-03-01 5 views
8

그럼, 내가MPI_Recv - 카운트를 결정하는 방법?

for(temp=0; temp<20; temp++) 
    i[temp] = temp; 
MPI_Send(i, 15, MPI_INT, 1, 1, MPI_COMM_WORLD); 

이 나는 ​​순위 0 2 개 프로세스, 순위 0 순위 과정에서 1

int i[20], j[20], temp, size; 

과 MPI 프로그램이 있다고 가정하자의 다음 순위 1 과정을 가정 해 봅시다 않습니다

// At this point, size is declared, but not assigned any value. 
MPI_Recv(j,size, MPI_INT, 0, 1, MPI_COMM_WORLD): 
cout << "I have received " << size << " elements" ; 

제 질문은 위의 문장에서 "크기"를 선언해야합니까? 또는 MPI_Recv가 15 개 요소를 받고 있음을 어떻게 든 "알고"있으며 자동으로 크기를 15로 설정합니까? 크기가 정의되어 있지 않으면 코드는 어떻게됩니까?

기본적으로 내 질문은 다른 순위의 프로세서에 다른 수의 요소를 보내고 모든 메시지의 순위는 0입니다. 먼저 크기를 보내야하는지 알기를 원합니다. 그 많은 요소를 받거나 배열을 보내면 프로세스가 자동으로 크기를 선택합니다. MPI_Recv에 대한 문서에서

답변

14

봐 :

입력 매개 변수의 요소 최대 수는 수신 버퍼

수 (정수)

그래서 그래, 당신은 필요합니까 값을 전달하십시오. 수신중인 요소의 실제 수는 아니지만 버퍼가 보유 할 수있는 최대 요소 수만 필요합니다. 귀하의 경우에는, 당신은 또한 수신 된 요소의 실제 번호를 확인하는 방법에 대해 언급 (20) 노트 섹션을 전달해야

count 인수는 메시지의 최대 길이를 나타냅니다를; 실제 수는 MPI_Get_count으로 결정될 수 있습니다.

관련 문제