龙空技术网

RTX4090科学计算之经典MD模拟全面测试

学术之友 207

前言:

当前姐妹们对“raptor计算一到一百的和”大致比较讲究,看官们都需要学习一些“raptor计算一到一百的和”的相关知识。那么小编在网上网罗了一些对于“raptor计算一到一百的和””的相关文章,希望你们能喜欢,小伙伴们一起来了解一下吧!

本文首发于计算化学公社,RTX4090 配置方案与软件搭配(DeePMD,Gromacs等)详情咨询 “庚子计算” 客服。

0 写在前面

这次测试最初的目的是证明用何种性能级别的CPU可在运行GPU加速GROMACS(简称GMX)时榨干最新顶级消费级GPU——NVIDIA GeForce RTX 4090,对RTX 4090进行迄今全网最具系统性的分子动力学(MD)模拟性能测试。由于中文互联网上与GPU加速MD相关的benchmark文章较少,本文的讨论将不会局限于RTX 4090本身,会做一些扩展讨论。

NVIDIA官方对相关软件已经进行了一些测试,但其测试只针对极度昂贵的数据中心GPU产品,以展示多GPU并行性能和其GPU节点对CPU节点的替代能力为主要目的;且笔者发现,其在使用不同软件运行STMV模型的测试中所用具体参数大相径庭,无法实现不同程序间的公平对比。因此,笔者特意在本次测试中使用了一些公平的模型和参数。此外,本次测试仅考虑单GPU运行的使用场景,因为这是实际使用中的大多数状态,且RTX 4090不具备NVLink,使用多GPU并行意义不大。

1 测试平台

硬件平台(由于51972暂时不能提供RTX 3090Ti,故用ROG STRIX RTX 3090额外超频150MHz并将功耗上限设为480W以模拟RTX 3090Ti):软件环境:Ubuntu 22.04.1 LTS Desktop; Linux version 5.15.0-52-generic; GNU 11.2; CUDA Tookit 11.8; NVIDIA GPU Driver 520.56.06

2 测试程序信息及相应模型参数

本次测试涉及GMX、AMBER、NAMD3、LAMMPS共4款MD软件,基准数据集和测试脚本在SI中(tar.bz2)。GMX、AMBER、NAMD3所用各模型主要参数如下表:

其中,A和A-2为表面活性剂在油-水界面的slab模型;B为体相的表面活性剂胶束模型;B-TI为模拟单个表面活性剂(134原子)从胶束中解耦过程的ΔG的热力学积分(TI)模拟的某个λ窗口模拟;4个STMV开头的模型均为STMV(烟草花叶病毒卫星病毒,经典的benchmark专用模型,近20年来被广泛用于HPC性能测试)在水环境中的模型,后3个是相应程序此前已公开报道的测试所用的模型与参数;benchPEP-h为若干小肽链在水环境中的模型。A、A-2、B、B-TI均选自笔者此前研究工作,与5月发布的HPC benchmark报告所用模型完全相同。

值得一提的是,STMV-AMBER测试中额外使用了AMBER官方benchmark文件包中的优化版参数进行测试,即所谓“Boost”设置,具体机制是通过手动指定合适的“skin_permit”参数以减少pair list的频繁更新引起的性能下降,根据AMBER开发组的说法,将此参数设为0.75可在多数体系中获得8-12%的性能提升,并兼顾模拟的“安全性”,但此功能未在公平版mod中启用。

10月11日笔者在BB空间发布“预告”后,有网友要求增加LAMMPS测试,但实际上笔者一开始特意将LAMMPS排除在测试列表外,因为其主攻固体材料模拟,力场基本与另3款软件不兼容,故无法与另3款软件横向对比;此外,其GPU加速功能对GPU的双精度浮点性能需求高,较不适合用来测试双精度浮点性能孱弱的游戏GPU。不过既然网友已明确提出需求,又考虑到RTX 4090的双精度浮点性能已超过1 TFLOPS,有一定测试价值,遂将LAMMPS加入测试列表。LAMMPS测试所用文件即为NVIDIA网站上公布的测试所用的文件,3个任务分别为LJ 2.5、EAM、Tersoff。经过测试,目前使用RTX 4090运行ReaxFF/C任务有bug,故放弃ReaxFF/C。也有网友提出希望测试VASP,但此软件是纯商业软件,笔者个人未购买使用许可,故无法进行测试,Material Studio同理(建议自发抵制VASP、MS这类溢价软件,尤其是MS)。本次测试所用的4款经典MD软件是当前最主流的,参考2021年计算化学公社论坛“你最常用的计算化学程序和DFT泛函”投票结果统计。

GROMACS 2022.3根据笔者博客上公布的流程编译CUDA版本;AMBER22根据笔者博客上公布的流程编译串行+CUDA版本,因为不测试多GPU并行,所以不编译MPI版本,也不启用NCCL;NAMD3直接使用官网提供的Alpha13预编译版本(NAMD_3.0alpha13_Linux-x86_64-multicore-CUDA-SingleNode.tar.gz,NVIDIA最新的测试也使用了此版本);LAMMPS版本为23Jun2022_update1,使用cmake预设文件“basic.cmake”和“kokkos-cuda.cmake”进行编译(“kokkos-cuda.cmake”中“Kokkos_ARCH_PASCAL60”改为“Kokkos_ARCH_AMPERE86”,未选择针对Ada Lovelace架构优化是因为目前没有相关选项),同时额外指定编译REAXFF包(-D PKG_REAXFF=on)。

3 发挥RTX4090的最大性能——选择合适的CPU

GMX的开发遵循硬件资源利用率最大化的原则,因此近些年来其GPU加速一直采用CPU+GPU的方案,运行MD模拟时需要CPU参与部分计算工作,CPU-GPU的任务分配在一定程度上可人工调节,以获得最优效率。在最新的版本中,GMX最多可将非键相互作用、成键相互作用、PME、坐标/速度/力更新和约束计算完全offload到GPU上运行(GPU-resident模式,须在mdrun命令中添加“-bonded gpu -update gpu”),但域分解(domain decomposition)、对搜索(pair search)、一些特殊力的计算以及特殊算法仍必须使用CPU执行。值得一提的是,只有当CPU资源严重匮乏时,采用GPU-resident模式才能快于使用CPU计算成键相互作用(J. Chem. Phys. 2020, 153, 134110 Fig. 10),而“CPU资源严重匮乏”对于不同模型并无确定的分界点,因此本次测试将分别记录以这两种方式运行GMX的性能数据。

近些年来,GPU性能增速飞快,CPU的性能开始表现出不足,例如2020年9月发布的NVIDIA GeForce RTX 3090,若用来运行GPU加速GMX,须配合同期的高端CPU——AMD Ryzen R9 5900X才能发挥出大部分性能。而RTX 4090的理论性能相较于RTX 3090翻倍有余,CPU性能的瓶颈将更为明显,因此,非常有必要研究如何让RTX 4090在GROMACS任务中发挥最大性能。

AMBER、NAMD3、LAMMPS这3款MD软件的GPU加速模块均采用了“纯GPU”方案,这与GMX不同。采用这种方案的程序在运行时仅会占用1个CPU线程,几乎所有计算都在GPU上完成。但CPU单核性能对这类MD任务运行速度的影响依然值得考虑。

本次测试使用了4款典型的CPU,其中,AMD Ryzen R9 7950X和intel Core i9 13900K都是最新的顶级MSDT平台CPU,特点是单核性能都非常强,多核性能也不弱;AMD EPYC 7R32适合计算密集型应用,具有48颗Zen2核心;intel XEON Platinum 8369B是近期intel阵营的高性价比服务器CPU,具有32颗Sunny Cove核心,在GMX测试中最多同时使用了2颗此CPU(64核)。

测试使用shell脚本自动运行,详见SI。在GMX测试中,STMV-NPT、STMV-GMX和benchPEP-h的性能数据并非直接取自mdrun运行日志,而是扣除Write traj.项的Wall time后重新计算。因为这3个模型模拟过程中不写轨迹,但GPU计算完成后会花较长时间写gro文件,而mdrun运行日志给出的性能数据包含了这一耗时。在运行时间较长的生产模拟中这一耗时可忽略不计,而在benchmark任务中理应扣除这一耗时。

图1展示了GMX运行各模型MD模拟的速度与所使用的CPU核数之间的关系。A和A-2模型中有大量成键项数量与原子数比值很大的分子(即烷烃和表面活性剂,其原子数占总原子数的60%),因此成键相互作用使用CPU计算与使用GPU计算的性能差异很明显,在图中直观地表现为两条曲线的交叉角度很大。其中A-2模型的cutoff更小,非键相互作用计算量更少,进一步突出了上述差异。在1250万原子的benchPEP-h模型的测试中,通过检查nvidia-smi dmon性能监控日志可发现,如果使用CPU计算成键相互作用,RTX 4090运行此模型时会出现间歇性的低时钟占用率、低功耗状态,且PCIe实时数据传输速率一直维持在近10GB/s,峰值可达20GB/s;而若采用GPU-resident模式,可以观察到GPU间歇性“熄火”的状况有一定改善,且PCIe数据传输量也有所减少;图1也显示对于该模型采用GPU-resident模式的模拟速度完全快于使用CPU计算成键相互作用。总之,对于大多数体系,只要CPU资源不是极度匮乏,都建议把成键相互作用放在CPU上计算(在mdrun命令中添加“-update gpu”,不添加“-bonded gpu”);而对于主观估计为CPU资源极度匮乏(例如使用服务器CPU搭配多块高性能GPU),或体系中成键项数量与原子数比值很大且使用了较小cutoff,或体系极度庞大(近千万原子级别)的情况,应当尝试采用GPU-resident模式,观察其速度是否更快。

7R32作为4款CPU中多核理论性能最强者,运行GPU加速GMX却最慢,其原因是GPU加速GMX时CPU部分的计算是纯OpenMP并行,这种并行模式在高并行度下并行效率低,且对CPU核心间通信延迟很敏感,而7R32的理论单核性能较差,其多核理论性能靠核心数量支撑,且CPU本身采用小芯片设计,48个CPU核心分布在6个CCD上,跨CCD延迟较高。

8369B虽然理论单核性能没有比7R32高很多,但它是单Die设计,核心间通信延迟很低,所以运行GPU加速GMX时其表现明显优于7R32(部分项目略低于之是因为受到客观条件限制,8369B使用了机架式平台,散热较差,RTX 4090高负载下的Boost频率比7R32所用的塔式平台低50MHz)。

7950X的表现比8369B更好,主要原因是其单核理论性能极强,达到了7R32、8369B的2倍以上,然而,7950X仍稍弱于13900K。

13900K采用了混合架构,P-Core与E-Core的性能差异极大,线程绑定的OpenMP并行在这种CPU上会使线程间有明显的负载不均衡问题,最终导致无法发挥出CPU的完整性能。从图1中也可发现,8-9核处普遍有一断层,但是,从第12核左右开始,混用P-Core与E-Core的速度就会反超使用8个P-Core的速度,intel Raptor Lake相较于前代Alder Lake增加E-Core数量、增大E-Core缓存、优化P-Core与E-Core间延迟是有明显益处的。13900K也是4款CPU中表现最好者。此外,从图中还可看出,24核稍慢于23核,因此,在使用13900K时,建议留一个E-Core供系统进程和GPU驱动使用,这也是GMX手册所建议的。

值得注意的是,13900K中16个E-Core的性能在本测试中仅相当于5-6个P-Core,且13900K本身还有混合架构导致的线程负载不均衡问题,但其配合RTX 4090运行GPU加速GMX的性能却比7950X稍强,出现这一现象的原因除了13900K P-Core的理论单核性能稍强于7950X外,也包括其核心间通信延迟总体上比7950X更低。7950X跨CCD的延迟过高,严重限制了其性能发挥。实际上从图1中也能看出,部分7950X的曲线在8-10核处有一凹陷,且8核之后曲线斜率明显变小。@ECSM_Official在这2款CPU的首发评测中就已测试了它们的核心间延迟:Raptor Lake S,再进一步,Intel Core i9 13900K评测;它很接近完美了,AMD R9 7950X全面评测。

综上,在GPU加速GMX这一应用场景中对CPU的需求有以下特征:首先,需要单核性能与多核性能都强的CPU,相同理论多核性能下,单核越强、核数越少越好;其次,核心间通信延迟对CPU性能发挥有很大负面影响。

图2展示了4款CPU配合RTX 4090运行GMX、AMBER、NAMD3和LAMMPS的性能,0%基准线是7950X。前2幅小图是图1的另一种表现形式,从中可以发现,对于GMX,CPU多核性能对不以GPU-resident模式运行MD任务的速度有很大影响,但对GPU-resident模式影响较小。从后4幅小图中可以发现,CPU单核性能对4款MD软件运行MD任务的速度均有影响,其中对GMX和AMBER的影响很明显,而对NAMD3和LAMMPS的影响相对小一些。

再谈谈采购建议。若使用RTX 4090加速GMX,当下最佳搭档CPU是intel Core i9 13900KF,如果采购时发现AMD Ryzen R9 7950X及其主板的价格远低于前者,也可买之。如果预算较低,打算选4080 16GB、3090Ti级别的GPU,推荐13700KF,不推荐7900X。暂不推荐任何服务器CPU,尤其是AMD EPYC CPU,若已有这类CPU,可在此基础上添加多块RTX 4090,为每块RTX 4090保留8-16核,以GPU-resident模式运行MD模拟。采购用于搭配RTX 4090运行AMBER、NAMD3或LAMMPS的CPU时,单核性能同样是首要关注因素,但不必选13900K,用13600KF配2块RTX 4090即可。

4 发挥RTX4090的最大性能——选择合适的CPU

RTX 4090的理论性能是RTX 3090Ti的2倍,这一次的性能提升可能是十多年来NVIDIA消费级GPU性能提升最大的一次,非常有必要测试并对比两者用于GPU加速经典MD模拟时的实际性能。此外,实际做研究时,在系统稳定的前提下计算速度越快越好,能效并不重要,超频是可行的操作,笔者自己跑生产模拟时也会对硬件进行一些保守的超频,所以有必要测试保守超频的收益。

图3展示了RTX 4090和超频150MHz且功耗上限提升至600W的RTX 4090相较于RTX 3090Ti在各MD任务下的性能提升百分比,数据在3号和4号硬件平台(13900K平台)上测得。从图中可以发现,RTX 4090运行经典MD模拟的性能并没有实现普遍的“翻倍”,在不同模型、不同软件下的表现各不相同,超频收益普遍较明显。

对于GMX,当成键相互作用在CPU上计算时,不同模型的表现差异非常大,其中A-2模型极低的提升幅度显然是由于CPU性能有严重瓶颈,benchPEP-h模型提升幅度较低是因为CPU-GPU通信有明显瓶颈,这些都已在第3节有所讨论。从图1中可以知道,上述2个模型以GPU-resident模式运行速度明显更快,在实际生产模拟中必然会以GPU-resident模式运行,故可忽略图3第1幅小图中的这2个模型。当GMX以GPU-resident模式运行时,不同模型的表现差异显著缩小。对于GMX和AMBER来说,几个STMV模型基本实现了“翻倍”,其中AMBER的STMV-NPT模型提升幅度高达108.65%。作为“纯GPU”程序,AMBER和NAMD3下各个模型的提升幅度均达到了70%以上;AMBER的上限更高,且超频收益与超频幅度相符;而NAMD3下没有任何模型实现“翻倍”,超频的收益也不大。对于LAMMPS,LJ 2.5和EAM两个任务中RTX 4090性能实现“翻倍”,Tersoff任务离“翻倍”还有较大距离。而对比NVIDIA公布的测试结果,RTX 4090运行LAMMPS的性能(具体数据见SI)仍明显不如A100,甚至不如V100,这显然是因为RTX 4090无FP64执行单元,双精度浮点性能太弱。总之,以上结果体现了模型大小以及MD程序本身的设计对RTX 4090性能发挥的重要影响,实际上,模型大小的影响在一定程度上是软件优化的问题。

此外,通过检查nvidia-smi dmon性能监控日志还可发现,在测试运行过程中,全程显存占用率不超过60%,对GMX而言甚至不超过40%,所以显存不存在瓶颈,这否定了此前一些人关于“显存瓶颈”的猜想。需注意,显存占用率和显存使用量不同,前者是指在采样周期内GPU读写显存的时间百分比。

结合本节和第3节内容可得出结论:当前,制约RTX 4090的性能在GMX、AMBER、NAMD3和LAMMPS中发挥的主要瓶颈是CPU单核性能以及软件优化,对于GMX,CPU多核性能、CPU核间通信延迟以及CPU-GPU通信能力是次要瓶颈;当前,RTX 4090运行经典MD模拟的性能相较于RTX 3090Ti总体上有62~109%的提升,在使用合适的软件和模型的情况下,确实可实现“翻倍”,超频150MHz后实际提升幅度为1~6%。如今Ada Lovelace架构刚刚上市,并无针对性优化,预计在将来几个月,随着几款MD软件以及编译器和驱动层面对于Ada Lovelace架构的优化,RTX 4090运行MD模拟的性能还会有进一步提升。

5 发挥RTX4090的最大性能——选择合适的CPU

去年12月有朋友对NVIDIA官网测试结果做了详细分析( ,4楼),讨论的是STMV模型,但NVIDIA官方在使用不同软件运行STMV模型时所用的具体参数区别很大,无法实现不同程序间的公平对比,因此,笔者重新使用一些公平的参数对GMX、AMBER和NAMD3这3款主流MD软件的速度进行对比。

图4选取了在3号和4号硬件平台(13900K平台)上测得的数据,以在单CPU线程、GPU-resident模式下运行GMX的速度为100%基准;“max perf.”指的是图1中相应曲线最高点的数值,即充分利用13900K CPU资源后能达到的最高性能。从图4中可发现,虽然GMX的GPU-resident模式未彻底将MD计算转移到GPU,但其只用1个CPU线程来与AMBER公平对比时并无明显弱势,而GMX充分利用CPU资源后,性能还有巨幅提升,最终远超AMBER;此外,NAMD3的性能明显弱于GMX和AMBER。综上,当前还是最推荐广大研究者使用GMX和AMBER做经典MD模拟,这2款软件性能都不错(根据NVIDIA的测试,后者多GPU并行效率极高),且在功能方面可以互补,足以胜任绝大部分研究工作。

SI

致谢

本次测试所用的硬件由bilibili UP主@51972和庚子计算(济南庚子矩阵云科技有限公司)远程赞助,同时感谢他们专业且高效的协作,使本次测试得以顺利完成。

标签: #raptor计算一到一百的和 #md计算