2011-09-10 5 views
0

MPI_Irecvを使用して、MPIの特定のホストからデータを受信しました。関数の入力パラメータに「ソースのランク」を使用することによって、データを受け取るホストを定義する必要があります。しかし、どのホストが私にデータを送ったかは重要ではなく、ただデータを取りたいだけです。送信者のランクを定義せずにデータを取得するにはどうすればよいですか?MPI内の任意のホストからデータを受信

私はすべての「ランク」をスキャンするループを作ることができると思いますが、送信者がどちらの場合でもデータを取ることができる簡単な方法はありますか?

ありがとうございます!

+1

MPI_IRecvに複数のランクでデータを送信しようとしますか?もしそうでなければ、MPI_ANY_SOURCEは良い解決策です。 2つ以上のランクが送信できる場合は、黒い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ランクを使用できます。

関連する問題