A100还是4090? VASP的GPU性能测试及调优策略
0 前言
之前读了熵增焓减对各种GPU平台MD性能的详细测试,受益良多。最近正好手上同时有些高性能集群的CPU、A100、4090资源,所以做一期第一性原理软件VASP在各平台的表现对比。做起来后才发现比预想的要复杂很多,欢迎各位讨论指正。
1 测试平台
本文选用的硬件平台:
(, 下载次数 Times of downloads: 38)
本文目标是对比A100与4090的表现,CPU平台作为baseline参考。很遗憾无法保证CPU、内存频率以及软件版本的统一,这主要是由于集群选择有限以及编译软件权限限制,因此带来的误差请谅解。
2 测试体系
本文选取了一大一小两种MOF材料的静态自洽计算(一步计算DOS)作为对比
(, 下载次数 Times of downloads: 38)
没有限制电子步长,只限制电子步能量收敛标准,但是最后跑出来的电子步数都是一样的(个别case会有41步和40步差别,可以忽略)。其中大体系用了单G点和2*2*2 K点,ISMEAR均为0,小体系K点为3*3*13,ISMEAR为-5。纯泛函的电子步收敛标准1e-5 eV,针对大体系单G点还做了杂化泛函HSE06计算,电子步收敛标准是1e-4 eV。由于只是为了对比硬件,所以都没有考虑自旋极化。详情见附件INCAR参数。
3 精度对比
精度测试肯定是最重要的,长期来一直有观点认为单精度达不到第一性原理要求+众所周知的游戏卡不擅长双精度计算,所以很多人都优先选用A100等专业显卡来加速VASP计算。这里对比纯CPU、游戏卡4090、专业显卡A100计算出的的能量以及DOS曲线。
能量选取的OUTCAR最后输出的free energy (eV):
(, 下载次数 Times of downloads: 36)
以CPU为标准,A100和4090的误差都满足电子步收敛标准,也远超过了常用的1 meV/atom的要求,其中A100和4090之间更是几乎完全一样,只有杂环泛函结果在小数点后第八位有差别。
大体系单G点的HSE06计算DOS对比:
(, 下载次数 Times of downloads: 45)
小体系高K点的纯泛函计算DOS对比:
(, 下载次数 Times of downloads: 43)
对比各平台的DOS结果,也是基本上一模一样,少许毛糙峰值有差别是正常现象,峰的位置只在E - E_fermi > 5 eV位置有小许差别,当然这部分本来也不是DFT擅长的区间。4090与A100的对比更是几乎完全重合(没有单独作图放一起)。
综合自洽能量计算结果与DOS结果,可以放心认为4090平台完全能得到准确的能量与DOS结果.
4 速度对比
先放结果,使用各个平台的最优方案,以CPU性能为100%,测试结果如下:
(, 下载次数 Times of downloads: 48)
[attach]89781[/attach]
(, 下载次数 Times of downloads: 41)
注:以上数据于2024.5.1经熵增焓减提示修改。
由于各个平台收敛电子步数一样,所以取用离子步时间为标准,也就是OUTCAR中LOOP+ cpu time。
可以得到以下结论:(1)大体系下,4卡GPU能达到450核CPU的水平,但是小体系高K点表现不足。(2)A100在大体系高K点和杂化泛函任务性能远超4090,其他体系差别不大。(3)GPU平台对于杂化泛函任务表现优异。(4)对于单G点体系,4卡并行的性能不到单卡的3倍,如果想节约卡时,显存也足够的话可以优先单卡计算。
5 调优策略
首先声明,各个平台的软硬件配置都不同,所以自己计算时要先做自己的测试。以下经验只是笔者针对上述平台的调优经验,供参考。
CPU平台的并行策略已经有大量工作整理了,只放结论。(1)单G点任务,应选择vasp_gam而非vasp_std, KPAR=1, NPAR=节点数 或者 节点数*2。(2)多K点任务,KPAR=2,NPAR=节点数*2 或者 节点数*4。(3)如果内存不足,降低KPAR或者提高NPAR。
GPU平台只能NCORE=1,调优主要考虑的是KPAR、openmp以及vasp版本问题。
对于多K点任务,KPAR对比结果如下:(单位:秒)
(, 下载次数 Times of downloads: 39)
注:以上数据于2024.5.1经熵增焓减提示增加。
经过测试发现,多线程openmp在4090平台完全不影响结果,在A100平台甚至会让速度倒退,所以提交任务时有必要添加export OMP_NUM_THREADS=1。
对于大体系单G点任务,vasp_std与vasp_gam结果如下:(单位:秒)
纯泛函
(, 下载次数 Times of downloads: 41)
杂化泛函
(, 下载次数 Times of downloads: 37)
出乎意料的是,对于纯泛函任务,A100节点的vasp_gam表现不如vasp_std,笔者不明白原因,欢迎讨论。对于其他任务类型,应该优先选择vasp_gam。
6 总结
CPU节点的性能优势在高K点小体系,高内存也可以支持超大体系(数千原子)。GPU在杂化泛函任务有明显优势,相比4090,A100的优势在大体系(100+原子)多K点以及更大的显存。
至于价格,目前CPU节点的价格在500-1000元/核(450核也就是22万-45万元),4卡4090节点含CPU价格在约15万元,A100(80G)单卡就要约12-15万元。租用的话,CPU机时约0.06元/核时(450核约27元/时),4090的4卡节点约10元/时,A100(40G)的4卡节点约30元/时。
选购时第一步是要确定自己的任务需要多大的内存/显存,如果都是100-200原子的任务,那么4090是性价比最高的选择。如果是大量小体系任务(原子数<50),且不用做杂化泛函计算,CPU集群也不错。A100集群适合经费十分充裕的课题组,各方面都用的舒服,4张40G的节点大约可以跑500原子体系(考虑自旋)。
7 利益相关
这个测试是笔者主动做的,计算资源来自不同平台的试用资源,除此以外没有其他利益声明。
-----------------------------------
2024.5.3 应论坛私信请求,更新了附件,包括4个测试case的详细输入文件。
2024.5.4 补充了cpu time的原始数据,方便其他测试对比。