MPI_Iprobe에서 메시지를 확인하려면 플래그를 여러 번 확인해야합니다. 한 가지 방법은 while 루프에 넣는 것입니다.이 방법이 MPI_Probe 기본적으로 다른 방식으로 검사를 차단하므로 Iprobe를 사용하는 잘못된 방법입니까?MPI_Iprobe 대 MPI_Probe 대
int flag=0
while(flag==0)
{
MPI_Iprobe(MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &flag,&status);
cout<<myrank<<" "<<flag<<endl;
}
if(flag)
{
MPI_Get_count(&status, MPI_INT, &count);
MPI_Irecv(&rcvbuff,count, MPI_INT,destination.at(0),0, MPI_COMM_WORLD, &request);
}
수신자가 크기를 알지 못해서 조사 할 필요가 없습니다. – BatiCode
@DrJ 크기를 알 필요는 없지만 최대 크기이면 충분합니다. 이후 코드에서'rcvbuff'을 할당하는 것을 보지 못했기 때문에, 크기를 알기 전에 완료했다고 가정했습니다. – Zulan
이것은 간단한 테스트 케이스에 불과합니다. 실제로 최대 크기를 모르는 이유는 계산에 따라 변경되기 때문에 유용한 설명을 주셔서 감사합니다. – BatiCode