本帖最后由 Entropy.S.I 于 2023-8-29 03:44 编辑
主流分子动力学程序在AMD、NVIDIA和Intel的消费级GPU上的性能基准测试 ——Switch to AMD【第1集】
打击黄狗,人人有责
0 前言
近两年,全球有大量顶级超级计算机采用了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性能。 最后,本文不会提供关于全文的结论,读者应当仔细阅读文章的每一部分,乃至每一句话,然后各取所需。
1 测试方法
硬件: 操作系统: Ubuntu 22.04.3 LTS, Linux 6.2.0-26-generic x86_64, GNU 11.4.0 GPU驱动和工具链: 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的版本。 基准测试数据集:
2 结果与讨论
2.1 GROMACS原生CUDA版和SYCL+CUDA版在NVIDIA GPU上的效率对比 相较于CUDA原生版本,SYCL+CUDA版本普遍存在12-17%的性能损失。有趣的是,对于benchPEP-h这样的超大体系,SYCL+CUDA版本有令人难以置信的加速效果。通过性能-核数曲线可以看出,SYCL后端会产生一些额外的开销,导致GROMACS在bonded CPU的情况下耗尽最后一个CPU核心后性能大幅下降。
2.2 性能排行 排序依据:对于GROMACS、Amber和OpenMM,选择足以“榨干”GPU的STMV体系,使用原版参数,不做任何修改;对于LAMMPS,使用修改后的ReaxFF/C体系。
2.2.1 GROMACS 2023.2 此处所使用的数据是扫描不同核数以及不同bonded选项所得的最大值。AMD GPU和intel GPU在GROMACS中的性能表现与其理论性能相去甚远,这或许可以被解释为当前SYCL后端的效率仍然不足。(8月28日更新:根据GROMACS核心开发者Szilárd的讲解,这样的说法可能并不合适)
2.2.2 Amber 22 AMD GPU的表现基本符合预期,在STMV体系中RX 7900 XTX比RX 6900 XT快了41%,达到了RTX 4090的70%。Radeon Ⅶ令人印象深刻:在STMV体系中达到了RTX 4070的92%。
2.2.3 OpenMM 8.0.0 AMD GPU在STMV体系上的表现非常好:7900 XTX可以达到RTX 4090的86%的性能;6900 XT可以达到RTX 4080的90%的性能;而Radeon Ⅶ几乎打平了RTX 3080Ti / 3090,这非常令人惊奇。 本次测试的部分数据近期或将更新在OpenMM官网。值得一提的是,其他用户也对OpenMM-HIP的性能做了许多测试,包括使用最新推出的Windows HIP SDK在Windows下运行。该用户使用了Sapphire Nitro+(蓝宝石超白金),具有比笔者的MSI GAMING TRIO CLASSIC(微星魔龙)高得多的TGP和boost频率,因此在STMV体系中获得了53.5723 ns/day的性能,是RTX 4090的90%以上。
2.2.4 LAMMPS 2Aug2023 – Kokkos 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模拟的性能却相反,这令人意外。
2.3 数据总表 总的来说,相较于NVIDIA GPU,AMD GPU对于较大的体系具有很好的性能,但对于较小的体系表现不佳。
3 补充说明
对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系列的基准测试仍然缺乏,因此,欢迎有条件的网友在这些方面做贡献。
|