1

MPIアプリケーションの次の単純なシナリオを考えてみましょう。ルートプロセスがいくつかのパラメータをブロードキャストし(MPI_Bcast)いくつかのパラメータ(数十バイト-固定サイズ)、次にすべてのノードがいくつかの計算の実行を開始し、ルートが結果を収集します(MPI_Gather-おそらく非常に大きなデータセット)。ルートによってデータが保存された後、プログラムは終了します。

どのような状況(プロセスの数、遅延など)(存在する場合)で、仮想スタートポロジを使用して作成されたコミュニケーターを使用すると、使用するよりも優れたパフォーマンスが得MPI_COMM_WORLDられますか?その理由は何ですか?コミュニケーターは実際のチャネルに遅延初期化を使用しますか(つまり、最初に必要になったときにのみ、パイプ、ソケットなどを開きます)。この動作の実装は依存していますか?

注:私はopenmpi1.4.3-2プレーンCを使用しています。

4

1 に答える 1

4

Communicator トポロジは便利なマッピング機能であり、実際の通信方法を変更する必要はありません。スターまたはその他のグラフ トポロジに (トポロジの意味で) 接続されていないプロセスがある場合でも、コミュニケータ内の他のプロセスのランクがわかっている場合、プロセスが互いにメッセージを送信することを妨げません。 . MPI 実装は、通信パスを最適化するためにトポロジをヒントとして使用する場合がありますが、これによりコードが非常に複雑になり、少なくとも Open MPI は集合アルゴリズムでそれを行いません (十分にテストされていないため、通常は集合コンポーネントを無効hierarchにすると、ハードウェア階層が考慮されますが、仮想トポロジは考慮されません)。

reorder=1トポロジーは、コミュニケーター コンストラクターに与えると、ランクの並べ替えを介して通信に影響を与える可能性があります。これにより、MPI 実装は、下にあるハードウェアの物理トポロジーを考慮して、コンストラクターに提供されたトポロジー スキームに物理的な配置を可能な限り一致させるために、プロセス ランクを自由に並べ替えることができます。集団操作専用のネットワークを備えたハードウェア プラットフォームがあります。たとえば、IBM Blue Gene/P には、高速実装を可能にするグローバル割り込みネットワークMPI_BARRIERと、一部の集合操作 (ブロードキャストを含む) を高速化する特殊な集合ネットワークがあります。ただし、これらはでのみ使用できますMPI_COMM_WORLD。フォールバック ソフトウェアの実装は、他のコミュニケーターに使用されます。

この動作は実装に依存していますか?

はい、実装システムに依存します (複数のハードウェア/通信システムをサポートする実装の場合)。そして、これはあなたの質問の残りの部分に対する答えでもあります。

于 2012-12-15T18:16:30.283 に答える