这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
atk:高效运行quantumatk [2023/07/29 09:20] – fermi | atk:高效运行quantumatk [2024/02/23 15:43] (当前版本) – [内存错误] fermi | ||
---|---|---|---|
行 1: | 行 1: | ||
====== 高效运行QuantumATK ====== | ====== 高效运行QuantumATK ====== | ||
- | QuantumATK是成熟的软件平台,运行出现意外错误的情况很少,最常见的是内存和进程错误。 | + | QuantumATK是成熟的软件平台,运行出现意外错误的情况很少,最常见的是内存和进程错误,这种错误一般出现在块体 DFT(或器件 DFT-NEGF)计算时发生异常终止,log文件没有错误信息或者有如下类似的错误信息: |
+ | {{ : | ||
+ | 这种错误信息表明进程被外部终止。 | ||
- | | + | ===== 进程错误 ===== |
+ | |||
+ | 此时,意外终止的原因并不清楚,可能的原因包括以下几种。 | ||
+ | |||
+ | === 内存读写错误 === | ||
+ | |||
+ | 可能是计算节点大量的内存泄漏。作为测试,可以提交到其他计算节点,看看计算能否完成。解决方式可以是重启不能正常运行的节点。 | ||
+ | |||
+ | === MPI兼容性 === | ||
+ | |||
+ | 有时候,QuantumATK自带的 MPIEXEC 可能与本地的环境不兼容,从而出现这种进程频繁异常终止错误,用户可以自行安装测试使用其他版本的 Intel MPI 或 MPICH)。一般公共的 HPC 都会装有多种 MPI 环境,可以直接使用,请咨询 HPC 管理员。 | ||
+ | |||
+ | | ||
+ | |||
+ | === 内存不足 === | ||
+ | 此时虽然没有明确的内存不足提示,但也可能是由于内存不足造成的,参考下文降低内存需求。 | ||
+ | |||
+ | |||
+ | ===== 内存错误 ===== | ||
+ | |||
+ | 很多时候这种进程错误是由于内存读写造成的。除此之外,有事内存限制可能是系统管理员为普通用户进行的资源限制,这是QuantumATK会给出明确的内存溢出的错误信息。 | ||
+ | |||
+ | 要快速处理计算中出现的内存溢出错误,就需要理解以下几点: | ||
+ | |||
+ | * DFT计算以自洽为一个单元,自洽单元的 MPI 并行与内存消耗是需要考虑的主要因素; | ||
+ | * DynamicalMatrix、NEB 等都是由多个 DFT 自洽单元构成的,这个单元计算间也在 MPI 进程上并行; | ||
+ | * 每启动一个 MPI 进程,都会单独占据一份内存。 | ||
+ | * 每个 MPI 并不一定对应于一个处理器物理核心,而是可以多线程的运行在多个核心上。 | ||
+ | |||
+ | 更多关于并行的原理,请参考: | ||
* [[atk: | * [[atk: | ||
- | | + | |
+ | 自洽单元的并行原理可以参见: | ||
+ | |||
+ | 或视频: | ||
+ | {{url>// | ||
+ | |||
+ | 我们可以在计算前大致估计 DFT 自洽单元需要多少内存: | ||
+ | |||
+ | * [[atk: | ||
+ | |||
+ | |||
+ | 因此要控制内存占用,主要办法有以下两种。 | ||
+ | |||
+ | === 控制DFT自洽单元内存消耗 === | ||
+ | |||
+ | 控制DFT自洽单元内存消耗的关键在于不保存计算的中间结果,这将影响计算速度,参见: | ||
+ | | ||
+ | |||
+ | === 控制并行进程数 === | ||
+ | |||
+ | 以一个大体系DFT自洽计算为例,我们在 PBS 设置行请求 1 个节点的全部 64 核心的硬件资源: | ||
+ | |||
+ | < | ||
+ | #PBS -l nodes=1: | ||
+ | </ | ||
+ | |||
+ | 一般来说我们会设置启动 64 个 MPI并行进程的计算: | ||
+ | < | ||
+ | [atk_dir]/ | ||
+ | </ | ||
+ | 在并行提交时,'' | ||
+ | |||
+ | 此时需要占用 64 倍的内存。如果我们在不改变请求资源的前提下,减少'' | ||
+ | |||
+ | 在使用多节点时,可以考虑减少每个节点上的进程数。例如以使用2节点(每节点64核)为例: | ||
+ | < | ||
+ | #PBS -l nodes=2: | ||
+ | ... | ||
+ | ... | ||
+ | [atk_dir]/ | ||
+ | </ | ||
+ | |||
+ | 因此为了控制并行内存,可以: | ||
+ | * 完整请求一个节点的全部核心进行计算; | ||
+ | * 提减少并行进程数。 | ||
+ | |||
+ | 更多提交作业的示例脚本参见: | ||
+ | * [[atk: | ||
+ | |||
+ | 动力学矩阵(声子)计算是一个特例,由于体系可能会被扩增成超胞,因此需要额外考虑扩增超胞大小的自洽计算内存消耗。 | ||
+ | ===== License错误 ===== | ||
+ | |||
+ | License 出错有两种情况,一种是 license 服务停止或由于长时间网络中断导致 license 出错。 | ||
+ | |||
+ | 下面这个视频介绍了QuantumATK中 License 浮动机制、计数规则。 | ||
+ | {{url> | ||
+ | |||
+ | 要解决License服务安装和运行错误,请参考: | ||
* [[atk: | * [[atk: | ||
- | * [[atk:quantumatk常见问题的排除]] | + | |
+ | 如果是提交的简单性质计算,则提交时先确认license够用,主要是计算作业数(Quantum/ | ||
+ | 如果提交的计算由多个独立自洽计算完成,例如声子或NEB结构优化,则还需要考虑并行机制,以声子为例,将'' | ||
+ | |||
+ | 更多信息参见视频: | ||
+ | |||
+ | {{url> | ||
+ | ===== 图形界面错误 ===== | ||
+ | |||
+ | 尽管 QuantumATK 的运行一般是十分稳定的,但仍然偶尔会发生意外退出等情况,并导致软件图形用户界面部分功能异常、卡顿,此时采取必要方法可以重置软件,恢复 QuantumATK | ||
* [[atk: | * [[atk: | ||
+ | |||
+ | ===== 更多参考 ===== | ||
+ | |||
+ | * [[atk: | ||
+ | |||