Aug-2023 by ア熵增焓减ウ | yult-entropy@qq.com | entropylt@163.com
打击黄狗,人人有责
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, ROCm 5.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)
应用程序:
- GROMACS 2023.2 – OpenSYCL develop 25Jul2023 (AMD GPUs) / v0.9.4 (NVIDIA GPUs) - SYCL-based oneAPI DPC++ 2023.2 (intel GPU)
- Amber 22 - AmberTools 22 (AMD GPUs) / 23 (NVIDIA GPUs) – Amber 22 HIP Patch 3Jan2023 (AMD GPUs)
- OpenMM 8.0.0 – OpenMM HIP Plugin 8Mar2023 (AMD GPUs)
- LAMMPS 2Aug2023 – Kokkos 4.1.0 (AMD GPUs) / LAMMPS bundled (NVIDIA GPUs)
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,使用来自官方软件包捆绑的基准测试数据集。本此测试所使用的数据集(包含运行测试所用的脚本)可通过下方链接下载。
阿里云盘: https://www.aliyundrive.com/s/5L35M77DCzA;提取码:8si3(EXE格式的自解压文件,双击以解压)。
Google Drive: https://drive.google.com/drive/folders/1pKfgHuk3eb0VZ-txbv03TMPCB8tFR_J-(包含本文PDF版)
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体系上的表现非常好:7900XTX可以达到RTX4090的86%的性能;6900XT可以达到RTX4080的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系列的基准测试仍然缺乏,因此,欢迎有条件的网友在这些方面做贡献。
文章评论