2012-03-15 4 views
5

특정 태그가있는 메시지를받는 순위 중 하나에 메시지를 보내려고합니다. 순위가 있으면 메시지를 수신하고 메시지가 소비됩니다. MPI_Recv()에서 MPI_ANY_SOURCE/MPI_ANY_TAG를 사용하여 메시지를받을 수 있지만 MPI_Send()는이를 수행 할 수 없습니다. 알 수없는 목적지의 메시지를 보내려면 어떻게해야합니까? MPI_Bcast()는 수신 후 소스 프로세스에 응답해야하므로 수행 할 수 없습니다. 감사합니다. .MPI에서 특정 대상없이 메시지를 보내는 방법은 무엇입니까?

+0

리시버가 필요한 데이터를 알고 있다면, MPI 작업 인 'MPI_Get'을 사용할 수 있습니다. –

+1

이 질문은 http://scicomp.stackexchange.com에서 정말 잘 받았습니다. –

답변

4

내가 할 수있는 것은 작업자 프로세스가 신호를받을 준비가되었음을 마스터에게 알려주는 것입니다. 마스터는 어떤 등급이 준비되었는지를 추적하고, 하나를 선택하고 (가장 낮은 순위, 우선 순위, 랜덤, 라운드 로빈 등), 보내고 "준비 완료"플래그를 지 웁니다.

1

메시지를 임의의 순위로 보내시겠습니까?

1

짧은 대답은 MPI에서 할 수 없다는 것입니다.

약간 더 긴 대답은 다음과 같습니다. 아마도 원하지 않을 것입니다. 나는 당신이 일종의 일자리를 구하려고 노력하고 있다고 생각합니다. suszterpatt가 제안한 것처럼 일방적 인 의사 소통을 사용하여 보내는 프로세스에서 작업을 가져올 수 있지만 자물쇠를 사용해야하며 로컬 프로세스 그룹에 대한 아이디어가없는 한 많은 프로세스에서 잘 확장되지 않습니다 (즉, 1,000 개의 프로세스를 하나의 프로세스에서 모두 도용 할 수는 없으므로 상황을 분석해야합니다.

관련 문제