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