近两年,全球有大量顶级超级计算机采用了AMD GPU作为异构加速器,因此大量HPC应用程序开始了移植到ROCm软件栈的进程,并且其中很大一部分已经具有很高的完成度和很好的性能,可以用于正式的科学研究。此外,也有一部分程序原生支持了intel GPU。鉴于此,笔者集齐了所有NVIDIA Ada Lovelace架构桌面GPU、近5年发布的所有高端消费级AMD GPU,以及intel当前最高端的消费级GPU (ARC A770),进行了一系列针对分子动力学(MD)性能的基准测试。
一些程序在很多年前就已通过OpenCL支持了不同厂商的GPU,但OpenCL效率低下,实际性能无法达到可用的水平,因此主流GPU厂商早已放弃了对OpenCL的维护。鉴于此,本次测试将采用更为高效和现代化的解决方案。
AMD Infinity Hub列出了所有已经兼容AMD GPU和ROCm软件栈的HPC和AI应用程序,但其中的介绍过于粗浅,若要了解如何在AMD GPU上运行这些应用程序,应当仔细阅读相应程序的官方文档/手册/Readme/Wiki。本次测试涉及4款分子动力学应用程序:GROMACS、Amber、OpenMM和LAMMPS。关于它们如何在AMD GPU上运行,可进一步阅读Switch to AMD的第2集。
关于对AMD GPU的适配,在这4款程序中,除GROMACS以外均直接走了HIP路线,即直接使用AMD提供的HIP编程模型实现与CUDA平台相同的GPU加速功能,这样的做法具有和CUDA一样的缺点——一份代码只适用于一家制造商的GPU。
GROMACS的路线则与其他程序不同。从2023版开始,GROMACS可以使用一种新型异构编程模型——SYCL——来实现不同种类、不同制造商的计算硬件之间的灵活迁移,而无需更改源代码。通过SYCL后端,GROMACS 2023如今可以在任何已有可用的SYCL编程接口的计算硬件上实现所有CUDA支持的加速功能,而在用户应用层面上与CUDA版本完全没有区别。因此,先前基于NVIDIA GPU的大部分GROMACS使用经验和模板都可直接套用在这些不同的硬件上。“已有可用的SYCL编程接口的计算硬件”包括一切LLVM支持的CPU、AMD GPU、intel GPU、NVIDIA GPU、海光DCU等。值得一提的是,摩尔线程GPU未来也将通过MUSA Toolkit的更新来支持SYCL。
此外,虽然最新版的Kokkos(LAMMPS的GPU加速模块)已经初步支持了SYCL后端,可以通过intel oneAPI DPC++编译兼容intel GPU的Kokkos,但intel ARC A770没有双精度计算能力,因此,本次测试并不会涉及ARC A770的LAMMPS Kokkos性能。
最后,本文不会提供关于全文的结论,读者应当仔细阅读文章的每一部分,乃至每一句话,然后各取所需。
Ubuntu 22.04.3 LTS, Linux 6.2.0-26-generic x86_64, GNU 11.4.0
For AMD: AMD GPU driver version 6.1.5.50600-1609671, ROCm5.4.6~5.6.0;
For NVIDIA: NVIDIA GPU driver 535.86.05, CUDA Toolkit 11.8;
For Intel: Intel GPU driver i915 release 4/21/2023, xpu-smi, Intel oneAPI Toolkits 2023.2 (Base Toolkit + HPC Toolkit)
4款应用程序均从源码编译,启用针对GPU架构的优化。需注意,对于NVIDIA GPU的GROMACS测试,不仅编译了CUDA版本,也编译了OpenSYCL backend + CUDA runtime的版本。
GROMACS、Amber、LAMMPS的数据集基本上与去年10月的测试相同。在GROMACS和Amber中包含了一些笔者个人的数据集(A、A-2、B和B-TI),详见去年10月文章。在Amber数据集中新增了用来与OpenMM进行公平对比的模型,但本文不会讨论这部分内容。修改了LAMMPS数据集的模型规模:在LAMMPS官方原版的基础上,向3个空间维度replicate,使VRAM消耗量达到50%以上,以匹配NVIDIA网站上的测试结果。此外,对于OpenMM,使用来自官方软件包捆绑的基准测试数据集。本此测试所使用的数据集(包含运行测试所用的脚本)可通过下方链接下载。阿里云盘(EXE格式的自解压文件,双击以解压): https://www.aliyundrive.com/s/5L35M77DCzA;提取码:8si3。Google Drive: https://drive.google.com/drive/folders/1pKfgHuk3eb0VZ-txbv03TMPCB8tFR_J- (包含本文PDF版)
相较于CUDA原生版本,SYCL+CUDA版本普遍存在12-17%的性能损失。有趣的是,对于benchPEP-h这样的超大体系,SYCL+CUDA版本有令人难以置信的加速效果。通过性能-核数曲线可以看出,SYCL后端会产生一些额外的开销,导致GROMACS在bonded CPU的情况下耗尽最后一个CPU核心后性能大幅下降。
排序依据:对于GROMACS、Amber和OpenMM,选择足以“榨干”GPU的STMV体系,使用原版参数,不做任何修改;对于LAMMPS,使用修改后的ReaxFF/C体系。
此处所使用的数据是扫描不同核数以及不同bonded选项所得的最大值。AMD GPU和intel GPU在GROMACS中的性能表现与其理论性能相去甚远,这或许可以被解释为当前SYCL后端的效率仍然不足。(8月28日更新:根据GROMACS核心开发者Szilárd的讲解,这样的说法可能并不合适)
AMD GPU的表现基本符合预期,在STMV体系中RX 7900 XTX比RX 6900 XT快了41%,达到了RTX 4090的70%。Radeon Ⅶ令人印象深刻:在STMV体系中达到了RTX 4070的92%。
AMD GPU在STMV体系上的表现非常好:7900 XTX可以达到RTX 4090的86%的性能;6900 XT可以达到RTX 4080的90%的性能;而Radeon Ⅶ几乎打平了RTX 3080Ti / 3090,这非常令人惊奇。
AMD Radeon Ⅶ凭借3.36 TFLOPS的峰值FP64性能,使ReaxFF模拟的性能超越了RTX 4080、RX 7900 XTX和RX 6900 XT,达到了RTX 4090的78%。进一步与NVIDIA官方的数据对照,Radeon Ⅶ具有V100 SXM的35%的性能。RX 7900 XTX的峰值FP64性能高于RX 6900 XT,但ReaxFF模拟的性能却相反,这令人意外。
总的来说,相较于NVIDIA GPU,AMD GPU对于较大的体系具有很好的性能,但对于较小的体系表现不佳。
对SYCL的全面支持是GROMACS 2023最重要的升级,遗憾的是目前广大用户对此还没有明显反响。根据经验,到今年底或明年初时GROMACS 2023将进入patch更新的中后期,届时使用AMD和intel GPU搭配GROMACS 2023将可用于生产模拟,正好届时AMD ROCm软件栈也将正式支持RDNA 3 GPU。
文章只展示了本次测试获得的不到5%的数据,因此讨论是高度概括性的。实际上,有大量更加详细的对照实验,限于篇幅和数据处理的工作量,没有发布。例如不同软件版本、编译器版本、驱动版本、浮点精度、FFT后端等。关于这些详细的对比,诸位可以随意提问,笔者会视情况提供相应的数据。
本文中不同应用程序中名称相似的体系并不代表其具有相同的参数,因此无法用于公平对比不同应用程序的效率。在去年10月的文章中,就曾对比过这种效率,当时的结论是:在硬件搭配和GROMACS MDRUN并行参数设置合适的前提下,GROMACS效率明显高于其他软件。本次测试加入了OpenMM,但真正可用于公平对比的数据未在文章中展示(虽然它们都在),此处仅补充一个简要结论:OpenMM 8.0.0对于较小的体系效率更高,最大~60%(DHFR);Amber22对于较大的体系的效率更高,最大~10%(STMV)。该结论是基于参数相同的模拟得出的,需要考虑的关键参数是力场、cutoff、步长、热浴和压浴。
关于硬件的多样性,目前AMD、NVIDIA和intel的消费级GPU都已经有充足的基准测试,NVIDIA的"RTX Pro" GPU和数据中心GPU也有一些基准测试(包括NVIDIA官方提供的数据,以及笔者几个月前测试的H100 PCIe、A100 PCIe和V100 PCIe的数据),而AMD Instinct MI系列和intel Data Center GPU MAX系列的基准测试仍然缺乏,因此,欢迎有条件的网友在这些方面做贡献。
赵小壮 发表于 2023-9-12 19:57
显卡哥好强。请问我需要写cuda,刚买了一台笔记本i5-12450H+RTX4060,请问我应该如何搭建开发环境呢,我之 ...
Entropy.S.I 发表于 2023-9-15 19:20
我不用WSL,所以无法给出建议。根据别人使用WSL的反馈,我不认为使用WSL是一个好办法。
无独显轻薄本+高 ...
spock2012 发表于 2023-11-1 17:14
E大,根据您的数据总表,lammps计算时6900XT的表现要优于7900XTX?按照目前的价格那6900XT很有性价比啊
Entropy.S.I 发表于 2023-11-2 16:46
通过这么多渠道给我发消息,真挺难为你的。。。
欢迎光临 计算化学公社 (http://bbs.keinsci.com/) | Powered by Discuz! X3.3 |