0

MPI を使用する 1.exe と 2.exe の 2 つのプログラムがあります。mpirun を使用して 1.exe を起動し、次に 2.exe を呼び出して、それが完了するのを待ってから続行したいと考えています。プログラム間で通信する必要はありませんが、2.exe によって生成されたファイルを読み取り、この出力を処理するだけです。起動すると、2.exe は 1.exe に割り当てられていたすべてのプロセッサを使用する必要があります。これは待機しているためです。1.exe 内から 2.exe を呼び出す良い方法はありますか?

MPI_Comm_Spawn を試してみましたが、2.exe が終了するのを待つために、1.exe と 2.exe の間に相互通信を設定する必要があるようです。ただし、このコミュニケーターをセットアップするための 2.exe のソースにアクセスできません。

4

1 に答える 1

0

私は間違っているかもしれませんが、mpirun が 1.exe の n インスタンスを起動したとします。各インスタンスは 2.exe の 1 つのインスタンスを生成して、ジョブを実行するように要求する可能性があります (コマンド ライン パラメーター、環境変数、または 2.exe が通常使用するその他のメカニズムを介して)。何をすべきかを知っている)、このインスタンスは 1.exe のインスタンスに割り当てられたプロセッサを使用します。

次に、1.exe は 2.exe が終了するのを待つ必要があります。たとえば、waitpid : http://linux.die.net/man/3/waitを使用するか、2.exe によって生成されたファイルを監視します。

重要なことは、1.exe はアクティブではないため、そのリソースを消費せず、2.exe が完全に使用できるようにすることです。

于 2013-01-13T14:30:02.183 に答える