0
私はdouble A
とint B
の2つの配列をMPIでブロードキャスト(私はC++を使用しています)を使って送りたいと思います。通常、リーダーの場合はcommunicator.Bcast
がブロックされますが、ライターの場合はブロックされません。だから、私がした場合:2つのMPIブロードキャストが次々と
communicator.Bcast(A, a_len, ...)
communicator.Bcast(B, b_len, ...)
いくつかのプロセスが最初に2番目のメッセージを取得し、ものが混乱することが起こる可能性があります。
私はこの問題の良い、清潔な解決策は何でしょうか?派生データ型/ MPI_Packを使うべきですか?それは醜いようです。どういうわけか放送でTAGの使用を強制することはできますか?
集合コールのシーケンスがすべてのランクで同じである限り、保証があることに言及することは重要です。それ以外の場合、動作は未定義です。 –