ウィキペディアを引用すると、チェックポイントは「基本的に、現在のアプリケーション状態のスナップショットを保存することで構成され、後で、失敗した場合に実行を再開するためにそれを使用します。」
C++科学アプリケーション (私たちが作成したもの)をチェックポイントして再開する必要があります。プログラムはシングルスレッドであり、実行中の他のアプリケーションに依存しません。GUI、ネットワーク、パイプ、フォークなどはありません。実行するのは計算とファイル I/O だけです。
Linux では、DMTCPは私にとって完璧に機能します。ソースコードの変更や再リンクも必要ありません。BLCR と Condor は、Linux でもチェックポイントをサポートしています。
近い将来、このアプリケーションを Windows で実行する必要があります。Windows 用のチェックポイント ライブラリが見つかりませんでした。原則として、リクエストに応じてその状態をディスクにダンプし、次回の実行時にデータをリロードするように、アプリケーションを変更できます。ただし、アプリケーションが複雑なため、シリアライゼーション ライブラリの助けを借りても、これには多くの労力が必要です。
では、Windows に C/C++ チェックポイント ライブラリはありますか? ライブラリのコードを変更する必要がある場合は、まったく問題ありません。理想的には、ライブラリは、コードの特定のポイントで状態を保存できるだけでなく、要求に応じて(たとえば、シグナル/メッセージを送信することによって) チェックポイントできるようにします。
(チェックポイントは一般的に不可能であるという同様の質問を知っています。ただし、私の場合は可能であり、Linuxで常に実行してきました。)