用户工具

站点工具

本页面的其他翻译:
  • zh

atk:高效运行quantumatk

这是本文档旧的修订版!


高效运行QuantumATK

QuantumATK是成熟的软件平台,运行出现意外错误的情况很少,最常见的是内存和进程错误,这种错误一般出现在块体 DFT(或器件 DFT-NEGF)计算时发生异常终止,log文件没有错误信息或者有如下类似的错误信息:

也就是显示进程被外部终止。

进程错误

此时,意外终止的原因并不清楚,可能的原因包括以下几种。

内存读写错误

可能是计算节点大量的内存泄漏。作为测试,可以提交到其他计算节点,看看计算能否完成。解决方式可以是重启不能正常运行的节点。

MPI兼容性

有时候,QuantumATK自带的 MPIEXEC 可能与本地的环境不兼容,从而出现这种进程频繁异常终止错误,用户可以自行安装测试使用其他版本的 Intel MPI 或 MPICH)。一般公共的 HPC 都会装有多种 MPI 环境,可以直接使用,请咨询 HPC 管理员。

内存不足

此时虽然没有明确的内存不足提示,但也可能是由于内存不足造成的,参考下文降低内存需求。

内存错误

很多时候这种进程错误也是由于内存读写造成的,要快速处理计算中出现的内存溢出错误,就需要理解以下几点:

  • DFT计算以自洽为一个单元,自洽单元的 MPI 并行与内存消耗是需要考虑的主要因素;
  • DynamicalMatrix、NEB 等都是由多个 DFT 自洽单元构成的,这个单元计算间也在 MPI 进程上并行;
  • 每启动一个 MPI 进程,都会单独占据一份内存。
  • 每个 MPI 并不一定对应于一个处理器物理核心,而是可以多线程的运行在多个核心上。

更多关于并行的原理,请参考:

我们可以在计算前大致估计 DFT 自洽单元需要多少内存:

或视频:

因此要控制内存占用,主要办法有以下两种。

控制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,则计算内存可以减少一半。

因此为了控制并行内存,有如下建议:

  • 完整请求一个节点的全部核心进行计算;
  • 提减少并行进程数。

更多参考

atk/高效运行quantumatk.1690596472.txt.gz · 最后更改: 2023/07/29 10:07 由 fermi

© 2014-2022 费米科技(京ICP备14023855号