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