MPI_Send
を開始する前に、(特定の送信元とタグの)非ブロック受信が送信されているかどうかを確認する方法はありますか?私は、送信者と受信者の両方が、誰が彼らとやりとりしたいのか分からない状況があります。私の考えは最初にすべての選択された受信者にオープンIrecv
を投稿することでした。送信者は、特定のランクが受信を送信したかどうかをチェックし、真の場合のみ送信します(そうでない場合は続行します)。すべての送信が成功した後、受信者は未処理のIrecv
を取り消します。MPIで "ハンドシェイク"を確認しますか?
これは、現在、集合ブロードキャスト(
MPI_COMM_WORLD
)の配列ブロードキャストで動作します。私は別の方法があるかどうか疑問に思っていますMPI_Isend
とMPI_Probe
と私はこれを逆にすることができると思います。この場合、私は未受信の送信バッファに何が起こるか心配です(そして送信のためにMPI_Cancel
は悪いニュースであることを聞いたことがある)ものの任意の提案のための
感謝。
MPIではこのようなオプションは提供されていません。片面通信とも呼ばれるMPI RMAを使用することができます。 –