slurm sコマンドを使用して複数の後続のmpirun
呼び出しを行うスクリプトを実行しています。への各呼び出しは、その出力を独自のディレクトリに書き込みますが、特定の実行が以前の実行出力ディレクトリからのデータを使用する方法で、それらの間に依存関係があります。squeue
mpirun
mpi プログラムは、何らかの収束基準が満たされた場合に終了する反復最適化アルゴリズムを内部的に実行します。時折、アルゴリズムがこれらの基準がまだ完全に満たされていない状態に達することがありますが、出力 (ディスクに継続的に書き込まれます) をプロットすることで、重要なことが収束したことを非常に簡単に知ることができます。さらに反復しても、最終結果の性質が変わることはありません。
したがって、私が探しているのは、制御された方法で実行を手動で終了し、外側のスクリプトを次のmpirun
呼び出しに進める方法です。これを達成するための最良の方法は何ですか?計算が実際に実行されるノードに直接アクセスすることはできませんが、もちろん、すべての slurms コマンドと個々の実行の作業ディレクトリにアクセスできます。mpi プログラムの完全なソース コードにアクセスできます。
動作する 1 つの解決策は次のとおりです。実行を手動で終了したい場合killme
は、作業ディレクトリなどに特別な名前のファイルを配置しますtouch killme
。mpi プログラムは定期的にこのファイルの存在をチェックし、存在する場合は制御された方法で終了します。ここでは外側のスクリプトまたはスラームはまったく関与せず、スクリプトは次のmpirun
呼び出しを続行します。この解決策についてどう思いますか? もっと良いものを考えられますか?