0

私は現在、より大きなプロジェクトの一部として小さなユーティリティライブラリを構築しています。OpenMPIには十分に文書化されたAPIライブラリがありますが、ノード間の低レベルの通信に関しては少し戸惑っています。アルゴリズムを作成するときは、残りのノードと通信し、「グローバル」MPIランク(アルゴリズムで定義されている)に基づいてアルゴリズムの一部を実行し、すべてのノードと通信する計算を行うことが期待されるすべてのノードにアルゴリズムを分散します。ノードは前後に同期します。ただし、グローバルを引用符で囲んだ理由は、openMPIがIPレベルで通信するため、実行アルゴリズムがすでに長いと言いますが、MPIを実行すると、アイドリング状態で、MPIプロセスを実行していないノードがあります。その上のアルゴリズム、MPI_COMM_WORLDに参加して、ネットワークトポロジ全体の一部になるのでしょうか、それとも、そのノードをMPI_COMM_WORLDの一部にするために必要な「ブードゥー」がありますか。また、ノードがその特定のアルゴリズムのMPI_COMM_WORLDの一部になることができる場合、この新しいノードを登録/識別するにはどうすればよいですか?

読書の参考文献も役に立ちます。

どうもありがとう!

tl; dr MPIノードはMPI_COMM_WORLDからホットスワップ可能ですか?

4

1 に答える 1

3

コミュニケーターが作成されると、ノードをコミュニケーターに参加させることはできません。MPI_COMM_WORLDこれは、作成済みのコミュニケーターにすぎない場合にも当てはまります。最初の SPMD 起動の一部として起動されるプロセスのみが の一部になりMPI_COMM_WORLDます。ただし、現在の MPI 標準バージョン 2.2 の第 10 章で説明されているように、MPI-2 プロセス管理機能を使用して追加のプロセスを生成できます。

新しくスポーンされたプロセスには独自のプロセスがあり、最初のグループのプロセスは、スポーン操作によって返される特別なインターコミュニケーター( is intracommunicatorMPI_COMM_WORLD ) を介してのみ通信できます。プロセスのスポーンは集合的な操作であるため、すべてのプロセスがそのインターコミュニエーターへのハンドルを取得します。MPI_COMM_WORLDMPI_COMM_WORLD

MPI 3.0 (遅かれ早かれリリースされた場合) はフォールスルー フォールト トレランスをもたらし、障害のあるプロセスをMPI_COMM_WORLD(または他のコミュニケーターから) 除外/削除できるようになり、MPI 3.1 は最終的に、障害のあるプロセスを置き換えることができるものをもたらすでしょう。

于 2012-05-24T16:57:14.187 に答える