0
MPI_Irecv
を使用して、MPIの特定のホストからデータを受信しました。関数の入力パラメータに「ソースのランク」を使用することによって、データを受け取るホストを定義する必要があります。しかし、どのホストが私にデータを送ったかは重要ではなく、ただデータを取りたいだけです。送信者のランクを定義せずにデータを取得するにはどうすればよいですか?MPI内の任意のホストからデータを受信
私はすべての「ランク」をスキャンするループを作ることができると思いますが、送信者がどちらの場合でもデータを取ることができる簡単な方法はありますか?
ありがとうございます!
MPI_IRecvに複数のランクでデータを送信しようとしますか?もしそうでなければ、MPI_ANY_SOURCEは良い解決策です。 2つ以上のランクが送信できる場合は、黒いMPI_Send呼び出しでハングする可能性があります。一致しないMPI_Sendがある場合は、MPI_Finalizeでエラーが発生します。不一致のMPI_Send/ISend呼び出しをキャンセルするように注意する必要があります。また、MPI_Finalizeでエラーが発生する可能性があります。 –
多くのホストは、同時にデータを送信しようとしません。しかし、好奇心だけ、 'MPI_Cancel'はキャンセルするのに十分ですか? – adba
MPI_Cancelは、比類のないMPI_Sendをキャンセルするのに十分です。 –