2

mpiexec で実行されるプログラム A があります。このプログラムは通常、並列で実行されますが、実行パターンの 1 つでは、同じく MPI 対応の外部プログラム B を呼び出す場合があります。もちろん、B がシリアルとして呼び出された場合、A のすべてのインスタンスは B の 1 つのインスタンスを呼び出すことになります。並列に呼び出された場合、A のすべてのインスタンスが並列 B を呼び出します。

考えられる解決策の 1 つは、A のマスター ノードに並列の B を呼び出して、他の A のプロセスをアイドル状態のままにすることですが、もちろん、A のユーザー コマンド ライン呼び出し (PBS の相互作用などの癖を含む) から mpiexec オプションを引き継ぐ必要があります。内側の B 呼び出し。これは私が考える限りでは些細なことではなく、さまざまな MPI 実装 (MPICH と Open MPI など) を適切に扱っているわけでもありません。

この種の問題を経験した人はいますか?

4

2 に答える 2

-2

それが可能かどうかは問題ではありません - それはひどい考えです。他の人が指摘したように、MPI_Comm_spawn(_multiple) を使用します。

そして、この使用法が機能せず、移植性がないネットワークが少なくともいくつかあると思います。

于 2014-09-15T23:18:49.440 に答える