MPIアプリケーションの次の単純なシナリオを考えてみましょう。ルートプロセスがいくつかのパラメータをブロードキャストし(MPI_Bcast
)いくつかのパラメータ(数十バイト-固定サイズ)、次にすべてのノードがいくつかの計算の実行を開始し、ルートが結果を収集します(MPI_Gather
-おそらく非常に大きなデータセット)。ルートによってデータが保存された後、プログラムは終了します。
どのような状況(プロセスの数、遅延など)(存在する場合)で、仮想スタートポロジを使用して作成されたコミュニケーターを使用すると、使用するよりも優れたパフォーマンスが得MPI_COMM_WORLD
られますか?その理由は何ですか?コミュニケーターは実際のチャネルに遅延初期化を使用しますか(つまり、最初に必要になったときにのみ、パイプ、ソケットなどを開きます)。この動作の実装は依存していますか?
注:私はopenmpi1.4.3-2
プレーンCを使用しています。