CREST 3.0检查点与中断恢复
保留原目录,识别3.0.2二进制检查点,使用相同计算设置恢复批量优化。
阅读本篇目录
计算中断后,先保留整个原工作目录,再判断所用工作流保存了哪些状态。集群的 CREST 3.0.2 使用旧二进制 crest.restart;不要按 CREST 3.1 教程中的文本格式编辑它。
1. 用小例认识恢复流程#
下载批量处理与恢复资料包。提交包内 job.slurm,或在已分配的 CPU 作业内运行 bash run.sh。程序把四条乙醇记录重复十次,让一个短计算阶段有机会被中断;这仍是同一批结构,不是 40 种不同构象。
程序只中断自己创建的测试子进程,先保存完整检查点和原文件,再恢复计算。结果位于 cases/recovery:
ls cases/recovery/interrupted-snapshot
cat cases/recovery/RESTART-EXECUTION.json
interrupted-snapshot 是中断时的原文件副本;interrupted.out 和 resumed.out 分开记录前后两段输出,crest_ensemble.xyz 是恢复后的结果。
2. 自己的任务中断后先做什么#
先复制或备份整个计算目录,保留原始 XYZ、输入集合、TOML、隐藏文件和 crest.restart。不要只拷贝一个检查点,也不要覆盖原日志。恢复时继续使用同一 CREST 版本、相同结构顺序、同一方法、电荷、自旋及全部算法设置。
本例恢复输入等于原 input.toml 加一行顶层设置:
restart = true
input = "ethanol.xyz"
input_ensemble = "ensemble.xyz"
runtype = "ancopt_ensemble"
threads = 1
[calculation]
elog = "energies.log"
optlev = "extreme"
[[calculation.level]]
method = "gfn2"
chrg = 0
uhf = 0
accuracy = 0.01
这行要放在第一个 TOML 表段之前。在保留了对应检查点和原文件的目录运行 crest restart.toml > resumed.out 2>&1。日志会出现 READING crest.restart、目标恢复阶段及原任务信息;完整结束后仍要检查结果条数和结构。
3. 查看这个例子恢复了什么#
sed -n '/READING crest.restart/,/FINISHED READING/p' cases/recovery/resumed.out
cat results/batch-data.csv
本例恢复后输出 40 条结构,逐条与同条件批量优化结果对应;结构、能量和记录顺序均可对照。图右的六组完整梯度来自四条优化记录和两条筛选记录。

这个机制按工作阶段恢复,未完成阶段可能重新执行。它不表示从任意一步精确续接分子动力学轨迹,也不保证恢复随机数或所有外部程序的内部状态。
4. 避免混用不同恢复方式#
批量优化的旧二进制检查点、分子动力学的坐标速度重启文件、QCG 的 grow/ensemble 目录恢复,各有自己的输入要求。先确认工作流再操作,不要混用文件或随意修改溶剂数量。新版 3.1 的轻量文本检查点也不能替代本例的 3.0.2 文件。
本篇先演示已经实际跑通的批量优化恢复。完整输入与绘图步骤见批量单点、优化与筛选;版本实现可查阅官方3.0.2重启源码,新版恢复说明明确对应3.1。