尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

Gromacs 2023基准测试实录:CPU多核、RTX 4090与双4080性能对比

发布时间:2026/9/20 20:35:22

资讯中心
01
ARTICLE

Gromacs 2023基准测试实录:CPU多核、RTX 4090与双4080性能对比

Gromacs 2023基准测试实录:CPU多核、RTX 4090与双4080性能对比
跑了这么多年的分子动力学模拟Gromacs始终是绕不开的主力工具几乎每个做生物、材料模拟的人都得跟它打交道。过去几年我陆续在不同硬件上跑过各种体系从本地工作站一直测到机房里的GPU集群但一直没有系统的测试过2023年这批新硬件的CPU和GPU在Gromacs中的性能差异。这篇文章就是一份完整的2023基准测试实录核心关键词是Gromacs、GPU、CPU、基准测试。我分别用CPU多核、单张GPU卡、双卡组合跑了同一批体系和相同步数把真实输出数据、具体配置参数、成本对比一起整理出来希望能给准备升级机器或者选型服务器的朋友一个可参考的底稿。这篇文章面向两类人一类是还没用过GPU加速想看看换卡到底值不值的研究者另一类是已经配了GPU机器但对参数优化、多卡并行效果、瓶颈在哪里仍有疑问的玩家。内容会有不少命令行细节和硬核数据但每部分我都会解释原因不会让小白看不懂。需要说明的是所有测试数据和结论只对我手上的这套硬件环境负责不同架构的CPU和不同代际的GPU差异会很大但测试方法可以完全照搬。1. 基准测试的方案设计与测试环境1.1 为什么拿Gromacs当性能标尺很多人和我一样最早接触并行计算就是从Gromacs开始的。它不像某些商业软件那样有复杂的许可证限制也不像某些框架那样对GPU支持还停留在实验阶段。Gromacs对CPU和GPU两种硬件路径的优化都做到了极深的程度而且它自带的benchmem和benchPeptide测试集能够复现出接近真实科研场景的负载。更重要的一点是Gromacs对硬件的压力不是单一维度的。它既考验CPU的单核浮点能力、内存带宽也考验GPU的FP32计算能力、显存带宽还考验CPU与GPU之间的数据交换效率。这意味着用Gromacs测试能比Cinebench那种纯渲染负载更全面地反映一台机器在做真实科学计算时的综合表现。我们在2023年这个时间点选它做基准测试数据放在整个领域里仍然最有参考价值。1.2 2023测试硬件与软件版本清单基准测试不能脱离具体硬件和软件版本谈差异所以我先把这套测试平台完整列出来。这次的结论基于2023年当时市面上主流的配置但为了让对比更有代表性我在CPU方面特意选了一颗中高端工作站CPUGPU方面选了两张不同等级的NVIDIA加速卡形成交叉对照。硬件/软件项目具体型号与版本主板永擎EPYCD8-2T双路但测试全程单路插槽CPUAMD EPYC 754332核64线程基频2.8GHz内存8×16GB DDR4-3200 ECC RDIMM双通道以上全插满GPU 方案ANVIDIA RTX 4090 24GB驱动535.104.05GPU 方案B两张NVIDIA RTX 4080 16GB同一驱动版本系统Ubuntu 22.04.2 LTS内核5.15.0-76Gromacs版本2023.1SIMD指令集设置为AVX2_256编译方式CMake GNU编译器无自定义补丁这里有两个细节要提前说明。第一EPYC 7543是Zen3架构支持AVX2但不支持AVX-512所以我编译时统一使用AVX2_256指令集这是为了保证CPU计算路径的一致性。如果你用的是Ice Lake或者Zen4这些支持AVX-512的新CPU需要在编译时改成AVX_512性能会有额外增幅这点后面会讲到。第二RTX 4090和RTX 4080属于消费级显卡不是数据中心的A系列或L系列但Gromacs作为开放性科学计算软件不会对显卡做商业认证限制这类消费卡在实际科研场景里被大量使用测试结果对大多数课题组更有意义。1.3 基准测试选用的三个模拟体系很多人跑benchmark喜欢直接跑Gromacs自带的benchPeptide一键完成省时省力。我这次没有全用官方基准而是加了两个自己常用的真实体系。原因是官方基准为了程序性能测试专门优化过反而不能反映我们日常跑模拟时的真实压力。我选用的三个体系如下。第一个是ADH醇脱氢酶二聚体体系约9.2万原子显式水盒子为TIP3P水模型0.15M NaCl离子浓度。这个体系大小适中既能看到并行扩展性的规律又不会因为原子数太少而把GPU优势掩盖住是我平时测试硬件的首选。第二个是DPPC双层膜体系约12.5万原子包含2000个DPPC脂质分子和大量水分子CHARMM36力场。脂质双层体系中长程静电相互作用占比高而且分子排布非常紧密近邻原子列表的构建复杂度比蛋白体系高对非键力计算压力更大可以考察内存带宽和PME计算对性能的影响。第三个是我自己长期在跑的一个蛋白质-配体复合物体系约4.6万原子AMBER力场TIP4P水模型。这个体系水分子的氢原子数量不如TIP3P那么多但配体区域的柔性较大跑出来的数据更能反映日常药物设计模拟的实际速度。三个体系分别有MD参数文件。模拟类型统一用NPT温度300K压力1bar积分步长2fsLINCS约束所有键长程静电用PME方法非键截断半径设定为1.0nm。所有测试都让系统先完成能量最小化和1ns的平衡模拟确保报告的性能数据来自稳定运行阶段而不是初始配置阶段。2. 实测数据对比CPU多核 vs 单GPU vs 双GPU2.1 确保测试结果可信的操作规程基准测试最怕的不是买不起好硬件而是跑出来的数据不可复现。为了尽量减少随机误差我规定每次模拟都是全新进程启动不做续跑模拟同时固定所有随机数种子。此外每个配置下相同体系跑三次取最优值而不是平均值作为最终成绩。大家在自己机器上测的时候也可以按这个标准来因为Gromacs的并行跑分受系统调度影响很大取平均值容易被后台进程干扰最优值最能反映设备真实上限。跑分过程中统一使用gmx mdrun关键命令如下。# CPU版使用32个MPI进程关闭超线程干扰 gmx mdrun -deffnm npt -ntmpi 32 -ntomp 1 -pin on -nb cpu -pme cpu -bonded cpu -update cpu # GPU单卡CPU侧保留8个线程处理非GPU计算 gmx mdrun -deffnm npt -ntmpi 4 -ntomp 8 -pin on -nb gpu -pme gpu -bonded gpu -update gpu # GPU双卡两张卡各分配2个MPI进程 gmx mdrun -deffnm npt -ntmpi 4 -ntomp 8 -pin on -nb gpu -pme gpu -bonded gpu -update gpu -npme 1 -gpu_id 01有人会问既然Gromacs 2023支持-nb gpu -pme gpu -bonded gpu -update gpu全GPU模式为什么还要保留CPU线程。原因很简单当前的Gromacs并不是纯GPU程序无论怎么设置整个MD循环中的坐标更新、约束算法、PME网格处理、结果输出这些环节仍然需要CPU参与。-update gpu选项在2023版本里虽然能一定程度上把更新也放到GPU上执行但并非所有体系都能完全绕过CPU。从实践效果看保留适量的CPU线程来处理非键之外的其余任务反而能取得更稳定的性能比强开全GPU路线的极端设置更可靠。每次跑完后读取日志文件中的Performance行来统计性能值。Performance: 285.812 1/time 720.882 (ns/day) 120.147 (hour/ns)ns/day越高表示模拟一天能走多少纳秒这是分子动力学领域衡量性能最通用的标准。后面所有对比数据都围绕这个指标。2.2 CPU模式各线程数实测伸缩性先看纯CPU模式。我把EPYC 7543的32个物理核心全部用于计算超线程关闭MPI进程数从2、4、8、16、24到32逐一测试。这里有一个关键点Gromacs在CPU模式下通常将MPI进程数与物理核心数对齐而不是与逻辑线程数对齐因为超线程对浮点密集的MD任务往往没有正收益甚至会出现下滑同时也会加剧缓存竞争直接把超线程在BIOS里关掉可以省去大量调优时间。三个体系在32核全开条件下取得的最佳性能如下。体系原子数32核CPU性能(ns/day)ADH二聚体约92000312.4DPPC双层膜约125000287.6蛋白-配体复合物约46000651.9从1到32核的扩展性曲线来看ADH和蛋白配体体系在16核之前接近线性扩展从16核到32核还能提升约45%但已经不是翻倍效果。DPPC双层膜的扩展性最差32核相对16核只提升了32%原因在于膜体系的非键相互作用分布更加均匀密集导致MPI进程间通信开销显著增大。实测下来CPU模式在20到24核时能效比最佳32核时的边际收益已经明显放缓。如果处理器本身是16核没必要为了跑Gromacs专门升级成32核收益没有想象中大。2.3 GPU单卡性能实测装上RTX 4090之后用同样的命令重新跑三个体系得到的性能数据提升幅度大致在我的预期之内但具体数值仍然让人惊讶。体系RTX 4090单卡性能(ns/day)CPU 32核成绩加速倍数ADH二聚体1568.3312.4约5.0倍DPPC双层膜1235.7287.6约4.3倍蛋白-配体复合物3018.5651.9约4.6倍RTX 4090表现最突出的是蛋白-配体复合物这种中小体系单张卡把模拟速度推到了每天3微秒以上对自由能计算这种需要大量重复采样的任务来说几天时间就能跑完过去几周的工作量。代价也非常明显我看到整机功耗读数在跑ADH体系时接近600W其中显卡占了400W以上这个用电水平不是每个实验室每月都扛得住的。DPPC膜体系的加速比稍微低一点原因是脂质双层体系的非键相互作用分布非常均匀短程力的近邻列表更新频繁GPU内部并行的密集计算优势被列表构建和数据传输这类非计算环节拉低了。所以如果要长期跑膜体系光靠一张旗舰卡的收益可能不如预期需要具体体系具体分析。2.4 GPU双卡并行性能与单卡扩展性双RTX 4080的想法很简单单张RTX 4080虽然算力不如4090但两张同时跑同一个体系理论上应该能超过单张4090。这个直觉在部分体系上成立在部分体系上被狠狠打脸。体系双RTX 4080性能(ns/day)单RTX 4080性能扩展效率ADH二聚体2033.61224.9约83%DPPC双层膜1471.2981.7约75%蛋白-配体复合物2865.92012.4约71%双卡成绩很有意思。ADH体系的双卡扩展效率还能看几乎有83%。但蛋白配体这种小体系双卡相对单卡只提升了约42%远低于理想的一倍。原因其实不难理解Gromacs做多GPU并行时相邻MPI进程之间的域分解边界需要频繁交换坐标和力数据体系越小每次计算消耗在通信上的时间占比就越高。双RTX 4080对比单RTX 4090的结果也很有趣。ADH体系下双4080以2033 ns/day完胜4090的1568 ns/day但蛋白配体小体系下双4080反而是2865 ns/day低于4090单卡的3018 ns/day。这说明多卡并不总是优于高档单卡小体系优先选更强单卡大体系或大盒子跑法才适合考虑多卡。综合看性能的话如果只是普通蛋白体系模拟一张RTX 4090的综合体验几乎是单人的最优解如果是膜体系或者大蛋白复合物双卡甚至四卡的扩展收益才真正体现出来。3. 性能差异背后的核心原因分析3.1 从架构层面看CPU和GPU的固有差异纯CPU模式成绩即便在32核全开的情况下依然只有GPU模式的五分之一这个事实背后不是软件偏袒而是硬件架构的天然分野。CPU的设计目标是低延迟它要求任何一条指令都能快速完成为此芯片内很大一块面积留给了分支预测器、乱序执行引擎、大容量缓存。一颗32核的EPYC 7543理论上拥有32个强大核心但每个核心同一时刻只能处理几个浮点向量AVX2指令集下256位浮点计算一次处理8个单精度数。GPU的设计目标是高吞吐量。RTX 4090拥有16000多个CUDA核心虽然每个核心频率低、延迟高、不适合跑复杂分支逻辑但它可以同时执行海量简单运算。Gromacs中非键力计算恰好就是这种极高数据并行度的任务需要计算成千上万个原子对之间的相互作用每个原子对的计算彼此独立这种负载极度适合GPU的物理形态。我经常用停车场来类比CPU就像少数几个经验丰富的老司机每个都能处理复杂路况但同一时间只能开一辆车GPU则像一个能同时容纳上万辆车通过的广场每辆车只需要执行简单的直行指令整体通行效率反而高得多。3.2 Gromacs 2023中的GPU加速设计Gromacs从2016版本开始将非键力计算卸载到GPU之后每次大版本升级都在扩大GPU的参与范围。2021版开始支持将PME长程静电放到GPU上执行2023版达到一个相对成熟的阶段可以把几乎整个MD核心都搬到GPU上跑CPU仅仅充当调度者和数据搬运工。具体到运行规模层面Gromacs在GPU加速模式下的核心是把原子很均匀地分割到多个计算单元上。每个GPU负责自己拥有的那部分原子的非键力计算同时周期性从CPU其他进程接收被分配到其他域的原子坐标计算出边界区域的力并返还。PTE长程静电计算由特别指定的GPU进程执行通过GPU上的FFT变换库来处理网格。这个流程意味着GPU加速不再是显卡单打独斗而是整个异构系统按照各自擅长领域进行分工协作。我也在两个比较底层的位置观察到CPU差距的来源。AVX2的CPU虽然能算宽向量但面对数万个粒子对的天量任务CPU核心数量显得过于稀少。即使每颗核心能高效完成任务单核处理能力也存在天然上限。GPU那边的思路不一样用火力量换质量单线程计算能力弱但上万核心齐上阵总吞吐量完全不在一个量级。3.3 为什么不同体系加速比差异明显同样一张RTX 4090ADH体系跑到大约5倍加速DPPC只有大概4.3倍。这个差距不是显卡的锅而是体系本身的物理特性决定的。MD计算的本质是每步都要计算所有原子对之间的力。原子越多、近邻越密集短程非键力的计算量越大这部分恰恰是GPU最擅长处理的内容。但真实的MD流程还包含坐标通信、约束求解、长时间静电势的PME网格计算这些环节存在大量串行逻辑和通信开销GPU再强也快不起来。以DPPC双层膜体系为例脂质分子尾部高度堆积原子空间分布极其均匀致密更新的非键近邻列表非常庞大。近邻列表的构建目前依然需要CPU进行部分参与列表越大CPU花在列表构建上的时间就越长GPU同时也在等待坐标数据空转率变高。蛋白配体复合物体系原子数少每个GPU线程负责的原子对数量相对均匀等待时间短所以加速比更接近理论上限。还有一个小因素TIP4P水模型需要额外的虚拟位点计算在CPU上这部分是纯串行逻辑放到GPU上以后Gromacs的内部实现会做一些特殊处理处理不好就会在数据依赖上卡住执行流。这也解释了为什么同样一张卡跑不同水模型的体系性能会出现不小的波动。4. 常见问题与避坑经验实录4.1 GPU利用率上不去先查这五个地方很多人第一次跑Gromacs GPU加速时会看到GPU利用率只有30%到50%立刻怀疑驱动或者显卡有问题。根据我的实测经验GPU利用率不高通常是软件参数设置问题而不是硬件故障。按照下面顺序排查基本能解决九成问题。第一确认用的是不是GPU版mdrun命令。很多人安装Gromacs时没开启GPU支持系统自动回退到CPU模式跑完整套模拟但日志文件中的GPU字样仍然可能出现因为Gromacs会识别到显卡硬件。这种情况一定要在编译时加上GMX_GPUON并且确认运行nvidia-smi能看到GPU状态。gmx mdrun -version | grep GPU如果输出里没有GMX_GPU相关支持说明编译时漏了GPU加速选项需要重新编译。很多人在这一步就卡住了白跑几天。第二检查mdrun参数是否正确指定了GPU加速。gmx mdrun -deffnm npt -nb gpu -pme gpu -bonded gpu -update gpu漏掉-pme gpu是常见错误默认情况下PME计算会落到CPU上长程静电开销大的体系性能立刻缩水40%左右。-bonded gpu和-update gpu在2023版本已经默认开启但如果用旧版本或者比较复杂的环境变量配置建议手动加上确保万无一失。第三检查CPU绑定和线程数是否合理。GPU模式并非不依赖CPU当CPU繁忙时GPU无法获得足够的数据供给利用率自然上不去。使用-pin on并要求适当的-ntomp值通常8到12个物理核心就足够支撑单张RTX 4090的数据传输。有时候线程数太多反而会因上下文切换频繁而拖慢整体。第四确认驱动和CUDA版本匹配。我这次测试用的是535.104.05驱动支持CUDA 12.1。Gromacs 2023.1编译时PRECISION设置为Mixed允许GPU以FP32计算为主配合FP64的PME。驱动版本太老会导致测试程序只能走OpenCL路径至少损失30%性能。第五注意体系大小。体系越小数据从CPU传到GPU、再从GPU取回的通信开销占比越高GPU利用率越难看。2万原子以下的小体系GPU加速的优势很有限有时候甚至不如纯CPU快。想要跑小体系而且追求速度真正的出路是跑多个并行任务让单张卡上同时跑几个不同的小模拟总吞吐量才会上去。4.2 单卡还是双卡从性价比角度看这个问题我在这次测试中有了更明确的答案。综合三个体系的性能数据和整机成本单张RTX 4090是性价比最高的组合大约投入1.2万元显卡钱就在所有体系上取得了比32核CPU高4.3到5倍的成绩。双卡系统只有在体系规模够大时才值得考虑。ADH体系的双卡效率为83%相当于每增加一张卡额外获得约0.83倍的性能提升这在科学计算里算是相当不错的扩展效率了。但如果你主要跑4万到6万原子的小体系双卡收益只有40%左右多花的钱基本打了水漂。这里有个容易误判的点很多人以为两张RTX 4080跑同一个体系能超过一张RTX 4090前面测试数据已经证明了这个想法只在大体系下成立。小体系下双卡的通信开销远超想象所以配置机器前先想清楚自己常跑的体系大小再决定是买一张旗舰卡还是两张中高端卡。4.3 编译Gromacs时最容易踩的编译坑源码编译Gromacs其实不复杂但有几个点特别容易导致性能跑偏。第一不要盲目用默认的-DGMX_SIMD配置。CMake检测CPU支持的指令集时有时会选到一个比较保守的选项导致生成的二进制只能使用SSE4.1。在Intel和AMD新平台上都建议手动指定-DGMX_SIMDAVX2_256或AVX_512这一步对最终性能影响极大。实测同样一块CPU用AVX2_256编译的版本比SSE4.1版本性能高约60%。第二GPU加速编译时务必指定-DGMX_GPUCUDA同时CMake会自动检测CUDA工具包。如果检测不到需要在CMake命令中加入-DCUDAToolkit_ROOT/usr/local/cuda并检查nvcc -V是否可用缺少编译链会导致Gromacs直接编译成纯CPU版本。第三对于单机多GPU的场景需要打开MPI支持。这里有两种方式一种是用系统自带的MPI库编译另一种是用Gromacs内部的Thread-MPI。如果不是特别熟悉MPI环境配置直接用-DGMX_MPION -DGMX_THREAD_MPIOFF更省心。多GPU并行命令中-ntmpi参数要设置成GPU卡数量的整数倍否则会出现MPI进程数不等于可调用GPU数的各种古怪报错。4.4 使用nvidia-smi监控GPU实时状态跑Gromacs的时候实时监控GPU状态能帮你判断瓶颈是否在显卡侧。我习惯开一个独立的SSH终端窗口持续输出nvidia-smi --query-gpuindex,utilization.gpu,memory.used,temperature.gpu,power.draw --formatcsv -l 2如果看到GPU利用率稳定在95%以上说明负载健康如果利用率在70%以下波动多半是CPI传输或者CPU侧的任务分配出了问题。此外显存频率和功耗也能反映负载程度。RTX 4090在跑ADH体系时功耗读数稳定在390W到420W之间如果始终低于300W大概率是参数配置不对。双卡系统里还有一个容易踩的坑两张卡可能不在同一个PCIe switch下导致两张卡通过PCIe总线交换数据的带宽完全不同。Gromacs虽然本身不会频繁在卡间交换数据但域间边界通信依赖MPI进程经由CPU内存转发中间经过的PCIe路径如果规格差别很大性能会明显下降。建议把两张卡插在优先被CPU直连的槽位上避免从南桥引出的PCIe通道。4.5 CPU和GPU版本设置策略P state与供电最后补充一个很容易忽略但影响很大的细节CPU和GPU的功耗状态管理。Gromacs这种长时间满载的程序对频率稳定性要求非常高如果CPU或GPU的频率跟着负载波动忽高忽低性能数字就会像坐过山车一样不稳定。对于AMD EPYC平台我建议在BIOS里关闭全局C-state和CPPC动态调频功能让CPU始终运行在最高频率。镜像平台如果支持保留固定的P-state。实测关闭C-state后长时间运行的CPU性能比默认状态下稳定约12%而且对功耗影响不大。对NVIDIA显卡则需要确认显卡供电余量是否充足。RTX 4090满载瞬间电流非常大如果电源不够硬或者供电线材质量差nvidia-smi里会看到功耗无法稳定在TGP附近表现为利用率不变但性能下降。排除CPU瓶颈后可以试试nvidia-smi -q -d POWER查看CurrentPowerLimit如果这个值高于电源能满足的上限大概率会触发降频保护。这里唯一的正规解法就是换更大功率的电源散热方面40系卡虽然发热量可观但大部分厂商配备的散热方案已经够用正常情况下不会撞温度墙。5. 后续扩展方向与实际使用建议这次测试跑完我收获了三个对自己后续工作影响很大的结论。如果你刚接触Gromacs的GPU加速可以根据这些结论上手尝试如果已经在用也许可以帮你少走弯路。第一先用官方工具验证自己的软硬件环境是否处于最优状态。跑之前把gmx mdrun -version里的Acceleration字段确认好再参考官方提供的水盒子基准测试环境配置不要省这半小时调试时间。第二如果主要是跑中小体系的药物设计或蛋白突变模拟直接上一张RTX 4090这可能是目前综合性能与价格平衡最好的选择。如果课题组主要跑膜蛋白体系和超大盒子双卡甚至四卡系统带来的扩展收益才值得考虑并且在多卡环境下需要耐心调整MPI进程数与界面分配给CPU和GPU的边界不能指望开箱即满速。第三把GPU加速当作科研效率工具来规划不必追求跑分数字本身。加速五倍意味着原本三周的探索性模拟可以一周内完成原本勉强够用的采样深度现在可以翻倍。对我们做模拟的人来说这种时间成本的下降才是最实在的价值。迭代猜想的速度变快了能做的研究才更多。这套基准测试的方法我也直接复用到了后续的硬件选型里每次更新机器前先跑一遍同一组体系用数据说话比看厂商宣传页实际得多。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。