计算化学公社

 找回密码 Forget password
 注册 Register
Views: 1987|回复 Reply: 3
打印 Print 上一主题 Last thread 下一主题 Next thread

[硬件相关] 主流分子动力学程序在消费级AMD GPU上的兼容性说明及疑难解答

[复制链接 Copy URL]

846

帖子

16

威望

4635

eV
积分
5801

Level 6 (一方通行)

小屁孩

本帖最后由 Entropy.S.I 于 2023-8-29 03:44 编辑

主流分子动力学程序在消费级AMD GPU上的兼容性说明及疑难解答
——Switch to AMD【第2集】


Aug-2023 by ア熵增焓减ウ | yult-entropy@qq.com | entropylt@163.com

打击黄狗,人人有责

0  前言

本文的信息并不全面,仅仅是作者近期在AMD GPU上测试经典MD性能的附属产物。你或许可以使用较老版本的ROCm和特定的GPU轻松地编译并运行文中提到的应用程序,也有可能在不久后的软件更新中,文中提到的一些兼容性问题就会被解决。本文内容在相应程序的官方文档/手册/Readme/Wiki中均未提及,且几乎无法在互联网上搜索到现成的解决方案。但这并不代表官方的文档/手册/Readme/Wiki就不值得阅读,相反,只有在仔细、逐句研读过那些内容后,才能更好地理解本文。

本文基于的操作系统环境:Ubuntu 22.04.3 LTS, Linux 6.2.0-26-generic x86_64, GNU 11.4.0。

本文涉及的GPU架构(代号):GCN 5.1 (gfx906), RDNA 2 (gfx1030), RDNA 3 (gfx1100)。

本文涉及的ROCm版本(参考repo.radeon.com):5.4.6, 5.5.3, 5.6.0。其中,5.4.6是最后一个捆绑LLVM 15的ROCm版本,此后版本的ROCm捆绑的LLVM 16还在快速更新中,很容易产生编译器兼容性问题,但如果能用最新版ROCm成功编译并运行,理论上性能更好。



使用ROCm 5.4.6搭配OpenSYCL-0.9.4,在gfx906或gfx1030上均可直接编译、运行(参考GROMACS 2023.2 Manual, page 15-17)。使用ROCm 5.5.3或5.6.0搭配OpenSYCL-develop 25Jul2023,在CMake命令中添加-DWITH_SSCP_COMPILER=OFF后也可直接编译、运行。OpenSYCL develop分支正在将源代码中的'hipSYCL'改为'OpenSYCL',若基于其编译GROMACS,在CMake运行时会出现较多Warning,但这不会导致任何问题。

基于ROCm 5.6.0 & OpenSYCL-develop 25Jul2023 编译的GROMACS性能显著强于之前版本,且在gfx906和gfx1030的基准测试中未出现bug。但是,对于gfx1100 (7900 XTX, RDNA 3),在3个版本的ROCm下运行均非常不稳定:性能异常波动,且mdrun运行一段时间后有极大概率卡死(今年6月有人在GROMACS论坛上反馈过类似的情况),同时GPU状态信息无法被rocm-smi识别,这可能对应了Windows用户所谓的“掉驱动”。



使用ROCm 5.4.6或5.5.3,在gfx906、gfx1030或gfx1100上均可成功编译、运行。基准测试中未出现bug。应当对源代码做以下修改:

1) 删除src/pmemd/src/cuda/ptxmacros.h中的第3个HIP-TODO(第130~170行);

2) 若为本机上不存在的GPU架构编译,应当在compile_with_hip.sh的CMake命令中添加AMDGPU_TARGETS和GPU_TARGETS变量以启用针对特定GPU架构的优化,可同时设置多个target;

3) 对于RDNA GPU,添加-D HIP_WARP64=OFF,并检查src/pmemd/src/cuda/ptxmacros.h第85行,按需补充代码,例如对于7900 XTX,补充 || defined(__gfx1100__)。

ROCm 5.5.3的性能显著强于ROCm 5.4.6。使用ROCm 5.6.0,暂未找到可以成功编译的方法。


使用ROCm 5.4.6、5.5.3或5.6.0,在gfx906、gfx1030或gfx1100上均可直接编译、运行。在gfx1100上偶尔出现GPU调度不积极的情况,其余基准测试中未出现bug。若为本机上不存在的GPU架构编译,应当在CMake命令中添加AMDGPU_TARGETS和GPU_TARGETS变量以启用针对特定GPU架构的优化,可同时设置多个target。3个版本的ROCm的性能依次递增(使用默认的VkFFT后端),对于小体系,性能差异较明显。



使用ROCm 5.4.6、5.5.3或5.6.0,在gfx906、gfx1030或gfx1100上均可成功编译、运行。基准测试中未出现bug。对于RDNA GPU,需使用最新版Kokkos (4.1.0) 替换官方捆绑的Kokkos(lib/kokkos),并将cmake/CMakeLists.txt第146和147行的14改为17。CMake步骤中,在cmake/presets/basic.cmake中指定要启用的包;在cmake/presets/kokkos-hip.cmake中指定GPU的架构代码,只能指定1个GPU架构,代码的对应关系列表可参考lib/kokkos/cmake/kokkos_arch.cmake。3个版本的ROCm的性能依次递增,对于小体系的模拟,性能差异较明显。


5  结论

4款应用程序的兼容性列表如下:

无论从绝对性能、性价比还是兼容性上考虑,现阶段OpenMM和Lammps都很适合普通用户彻底“switch to AMD”,GROMACS和Amber的用户也可以开始尝试“switch to AMD”。ROCm 5.4.6或5.5.3配合GCN5.1或RDNA2 GPU可完美兼容本文提到的4款应用程序,而ROCm 5.6.0具有最好的性能。某些情况下,需对程序源代码做一些简单的修改。值得注意的是,截至本文发布前,最新版ROCm (5.6.0)并未正式支持RDNA 3 GPU,根据AMD官方通知,今年秋季将会正式支持,因此GROMACS中的RDNA 3特有问题可能只是暂时性的。


评分 Rate

参与人数
Participants 4
威望 +1 eV +15 收起 理由
Reason
RandomError + 5 GJ!
tsgyls + 5
asdf + 5 精品内容
sobereva + 1

查看全部评分 View all ratings

- 向着虚无前进 -

186

帖子

1

威望

505

eV
积分
711

Level 4 (黑子)

4#
发表于 Post on 2023-10-26 16:29:02 | 只看该作者 Only view this author
Entropy.S.I 发表于 2023-10-26 16:21
9月中旬改的,当时看到了。目前原来的OpenSYCL链接依然可以正确跳转到现在的AdaptiveCpp。

根据我从摩 ...

昨晚发邮件问的(笑)可能是近期的进展吧。

846

帖子

16

威望

4635

eV
积分
5801

Level 6 (一方通行)

小屁孩

3#
 楼主 Author| 发表于 Post on 2023-10-26 16:21:34 | 只看该作者 Only view this author
本帖最后由 Entropy.S.I 于 2023-10-26 16:27 编辑
啊不错的飞过海 发表于 2023-10-26 15:47
OpenSYCL改名AdaptiveCpp了,熵老师要不要同步一下?以及摩尔线程也自称支持OpenCL、SYCL(不过用的是已经停 ...

9月中旬改的,当时看到了。这里也提到过:http://bbs.keinsci.com/thread-40313-1-1.html

目前原来的OpenSYCL链接依然可以正确跳转到现在的AdaptiveCpp。

根据我从摩尔线程开发团队了解到的信息,目前摩尔线程还没有支持SYCL,依然在计划状态,不知道你是从哪里了解到的信息。
- 向着虚无前进 -

186

帖子

1

威望

505

eV
积分
711

Level 4 (黑子)

2#
发表于 Post on 2023-10-26 15:47:21 | 只看该作者 Only view this author
OpenSYCL改名AdaptiveCpp了,熵老师要不要同步一下?以及摩尔线程也自称支持OpenCL、SYCL(不过用的是已经停止支持了的https://developer.codeplay.com/products/computecpp/ce/home),这两天正在降价。熵老师有没有兴趣也测一测?

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2024-11-24 02:20 , Processed in 0.203265 second(s), 26 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list