计算化学公社

标题: A100还是4090? VASP的GPU性能测试及调优策略 [打印本页]

作者
Author:
二分音符    时间: 2024-5-1 20:05
标题: A100还是4090? VASP的GPU性能测试及调优策略
本帖最后由 二分音符 于 2024-8-9 00:03 编辑

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]
       cpu time(单位:s):
(, 下载次数 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)

        所以在显存足够时,应该把KPAR设为GPU数。
       :以上数据于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的原始数据,方便其他测试对比。




作者
Author:
Entropy.S.I    时间: 2024-5-1 20:54
本帖最后由 Entropy.S.I 于 2024-5-1 20:57 编辑
但是小体系高K点表现不足

多K点,GPU加速的情况,应当将KPAR设为GPU数量,此时并行效率很好。

经过测试发现,多线程openmp在4090平台完全不影响结果,在A100平台甚至会让让速度倒退,所以提交任务时有必要添加export OMP_NUM_THREADS=1。

检查是否启用了FFTW的OpenMP?我近期也做了大量测试,结果表明在VASP的GPU加速中使用OpenMP并行后普遍有明显性能增益,对于某些case,将OMP_NUM_THREADS设置得特别大(达到GPU所对应CPU核数的数倍)有神奇的性能增益,且结果和CPU计算没有明显区别。
关于"在A100平台甚至会让速度倒退",这很大概率是因为没有做好线程/进程在CPU上的mapping,EPYC的架构决定了运行程序的时候必须做精准的mapping才能获得最佳性能(尤其是Rome)。


我的测试结果近期也会发布,规模应该会比你的大,关注的是CPU-GPU和GPU-GPU互联拓扑对最终计算性能的影响,以及CPU性能对最终计算性能的影响。但由于我个人不是VASP的资深用户,所以不会在科学方面做深入讨论,只是提供足够的数据和初步的讨论,希望届时各位资深用户可以来一起分析。


最后,现在我开发的8x V100 SXM2 16G NVLink的整机(做好硬件和固件调优)最终出货估计只需要不到4万CNY(公费),不过我无法决定价格,因为现在这个项目不是我运营。虽然4块V100跑VASP的性能普遍不如4块RTX 4090,但8块V100可以轻松超过4块RTX 4090

作者
Author:
二分音符    时间: 2024-5-1 21:13
Entropy.S.I 发表于 2024-5-1 20:54
多K点,GPU加速的情况,应当将KPAR设为GPU数量,此时并行效率很好。

十分感谢,加了KPAR后速度果然好特别多,我修改下原文数据。

fftw部分,我尝试了module load fftw/3.3.9-ompi-float,但结果并没有改变,可能需要双精度的,晚些再做测试。

mapping确实超出我的能力范围了,等大佬的文章发了再仔细学下。
作者
Author:
Entropy.S.I    时间: 2024-5-1 21:41
二分音符 发表于 2024-5-1 21:13
十分感谢,加了KPAR后速度果然好特别多,我修改下原文数据。

fftw部分,我尝试了module load fftw/3.3 ...

另外,NSIM也会影响性能,一般的经验是在VRAM足够的情况下NSIM越大越好,但有少量体系例外(届时我会指出,由各位资深用户分析)。NSIM默认值是4,有时job跑OOM,减小NSIM的值可能就不会OOM(比如1080原子的UKHPC-TiO2纯泛函计算,在8x V100 SXM2 16G节点上需要手动设置NSIM=2才不会OOM)
作者
Author:
zhaohs    时间: 2024-5-4 21:33
本帖最后由 zhaohs 于 2024-5-4 21:35 编辑

另外,需要注意的是:正如这里所指出的,当前,并不是所有job类型都可以在GPU上运行的。比如:所有基于RPA的job(包括GW)目前都不能基于GPU运行。
作者
Author:
二分音符    时间: 2024-5-5 16:45
zhaohs 发表于 2024-5-4 21:33
另外,需要注意的是:正如这里所指出的,当前,并不是所有job类型都可以在GPU上运行的。比如:所有基于RPA ...

这也确实,如果有些特殊要求还是得先自己测试。官方原文是:
Most features of VASP have been ported to GPU using OpenACC, with the notable exception of everything involving the RPA: GW and ACFDT. This is work in progress.

让我惊讶的是这个回复里VASP官方也强调双精度问题,但根据本文测试影响很小,不知道官方有没有做过类似测试,还是给计算卡带货。
作者
Author:
zhaohs    时间: 2024-5-13 17:16
让我惊讶的是这个回复里VASP官方也强调双精度问题,但根据本文测试影响很小,不知道官方有没有做过类似测试,还是给计算卡带货。

按照vasp官方开发人员的一贯严谨性和学术及商业中立性,我觉得他们这么说的依据应该是基于他们所做的大量测试整体的表现而言。毕竟如果论系统性测试,人家肯定是做的最深入广泛的。


作者
Author:
zhaohs    时间: 2024-5-14 15:10
就此问题,我在这里进行了询问,看他们是否有相关解释和例证。

作者
Author:
Graphite    时间: 2024-5-14 17:05
zhaohs 发表于 2024-5-14 15:10
就此问题,我在这里进行了询问,看他们是否有相关解释和例证。

前面看着还好,最后VASP的来个未经允许发布基准测试被警告,
作者
Author:
二分音符    时间: 2024-5-16 00:43
zhaohs 发表于 2024-5-13 17:16
按照vasp官方开发人员的一贯严谨性和学术及商业中立性,我觉得他们这么说的依据应该是基于他们所做的大量 ...

据我所知VASP的GPU加速有部分是NVIDIA团队开发的。

在官方的回复中,提到了可能GPU-GPU通讯、带宽等才是瓶颈所在。我的测试中也没能控制同样的CPU对比计算卡和游戏卡,所以有可能是CPU瓶颈,也可能是我选择的case瓶颈不在FP64。

但是我觉得我选用的几种体系以及任务类型都是最常用的(结构优化任务没有详细对比,但根据我平时的使用体验与静态自洽任务相近),如果这些任务上拉不开差距,那对于消费者而言也没有充足的理由因为FP64选择A100。
作者
Author:
二分音符    时间: 2024-5-16 00:54
Graphite 发表于 2024-5-14 17:05
前面看着还好,最后VASP的来个未经允许发布基准测试被警告,
I remind you that publishing benchmarks without prior authorization from the VASP company infringes on the license agreement. I would urge you not to link to such websites in the future.


很遗憾得知官方的这一态度,我不清楚publishing指的是在任何公开论坛还是在VASP论坛,如果这会造成严重的法律后果的话,我可能不得不删掉这个帖子。

做这个测试的初衷是最近想做大规模计算筛选,同时看到了国内外很多的类似工作都没有充分调优,浪费了千万元量级的计算资源,以及对应的电力环境等损失。实话实说,我不理解为什么会有这样的合同条款。并不忍心放弃分享这个测试结果。

@sobereva 希望社长能够提供指点。
作者
Author:
sobereva    时间: 2024-5-16 02:02
二分音符 发表于 2024-5-16 00:54
很遗憾得知官方的这一态度,我不清楚publishing指的是在任何公开论坛还是在VASP论坛,如果这会造成严 ...

我认为这样的帖子是有益于广大研究者的,作为论坛管理员,我是很支持发表这样帖子的。倘若测试有什么不合理的地方,都可以公开讨论,不让别人测试是不合适的(除非购买程序的license上确实已写明了、做了提前告知)。一般用户使用比较流行的硬件设备做常见规模体系测试得到的结论,比起某些官方用一些非主流或者不接地气的硬件和测试体系做的所谓的careful的测试更有实际价值。

对于VASP官方是什么意思,我不清楚情况,我也不是VASP的用户。你觉得有必要的话可以设个阅读权限,免得可以被没注册论坛或者在论坛里level不够的人也看到。

作者
Author:
二分音符    时间: 2024-5-16 14:02
sobereva 发表于 2024-5-16 02:02
我认为这样的帖子是有益于广大研究者的,作为论坛管理员,我是很支持发表这样帖子的。倘若测试有什么不合 ...

感谢社长,我已对帖子做相应修改。

我翻阅了和代理商签订的合同、VASP官方的email、VASP PORTAL、以及网上能检索到的资料,只找到了这个Terms of Use,不确定是不是官方所说的License Agreement。从中没有找到任何关于benchmark的限制条款。如果可能,希望有人能给予法律方面的支持,或者帮忙提供License Agreement的细节资料。

为了避免不必要的麻烦,还是对帖子做了相应修改。

之前其实也参加过社长的CP2K培训班,但是出于惯性还是继续用的VASP,这次经历让我坚定改用CP2K等其他第一性原理软件了。

作者
Author:
chrinide    时间: 2024-5-16 17:54
二分音符 发表于 2024-5-16 14:02
感谢社长,我已对帖子做相应修改。

我翻阅了和代理商签订的合同、VASP官方的email、VASP PORTAL、以及 ...

VASP组的行为越来越不像一个学术组,隔壁Wien2K组就完全跟VASP是天壤之别,从一开始到现在一直就是学术400欧,真是便宜。速度不比VASP差多少,而且还是更精确FPLAPW,而且还有官方的GUI,还是蛮好用的。只可惜不知道为啥,在天朝学术流行度越来越低。这次论坛的投票可见一斑,其实现在FPLAPW一点也不慢了,双路9654算个300-500原子晶胞也没啥问题……
作者
Author:
sobereva    时间: 2024-5-16 19:57
chrinide 发表于 2024-5-16 17:54
VASP组的行为越来越不像一个学术组,隔壁Wien2K组就完全跟VASP是天壤之别,从一开始到现在一直就是学术40 ...

哪怕只收费1元,而且不是像淘宝买东西那样秒支付,都会严重阻碍程序的流行
AMBER之前基本是象征性的收费,现在干脆直接免费下载了,甚至都不用注册。与其赚鸡毛蒜皮的钱,倒不如免费公开,早点让程序流行起来、发挥应有的价值,倒时候还能赚很多引用,更容易申请经费,实际收益大得多。

一个程序如果没有较多的用户刚性需求,又是收费的,基本不太可能从0开始流行起来。

作者
Author:
chrinide    时间: 2024-5-17 18:45
sobereva 发表于 2024-5-16 19:57
哪怕只收费1元,而且不是像淘宝买东西那样秒支付,都会严重阻碍程序的流行
AMBER之前基本是象征性的收费 ...

的確如此。
提下Wien2K主要是吐槽下VASP的現狀,着實现在看着不順眼。

所以量化/第一性原理軟件免費/開源是大勢,至少也得免費在前,否則只能很快孤獨地死去,GITHUB上已经有好多孤独死去的量化code, Gaussian的策略非常正确,没有搞License模塊,下載即用,對盜版放任自流,只是發表文章得有版權,定價策略也算成功,當然Gausian最成功的地方還是代碼效率。其實VASP的策略也是和Gaussian一样,對盜版也是放任自流,這也是VASP流行起来的一个主要原因,当然最主要的原因还是它很早就有一个质量还不错的全周期表的PP/PAW势库。PAW祖师Peter Blöchl搞的CP-PAW去年也免費開源了,PAW势库也是全周期表的,质量也是相当高的,但是开源的时机已经是非常晚了,加上手册写的非常烂,例子又少,结局非常不乐观。


作者
Author:
gog    时间: 2024-5-26 07:15
chrinide 发表于 2024-5-17 18:45
的確如此。
提下Wien2K主要是吐槽下VASP的現狀,着實现在看着不順眼。

前后处理工具的易用性和有效性。这个没啥问题。

功能扩展性也很重要。

相比这3点,VASP确实有优势。
作者
Author:
szp12345    时间: 2024-5-27 23:38
本帖最后由 szp12345 于 2024-5-28 00:13 编辑

感谢楼主分享的测试数据。
有个小建议,能否说明三种测试平台上的VASP编译方。
我一直用的是P100卡,双精度比较强,按我的经验4卡P100完全可以怼4卡4090,1张A100约等于2张P100,这个数据只是跑VASP而言。
按这样对比看,四卡A100对四卡4090应该是压倒性优势。

作者
Author:
二分音符    时间: 2024-5-28 15:37
szp12345 发表于 2024-5-27 23:38
感谢楼主分享的测试数据。
有个小建议,能否说明三种测试平台上的VASP编译方。
我一直用的是P100卡,双精 ...

其实最大的差异是A100平台用的国产arm架构CPU,所以也配上了国产编译器,其他的各种编译方法也对比过,差别不大,所以没放了。
如果是因此造成的瓶颈,在其他平台上A100如果有4090两倍的性能也是很可能的。但即使如此性价比上也没什么优势。
作者
Author:
Entropy.S.I    时间: 2024-5-29 00:02
本帖最后由 Entropy.S.I 于 2024-5-29 02:14 编辑
szp12345 发表于 2024-5-27 23:38
感谢楼主分享的测试数据。
有个小建议,能否说明三种测试平台上的VASP编译方。
我一直用的是P100卡,双精 ...

根据我的广泛benchmark,4090在任何VASP case中都强于P100,在一些case中差距达到100%以上。目前我的benchmark已经积累了超过550条有效数据,涉及4款软件、21个case、11套硬件平台,预计会在合适的时机公开发布
作者
Author:
Entropy.S.I    时间: 2024-5-29 00:06
二分音符 发表于 2024-5-28 15:37
其实最大的差异是A100平台用的国产arm架构CPU,所以也配上了国产编译器,其他的各种编译方法也对比过,差 ...

我也测试了HGX-A100-80G-8GPU平台和RTX-4090-8GPU平台,做好调优后测试结果普遍比你公布的数据高20%~40%
作者
Author:
二分音符    时间: 2024-5-29 18:23
Entropy.S.I 发表于 2024-5-29 00:06
我也测试了HGX-A100-80G-8GPU平台和RTX-4090-8GPU平台,做好调优后测试结果普遍比你公布的数据高20%~40%

非常期待,我的projec快开始了,希望能用到最优的结果
作者
Author:
喝杯热水    时间: 2024-5-30 12:36
对于您测试的纯泛函体系,是不是448核心有点太多了?会不会遇到并行瓶颈。
作者
Author:
二分音符    时间: 2024-5-30 18:09
喝杯热水 发表于 2024-5-30 12:36
对于您测试的纯泛函体系,是不是448核心有点太多了?会不会遇到并行瓶颈。

我又测了下大体系多K点在两个节点(96核)的结果,938.9秒,八个节点(448核)是271.0秒,算下来效率是86.6%

作者
Author:
喝杯热水    时间: 2024-5-30 20:29
二分音符 发表于 2024-5-30 18:09
我又测了下大体系多K点在两个节点(96核)的结果,938.9秒,八个节点(448核)是271.0秒,算下来效率是86 ...

非常感谢!看来您的集群的并联效率非常不错~
作者
Author:
目前还不会计算    时间: 2024-6-2 11:22
szp12345 发表于 2024-5-27 23:38
感谢楼主分享的测试数据。
有个小建议,能否说明三种测试平台上的VASP编译方。
我一直用的是P100卡,双精 ...

一张4090差不多相当于2张P100,,, 就是你发的那个案例,我这买了2个4090显卡,当然cpu我用的是14900k




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3