计算化学公社

 找回密码 Forget password
 注册 Register
Views: 4965|回复 Reply: 13
打印 Print 上一主题 Last thread 下一主题 Next thread

[Quantum ESPRESSO] 如何提升qe的计算速度?

[复制链接 Copy URL]

204

帖子

0

威望

1086

eV
积分
1290

Level 4 (黑子)

各位老师好,
小弟最近因为在尝试VCA方面的计算,因而专门去学习了一下quantum espresso的使用。小弟在使用的时候,发现quantum espresso的计算效率比vasp低了很多。这是小弟的input文件,计算20个原子的Ga2O3体系,k点是30个。在24核的机器上,qe的一个电子步耗时约30s。小弟之前使用vasp的时候,同样的原子数、k点数和cpu核数,vasp在SCAN泛函下一个电子步也才5s左右,如果同样是PBE泛函的话,vasp一个电子步耗时在3s左右。qe和vasp的计算速度差了约10倍。
小弟想问一下各位老师,qe有没有什么方法,提升其计算速度?

421

帖子

4

威望

2934

eV
积分
3435

Level 5 (御坂)

2#
发表于 Post on 2023-9-30 10:38:21 | 只看该作者 Only view this author
本帖最后由 万里云 于 2023-10-3 22:26 编辑

输入文件中用了80Ry的动能截断,相当于1000多eV,又是Ga和O这样的主族元素,如果是PAW势,精度很高了。VASP的ENCUT要设置成同样的值才能做比较。

无论VASP还是QE,只要是采用平面波基组的程序,做变体积的变胞优化时都会遇到Pulay应力的问题。解决办法有两个:加大动能截断,或者做定体积变胞再手动拟合状态方程。因此可以把动能截断砍掉一些,然后定体积变胞。

再就是调节QE的并行参数。这些参数不是写在输入文件里面,而是在命令行指定,记得有-ni -nk -nb -nt -nd几个。ni是对image并行,只在NEB计算时才有意义。nk/nb/nt相当于KPAR/NPAR/NCORE。nd是scalapack并行时矩阵分块方案,貌似vasp中没开放这个参数。具体要做测试。

204

帖子

0

威望

1086

eV
积分
1290

Level 4 (黑子)

3#
 楼主 Author| 发表于 Post on 2023-9-30 10:56:58 | 只看该作者 Only view this author
万里云 发表于 2023-9-30 10:38
输入文件中用了80Ry的动能截断,相当于1000多eV,又是Ga和O这样的主族元素。如果是PAW势,精度很高了。VASP ...

多谢老师,解释的非常清楚。感谢老师指导。

131

帖子

0

威望

2563

eV
积分
2694

Level 5 (御坂)

4#
发表于 Post on 2023-9-30 13:44:45 | 只看该作者 Only view this author
qe可以用OpenMP并行,也能用MPI并行,具体是否支持和怎么编译有关。如果原先使用全MPI并行,可以考虑设置OpenMP并行核数,能适当加快计算时间,一般也会节约一些内存。

19

帖子

0

威望

893

eV
积分
912

Level 4 (黑子)

5#
发表于 Post on 2023-9-30 14:16:56 | 只看该作者 Only view this author
ahxb 发表于 2023-9-30 13:44
qe可以用OpenMP并行,也能用MPI并行,具体是否支持和怎么编译有关。如果原先使用全MPI并行,可以考虑设置Op ...

要达到最高运行效率,需要合理搭配openmp+mpi杂化并行

358

帖子

0

威望

2307

eV
积分
2665

Level 5 (御坂)

6#
发表于 Post on 2023-10-1 07:07:50 | 只看该作者 Only view this author
也和编译有关

421

帖子

4

威望

2934

eV
积分
3435

Level 5 (御坂)

7#
发表于 Post on 2023-10-1 20:25:51 | 只看该作者 Only view this author
MPI+OpenMP混合并行效率一般是比不过纯MPI的。MPI是进程级并行,内存占用大,为了不爆内存,进程数有时候要小于物理核心数。为了不浪费剩下的核心,就通过OpenMP进行线程级并行。

496

帖子

11

威望

4277

eV
积分
4993

Level 6 (一方通行)

8#
发表于 Post on 2023-10-3 20:30:42 | 只看该作者 Only view this author
万里云 发表于 2023-9-30 10:38
输入文件中用了80Ry的动能截断,相当于1000多eV,又是Ga和O这样的主族元素,如果是PAW势,精度很高了。VASP ...


请问一下老师,这个-nimage参数我有点没看明白到底和NEB的插点数目(image)怎么对应联系的?即每个插点结构用多少个核心并行和这个参数是怎么一个对应关系。我看后面几个参数要优化的时候还必须要知道FFT格点,KS states 的数目等等才能估计,还挺麻烦的,不知道老师有什么简易的优化策略?
自由发挥,野蛮生长

421

帖子

4

威望

2934

eV
积分
3435

Level 5 (御坂)

9#
发表于 Post on 2023-10-3 21:03:00 | 只看该作者 Only view this author
本帖最后由 万里云 于 2023-10-3 21:04 编辑
丁越 发表于 2023-10-3 20:30
请问一下老师,这个-nimage参数我有点没看明白到底和NEB的插点数目(image)怎么对应联系的?即每个插点 ...

ni/nk/kb/ntg分别对应image, kpoint, bands和FFT格点并行,这四个参数相乘必需等于申请的总核数。大致规律是并行层级越高,跨进程数据交换量越少,内存占用量越大。并行层级越低,数据交换量越大,内存占用越少。但内存占用看峰值,耗时看总和。因此内存占用满足这个规律,耗时不一定满足。

如果是做NEB计算,假设插入6个image,就申请6个节点,同时将ni设置成6。这样每个节点只在算出相应image的受力后才调用一次MPI,数据交换量是最小的。又假设每个节点有32个物理核心,那么nk*nb*nt必需等于32。据个人经验,如果是100原子左右,不可约k点在10以内的体系,用VASP的话1*1*32效率是最高的,也就是KPAR=1, NCORE=32。NPAR会自动设置为1。

如果是静态计算、优化、能带计算等单image计算,假设有4个不可约k点,建议申请4个节点,设置KPAR=4,NCORE=32,即每个节点负责一部分k点,节点内禁用band并行,所有的核都用来作FFT并行。

以上是在双路6326 CPU/256GB内存/IB互联集群上测试的结果。QE的并行方案可能和VASP有很大区别,以上经验很可能不适用,因此要多做测试。磨刀不误砍柴工,参数选得好,相比于最差的情形能节省三分之一的时间。

496

帖子

11

威望

4277

eV
积分
4993

Level 6 (一方通行)

10#
发表于 Post on 2023-10-3 21:27:35 | 只看该作者 Only view this author
本帖最后由 丁越 于 2023-10-3 21:31 编辑
万里云 发表于 2023-10-3 21:03
ni/nk/kb/ntg分别对应image, kpoint, bands和FFT格点并行,这四个参数相乘必需等于申请的总核数。大致规 ...

感谢老师详细解答
我还有个问题请教一下老师,假如NEB计算是在单个节点内进行,那么这个nimage的划分是否是有必要的呢?

另外这句话中"nk/nb/nb"应该是笔误了:
nk/nb/nb相当于KPAR/NPAR/NCORE。nd是scalapack并行时矩阵分块方案


评分 Rate

参与人数
Participants 1
eV +5 收起 理由
Reason
snljty2 + 5 谢谢

查看全部评分 View all ratings

自由发挥,野蛮生长

421

帖子

4

威望

2934

eV
积分
3435

Level 5 (御坂)

11#
发表于 Post on 2023-10-3 22:28:24 | 只看该作者 Only view this author
丁越 发表于 2023-10-3 21:27
感谢老师详细解答
我还有个问题请教一下老师,假如NEB计算是在单个节点内进行,那么这个nimage的划 ...

ni指定了同时计算多少个image的受力,单节点多image很可能爆内存。

评分 Rate

参与人数
Participants 1
eV +5 收起 理由
Reason
丁越 + 5 谢谢

查看全部评分 View all ratings

3809

帖子

3

威望

1万

eV
积分
20343

Level 6 (一方通行)

围观吃瓜群众

12#
发表于 Post on 2023-10-5 09:47:21 | 只看该作者 Only view this author
额外补充两点:
1、磁矩和迭代参数适当调整。好的初猜和平顺的迭代可能一些能带收敛会较快,那么后面的步骤对角化的速度会逐渐变快。
2、在确保数值稳定的情况,对角化可以使用RMM-Davidson或者RMM-Paro用RMM-DIIS对个别过程进行加速。

日常打哑谜&&探寻更多可能。
原理问题不公开讨论,非商业性质讨论欢迎私聊。不做培*,不接代*,不接*发谢谢。

204

帖子

0

威望

1086

eV
积分
1290

Level 4 (黑子)

13#
 楼主 Author| 发表于 Post on 2023-10-23 16:13:48 | 只看该作者 Only view this author
卡开发发 发表于 2023-10-5 09:47
额外补充两点:
1、磁矩和迭代参数适当调整。好的初猜和平顺的迭代可能一些能带收敛会较快,那么后面的步 ...

感谢卡老师

3

帖子

0

威望

63

eV
积分
66

Level 2 能力者

14#
发表于 Post on 2023-11-18 18:09:01 | 只看该作者 Only view this author
截断能太大了,一般50Ry就差不多了,截断能越大内存占用越多。Ry与eV的换算可以使用这个网站:https://citizenmaths.com/zh-cn/e ... tronvolts-converter

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2026-2-20 18:13 , Processed in 1.925307 second(s), 30 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list