3

Python の dmtcp の統合を使用して、並列実行で子プロセスをチェックポイントすることは可能ですか?

私の状況は次のとおりです。複数のワーカーが (apply_async を使用して) 非同期ジョブを受け取るmultiprocessing.Poolがあります。特定の大きなジョブは、すべてのリソース (CPU コアとメモリ) を必要とします。これらのジョブの 1 つが受け入れられたら、保留中のすべてのプロセスをチェックポイントし、実行を追い出し、大きなジョブを起動し、最後にチェックポイントされたプロセスを再開したいと考えています。

4

1 に答える 1

0

dmtcp_launch python ...またはを使用して Python プログラムを開始するとdmtcp_launch ./myapp.py、メイン プロセスによって作成されたすべての子プロセスは、自動的にチェックポイント制御下に置かれます。したがって、メイン プロセス内から計算にチェックポイントを設定しようとすると、他のすべてのプロセスにもチェックポイントが設定されます。

私は multiprocessing.Pool にあまり詳しくなく、その面で詳細なコメントをすることはできませんが、私が 1 分で理解したところによると、メイン プロセス (スケジューラ) にチェックポイントを設定する必要はありません。ただし、DMTCP は、計算全体 (スケジューラーを含む) を 1 つの単位としてチェックポイント再始動します。それは受け入れられますか?そうでない場合は、代わりに DMTCP 制御下でスケジューラを起動せず、チェックポイント制御下で子/スレーブ プロセスのみを起動するようにスケジューラを変更します。それがあなたのアプリケーションでできることかどうかはわかりません。

于 2015-02-24T17:25:39.953 に答える