2011-09-10 5 views
0

MPI_Irecv을 사용하여 MPI의 특정 호스트에서 데이터를 수신했습니다. 함수의 입력 매개 변수에 "소스 순위"을 사용하여 데이터를 수신 할 호스트를 정의해야합니다. 그러나 어떤 호스트가 데이터를 전송했는지는 중요하지 않으며 데이터를 가져 가고 싶습니다. 발신자 순위를 지정하지 않고 데이터를 가져 오는 방법은 무엇입니까?MPI의 모든 호스트에서 데이터 수신

나는 모든 "순위"를 조사하는 루프를 만들 수 있지만 보낸 사람이 데이터를 가질 수있는 훨씬 간단한 방법이 있습니까?

감사합니다.

+1

MPI_IRecv에 데이터를 보내기 위해 둘 이상의 순위를 허용합니까? 그렇지 않다면 MPI_ANY_SOURCE가 좋은 해결책입니다. 둘 이상의 등급이 전송할 수있는 경우, 검은 색 MPI_Send 호출로 중단 될 가능성이 있거나 일치하지 않는 MPI_Send가있는 경우 MPI_Finalize에서 오류가 발생할 수 있습니다. 비교할 수없는 MPI_Send/ISend 호출을 취소하려면주의를 기울여야합니다. 그렇지 않으면 MPI_Finalize에서 오류가 발생할 수 있습니다. –

+0

많은 호스트가 동시에 데이터를 보내려고하지 않습니다. 그러나 호기심,'MPI_Cancel'만으로도 취소 할 수 있습니까? – adba

+1

MPI_Cancel은 비교할 수없는 MPI_Send를 취소하기에 충분합니다. –

답변

3

다양한 recv/probe 기능에서 MPI_ANY_SOURCE 등급을 사용할 수 있습니다.

관련 문제