新闻动态

首页 > 新闻动态 > 最佳实践Vol.04 | Quantum ESPRESSO v7.0水分子算例的运行优化指南
2024-07-31

最佳实践Vol.04 | Quantum ESPRESSO v7.0水分子算例的运行优化指南

超算互联网推出算例精选、最佳实践系列专题“超链接”,通过利用国家超算互联网的HPC软件、AI模型等工具链接科研工作者、AI开发者,分享科研成果与超算应用实践。

本篇为“超链接”系列专题的第4篇最佳实践文章,您将获得Quantum ESPRESSO v7.0基于水分子算例的运行参数优化方案与建议。

如果您有创新研究成果、高效计算方法、成功案例分析或者关于超算应用的独到见解想要分享,欢迎投稿或联系报道。


在材料科学与物理化学领域,Quantum ESPRESSO(QE)作为一款基于密度泛函理论(DFT)的高性能计算软件,被广泛应用于电子结构分析与材料性质预测。


上篇我们介绍了QE 自洽计算(SCF)的实践指南本篇将以QE官网water算例为例,带来如何在超算互联网使用Quantum ESPRESSO v7.0版本进行水分子自洽场计算的运行优化建议,包括基准测试与性能分析、QE并行策略分析及water算例运行优化等,帮助科研人员更高效地在超算互联网运行QE,推动材料科学领域的研究进展。(该算例可在超算互联网“quantum_espresso v7.0 示例版本“商品中的case目录中下载使用。)


算例介绍


water算例使用PBE0泛函计算64个水分子,从而获得电子结构和能量信息。在这个计算中,64个水分子被放置在一个简单的立方晶胞中,晶格常数为23.521230407,计算的目标是通过求解Kohn-Sham方程来获得水分子的电子结构和能量,计算中使用的平面波截断能为80,波函数将用一组平面波来展开。为了加速计算,采用了一些优化策略,例如,使用了混合模式和混合参数来加速自洽场过程的收敛,以及使用了对角化方法和高精度设置来提高对角化的准确性。


算例的主要参数见表1。


表1 water算例主要参数

参数

参数解释

calculation

scf

进行自洽场计算

ibrav

1

简单的立方晶胞

nat

192

原子数为192(64个水分子,每个水分子含2个氢原子,一个氧原子)

diago_thr_init

5.0d-4

初始对角化阈值为5.0d-4

diagonalization

david

对角化方法为david

input_dft

pbe0

输入的泛函为pbe0

diago_full_acc

true

使用高精度进行对角化

mixing_beta

0.7

混合参数为0.7


软件描述


本次实践使用超算互联网quantum espresso 官方7.0版本的预编译可执行程序,程序编译采用intelmpi 2021,链接了intel的MKL(Math Kernel Library)数学库,没有开启openmp选项。主要测试的功能为pw.x,使用slurm调度器运行程序。


节点信息


本实验运行在超算互联网,使用单节点64核心。节点的主要软硬件配置信息如下表2所示。


表2. 计算节点配置信息

处理器(CPU)

2*7285H 32C 2.5GHz

内存

256GB

计算网络

100Gb

操作系统

centOS 7.6


运行测试


基准测试与性能分析


使用slurm调度器运行pw.x,测试water算例,测试脚本如下:


2.jpg


提交作业后,软件运行结果如下图1和图2所示。


3.jpg

图1 精度结果展示


4.jpg

图2 运行时间


使用64核心运行water算例,在现有的编译条件下,需要近1个小时时间完成计算。图3展示了软件运行耗时统计,从统计来看,在整个计算过程中,最耗时的部分在fftc的计算上,耗时40分钟左右。


5.jpg

图3. water算例各部分计算耗时统计


同时,为了更好地分析算例运行特征和热点,我们抓取了运行时的perf数据,perf热点抓取命令和打开perf数据的命令如下:


6.jpg


图4为运行过程的TOP热点统计图。


7.jpg

图4. Top热点统计


从热点图中可以看出,通信、数学库计算、交换相关势计算、FFT计算和内存拷贝是整个运行过程的主要热点瓶颈。数学库的计算由于调用了MKL数学库,暂时不考虑优化。内存拷贝使用了intel的sse2指令,在机器支持AVX(avx、avx2、avx512)指令时,可以尝试在编译时使用avx指令,或者手动在代码中的memcpy函数,改为avx的intrinsics函数调用。通信和FFT计算可以结合QE并行策略做针对性的调优。


QE并行策略分析


在Quantum ESPRESSO软件中,设置了多级别的并行策略,由于本文涉及的是平面波自洽场(PWscf)计算,因此从PWscf和优化FFT计算的角度简单分析其中一些并行级别,具体可参考QE官方的user guide。


  1. k-point(Pool)并行:每个image可以分成“池”,每个池处理一组k点,该参数的设置必须是K点总数的除数。

  2. linear-algebra并行化:为了在迭代对角化(PWscf)或正交化(CP)中分配和并行化矩阵对角化和矩阵乘法运算,引入了一个线性代数处理器组(ndiag)作为平面波处理器组的子集。ndiag等于m的平方,m是一个整数,使得m的平方不大于平面波处理器的数量(PW)。

  3. task group并行化:每个平面波处理器组被分成Nfft和Ntask任务组,其中Nfft×Ntask=Npw。这用于扩展FFT并行化的可伸缩性。


图5描述了QE软件中的并行级别,可供参考。


8.jpg

图5. parallelization Leves(来源于SCAI)


基于上述并行级别,QE提供了一些列参数,支持用户自行选择和设置并行策略,从而分配不同的核心数给到不同的计算任务,部分参数和对应的并行级别如下表3所示。


表3. 运行参数

运行参数

并行级别

-nimage 或者 -ni

image

-npools 或者 -nk

pool or k-points

-ntg 或者 -nt

task group

-ndiag 或者-northo 或者 -nd

linear-algebra group:


例如下述命令表示:使用4096个核心运行程序,被分配到8个image,2个pool,那么PW的处理核心数则为4096/8/2=256,设置ntg=8,那么Nfft=256/8=32,对角化计算使用144个核心。


9.jpg


water算例运行优化


从热点角度看,water算例在前述配置下的运行效率瓶颈在于通信和FFT计算上。从QE并行策略角度分析,image并行之间的通信非常小,而linear-algebra之间则需要非常频繁的通信,可以酌情参考下表4的描述粗略判断。


表4. 不同并行级别描述总结

级别(group)

数量分布(distributed quantities)

通信(communications)

image

NEB images

非常低

pool

K-points

PW

PW,G-vector,coefficients,R-space FFT arrays

task

FFT on electron states

linear-algebra

subspace hamiltonians and constraints matrices

非常高


结合热点和并行策略的分析,在water算例本身image、k-points等支持的设置条件下,尝试对ntg(task group)参数做对比实验。因为ntg参数可以直接影响到用于处理FFT计算的核心数,考虑到其通信量高,所以兼顾计算和通信,测试ntg的参数设置为4、8、16这三种情况下的运行效率。软件运行命令如下所示:


10.jpg


测试结果如表5所示。结果表明,ntg参数的设置对整体的运行效率有一定的影响,当ntg=8时,相较于基线性能有20%的性能提升,效果十分明显。而设置为16时,性能下降,查看耗时统计,发现fft的计算时间反而上升,说明此时的fft分配到的计算资源偏低,而过多的分配计算核心给fft也不一定能获得更优的性能,可能会导致FFT内部的通信代价太高,从而影响全局计算。


表5. 不同ntg设置下的测试结果

ntg的值

PWSCF运行时间

4

57m32.54s

8

48m12.09s

16

1h 6m


图6是ntg参数设置为8时的结果输出,表明精度与基线测试的结果一致,该参数的设置对QE的计算精度无影响。


11.jpg

图6. ntg=8时的精度


图7展示了计算过程中各关键步骤的耗时以及计算的总用时,从统计结果看,FFT的计算速度得到了明显的提升,总时间也提升了20%。另外,由于软件包的编译并没有开启-fopenmp选项,所以本次实验并没有体现OpenMP的设置对性能的影响。


12.jpg

图7. ntg=8时计算效率


总结


由于QE软件存在多级并行模式,需要结合具体的算例特征和运行特征,分析运行瓶颈,针对性地做出合理的参数设置,本篇实践为科研人员不仅提供了在超算互联网使用Quantum ESPRESSO v7.0 进行水分子PWScf计算的优化方案和建议,还为超算用户在超算互联网进行各类材料计算提供了有价值的案例参考。


更多案例可持续关注超算互联网最佳实践系列文章,下篇我们将带来ABINIT软件的KGB并行化策略,探讨如何更好的优化ABINIT的效率和收敛性,以实现更高效的大规模计算。