这里会显示出您选择的修订版和当前版本之间的差别。
后一修订版 | 前一修订版 | ||
atk:计算中止如何重启 [2017/02/22 21:07] – 创建 dong.dong | atk:计算中止如何重启 [2019/06/30 15:43] (当前版本) – [参考] xie.congwei | ||
---|---|---|---|
行 1: | 行 1: | ||
====== 计算中止如何重启 ====== | ====== 计算中止如何重启 ====== | ||
- | 本教程解释如何重启(继续)尚未收敛中止的计算。计算中止可能有多种原因,例如断电、超出队列时间、超出收敛的最大步骤等等。 | + | **版本:** |
- | ===== 保存Checkpoint文件 ===== | + | 在本教程中,您将学习如何重新启动在收敛之前终止了的计算(例如,由于断电、超过队列中的挂起时间或超过最大迭代次数的原因)而无需从头开始。 |
- | ==== 指定Checkpoint文件位置 ==== | ||
- | ===== 由Checkpoint文件重启计算 | + | {{ : |
+ | ===== 保存检查点文件 ===== | ||
- | ==== 重启原始脚本 ==== | + | 例如由于断电或队列中作业运行超过分配时间,在收敛之前计算终止的情况可能会发生。也有可能是由在设置的最大迭代步数之内未达到收敛导致的。在这些情况下,您将想要从停止的位置重新启动作业。 |
- | ==== 重启几何结构优化 ==== | + | 为此,QuantumATK 会定期将计算的当前状态保存到**检查点文件**中。默认设置是每 30 分钟保存一次。检查点文件的名称始终写在日志文件中。 |
- | ===== 参考 ===== | + | <code python> |
+ | +------------------------------------------------------------------------------+ | ||
+ | | Checkpoint Handler | ||
+ | | Filename : / | ||
+ | | Interval : 0.5 h | | ||
+ | +------------------------------------------------------------------------------+ | ||
- | | + | |--------------------------------------------------| |
+ | Calculating Eigenvalues | ||
+ | Calculating Density Matrix : ================================================== | ||
+ | |||
+ | +------------------------------------------------------------------------------+ | ||
+ | | Density Matrix Report | ||
+ | +------------------------------------------------------------------------------+ | ||
+ | | | ||
+ | </ | ||
+ | |||
+ | |||
+ | <WRAP center important 100%> | ||
+ | === 注意 === | ||
+ | 检查点文件的默认位置在由环境变量 TEMP 指定的目录中。如果您在大型集群上运行,则可能无权写入 TEMP 目录,即使您写入了,也可能会在作业完成时自动删除您在此目录创建的任何文件--即使 QuantumATK 计算没有收敛。在这种情况下,重要的是手动指定检查点文件的位置,如在您的 HOME 目录中。 | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== 指定检查点文件的位置 | ||
+ | |||
+ | 下图展示了怎样通过 QuantumATK {{:atk: | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | 如果您需要,可以参考 <color # | ||
+ | |||
+ | |||
+ | |||
+ | ===== 从检查点文件重启计算 ===== | ||
+ | |||
+ | |||
+ | 从检查点文件重启计算的最快方法是从检查点文件读取结构,然后在结构上调用 update。 | ||
+ | |||
+ | <code python> | ||
+ | configuration = nlread(" | ||
+ | configuration.update() | ||
+ | nlsave(" | ||
+ | </code> | ||
+ | |||
+ | '' | ||
+ | |||
+ | 这种方法的缺点是,如果//原始// | ||
+ | ==== 重启初始脚本 ==== | ||
+ | |||
+ | 从概念上讲,更好的方法是重新运行已有的脚本,但要告诉它不是从头开始,而是从检查点文件开始。这也将保留原始脚本中定义的所有分析模块。这种想法是可行的,您只需要以适当的方式插入上面显示的代码行。 | ||
+ | |||
+ | 让我们假设你有一个由脚本生成器生成的 “标准” 脚本,没有太多复杂的步骤。也就是说,一个具有简单序列的 “Configuration” 和 “New Calculator”,然后是分析模块。在其他情况下,您始终可以按照与此处所述相同的方式修改脚本,但您必须更加谨慎地保留逻辑。如果脚本包含 {{: | ||
+ | | ||
+ | |||
+ | 打开 {{: | ||
+ | |||
+ | <code python> | ||
+ | device_configuration.update() | ||
+ | </ | ||
+ | |||
+ | <WRAP center tip 100%> | ||
+ | === 提示 === | ||
+ | 对于块体和分子的计算,变量将会被名为 '' | ||
+ | </ | ||
+ | |||
+ | |||
+ | 然后在上述代码行之前添加以下这行: | ||
+ | |||
+ | <code python> | ||
+ | device_configuration = nlread(" | ||
+ | </ | ||
+ | |||
+ | 再次地,'' | ||
+ | |||
+ | 现在您可以重新运行脚本。 | ||
+ | |||
+ | |||
+ | <WRAP center important 100%> | ||
+ | === 注意 === | ||
+ | * 检查点文件不是以指定的时间间隔准确写入,而是仅在完成自洽循环中的步骤并且经过要求的时间间隔时才写入。 | ||
+ | * 自洽循环的历史记录不会写入检查点文件。因此,重新启动时收敛可能变得更加困难,因为混合算法比正常情况含有更少信息。 | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== 重启结构优化 ==== | ||
+ | |||
+ | |||
+ | 重新启动几何优化要更复杂。因此,对于长时间的弛豫,使用轨迹文件总是一个好主意;如果计算中断,您可以取出一些后面的结构,并使用此几何构型作为起点设置新的优化。然而请注意,QuasiNewton 几何优化中的一些结构是 “test balloons”,其可以对应非常大的应力(即,非常糟糕的猜测),尤其是在前 5-10 步期间。因此,选择不具有太大应力的结构很重要。 | ||
+ | ===== 参考 ===== | ||
+ | * 英文原文:https:// |