주 프로세스 (랭크 = 0)가 루트에서만 알 수있는 변수의 값을 요청하는 다른 프로세스의 요청을 수신 할 수 있어야하는 프로그램을 MPI에서 구현하고 있습니다 . MPI_Recv (...)를 순위 0으로 만들면 루트에 요청을 보내는 프로세스의 순위를 지정해야하지만 프로세스가 순서 1,2에서 실행되지 않으므로이를 제어 할 수 없습니다. 3, .... 계급에서 요청을 받고 방출 프로세스 번호를 사용하여 필요한 정보를 보내려면 어떻게해야합니까?알 수없는 출처의 MPI recv
24
A
답변
44
여기에는 C를 사용한다고 가정합니다. C++과 Fortran에도 비슷한 개념이 있습니다. MPI_recv()
에 MPI_ANY_SOURCE
을 출처로 지정하기 만하면됩니다. status 구조체는 메시지의 실제 소스를 포함합니다.
int buf[32];
MPI_Status status;
// receive message from any source
MPI_recv(buf, 32, MPI_INT, MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &status);
int replybuf[];
// send reply back to sender of the message received above
MPI_send(buf, 32, MPI_INT, status.MPI_SOURCE, tag, MPI_COMM_WORLD);
2
MPI_ANY_SOURCE가 분명한 답변입니다.
그러나 모든 순위가 0 등급 요청을 보내는 경우 MPI_Irecv와 MPI_Testall을 결합하면 패턴으로 작동 할 수도 있습니다. 이렇게하면 MPI_Send 호출이 어떤 순서로든 실행될 수 있으며 MPI_Irecv 호출이 일치하는 순서로 정보를 수신하고 처리 할 수 있습니다.
관련 문제
- 1. 알 수없는 필드가 MPI_status에 있음
- 2. 알 수없는 너비의 블록 요소에 알 수없는 너비의 블록 요소를 알 수없는 너비의 중심에 배치하려면 어떻게합니까?
- 3. 다른 출처의 이미지 표시
- 4. 동일한 출처의 의견 식별
- 5. 알 수없는 URL 콘텐츠 : 알 수없는 URL 콘텐츠 : \ com.mohit.provider.FormulaProvider \ 수식
- 6. 알 수없는 데이터 액세스
- 7. 알 수없는 참조 dlopen을
- 8. 알 수없는 개체 만들기
- 9. MySQL의 '알 수없는 열'오류
- 10. 알 수없는 수정 'L'오류
- 11. 알 수없는 이벤트 바인딩
- 12. 알 수없는 특성 동안
- 13. 알 수없는 성능 문제
- 14. DDB 알 수없는 파일
- 15. 콤보 선택은 알 수없는
- 16. 알 수없는 명령 dumpdata
- 17. Java 알 수없는 출력
- 18. 알 수없는 커서 번호
- 19. 알 수없는 조항
- 20. 알 수없는 입력 이름
- 21. 알 수없는 열
- 22. 알 수없는 요소는 클릭
- 23. 알 수없는 충돌 이유
- 24. 알 수없는 문자
- 25. 알 수없는 Asp.net 구문
- 26. UserPrincipal.GetGroups 알 수없는 오류
- 27. 알 수없는 오류 AS3
- 28. 알 수없는 열 오류가
- 29. SQLiteException 알 수없는 오류
- 30. "알 수없는 열 'user_id를'오류가
감사합니다. 나는 그것을 알지 못했지만 참으로 매우 유용했습니다. – shkk
편집을 사용하면 코드를 사용할 수 없게 된 것 같습니다. 'status' 구조체는 실제로'MPI_Send' 연산에 원본 메시지의 소스를 식별하기 위해 사용됩니다 :'status.MPI_SOURCE' – Marius
@ 마리우스 감사합니다. 원래 버전으로 롤백했습니다. 일을 더 분명하게해라. – KeithB