这是本文档旧的修订版!
QuantumATK是成熟的软件平台,运行出现意外错误的情况很少,最常见的是内存和进程错误,这种错误一般出现在块体 DFT(或器件 DFT-NEGF)计算时发生异常终止,log文件没有错误信息或者有如下类似的错误信息:
也就是显示进程被外部终止。
此时,意外终止的原因并不清楚,可能的原因包括以下几种。
可能是计算节点大量的内存泄漏。作为测试,可以提交到其他计算节点,看看计算能否完成。解决方式可以是重启不能正常运行的节点。
有时候,QuantumATK自带的 MPIEXEC 可能与本地的环境不兼容,从而出现这种进程频繁异常终止错误,用户可以自行安装测试使用其他版本的 Intel MPI 或 MPICH)。一般公共的 HPC 都会装有多种 MPI 环境,可以直接使用,请咨询 HPC 管理员。
此时虽然没有明确的内存不足提示,但也可能是由于内存不足造成的,参考下文降低内存需求。
很多时候这种进程错误也是由于内存读写造成的,要快速处理计算中出现的内存溢出错误,就需要理解以下几点:
更多关于并行的原理,请参考:
我们可以在计算前大致估计 DFT 自洽单元需要多少内存:
或视频:
因此要控制内存占用,主要办法有以下两种。
以一个大体系DFT自洽计算为例,我们在 PBS 设置行请求 1 个节点的全部 64 核心的硬件资源:
#PBS -l nodes=1:ppn=64
一般来说我们会设置启动 64 个 MPI并行进程的计算:
[atk_dir]/mpi/bin/mpiexec -n 64 [atk_dir]/bin/atkpython input.py
在并行提交时,mpiexec
(或 mpirun
)后 -n 所带的参数即要启动的 MPI并行进程数。
此时需要占用 64 倍的内存。如果我们在不改变请求资源的前提下,减少-n
后的数字为 32,则计算内存可以减少一半。
因此为了控制并行内存,可以:
更多提交作业的示例脚本参见: