计算化学公社

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

[GROMACS] AMD Ryzen 7950X AMD RX 7900XT 在 Debian 12 下安装 GROMACS 2024.3

[复制链接 Copy URL]

65

帖子

1

威望

535

eV
积分
620

Level 4 (黑子)

本帖最后由 qinsc 于 2024-10-30 19:50 编辑

1. 安装spack
spack 是一个非常好用的包管理器,可参考 AMD 官方文档(Getting Started | AMD),详细可参考 spack 文档(Getting Started — Spack 0.23.0.dev0 documentation)。

安装spack依赖
  1. apt update
  2. apt install build-essential ca-certificates coreutils curl environment-modules gfortran git gpg lsb-release python3 python3-distutils python3-venv unzip zip
复制代码

安装spack,这里直接安装到root下
  1. export SPACK_ROOT=/root/spack
  2. git clone -c feature.manyFiles=true https://github.com/spack/spack.git ${SPACK_ROOT}
复制代码

将以下变量添加至 ~/.bashrc 中
  1. export SPACK_ROOT=/root/spack
  2. source ${SPACK_ROOT}/share/spack/setup-env.sh
复制代码

重新进入终端

让spack寻找系统默认的编译器
  1. spack compiler find
复制代码


2. 安装 AOCC

参考 AMD Optimized C/C++ Compiler (AOCC)
  1. spack install aocc +license-agreed
复制代码


安装完成后添加至spack的编译器中
  1. spack load aocc
  2. spack compiler find
复制代码


3. 安装 amdgpu-inistall

参考 Installation via AMDGPU installer — ROCm installation (Linux)
  1. apt update
复制代码


4. 使用 amdgpu-install 安装 ROCm


在安装之前,需要安装一些依赖
ROCm依赖于 libpython3.10,Debian12 并不支持 使用 apt install 命令直接安装
从Ubuntu packages 下载 Ubuntu – Details of package libpython3.10 in jammy

使用
  1. dpkg -i <package_name>
复制代码

安装,会提醒缺少依赖,同样从Ubuntu packages下载
Ubuntu – Details of package libpython3.10-stdlib in jammy
Ubuntu – Details of package libpython3.10-minimal in jammy
Ubuntu – Details of package libmpdec3 in jammy

使用
  1. dpkg -i <package_name>
复制代码

命令安装,安装完 libpython3.10 后

就可以安装 ROCm6.2.2了,需要Unbuntu22的源,24的源Debian缺太多依赖。参考 Installation via AMDGPU installer — ROCm installation (Linux)

这一步也可参考 Entropy.S.I 教程 为某网友的AMD GPU平台编译和调优LAMMPS和GROMACS - 计算机使用与Linux交流 (Computer Usage and Linux) - 计算化学公社 (keinsci.com)

  1. amdgpu-install --usecase=hiplibsdk,rocm
  2. usermod -a -G render root
复制代码


之后重启

  1. reboot
复制代码


5. 准备安装 AdaptiveCpp

参考 AdaptiveCpp/doc/installing.md at develop · AdaptiveCpp/AdaptiveCpp (github.com),以及 AdaptiveCpp/doc/install-rocm.md at develop · AdaptiveCpp/AdaptiveCpp (github.com),和 Entropy.S.I 教程中第4步 为某网友的AMD GPU平台编译和调优LAMMPS和GROMACS - 计算机使用与Linux交流 (Computer Usage and Linux) - 计算化学公社 (keinsci.com)

由于使用ROCm-6.2.2会报错 LLVM_DIR 找不到,原因未知,因此做了调整

使用 spack 安装 hip、llvm-amdgpu 和 rocm-openmp-extras

  1. spack install hip %aocc
复制代码


使用spack加载hip、llvm-amdgpu 和 rocm-openmp-extras

  1. spack load hip llvm-amdgpu rocm-openmp-extras
复制代码



使用spack 安装 cmake, gmake, boost //也可以使用debian默认的包 apt install cmake, apt install gmake, apt install boost

  1. spack install cmake %aocc
  2. spack install gmake %aocc
  3. spack install boost %aocc
复制代码


使用spack加载 cmake, gmake, boost

  1. spack load cmake gmake boost
复制代码


6. 编译 AdaptiveCpp
编译前,先找到clang 、 clang++  、 llvm 目录
/root/spack/opt/spack/linux-debian12-zen4/aocc-5.0.0/ 文件夹中找到 llvm-amdgpu-6.2.1-<hash> 文件夹,其中 <hash> 是spack给的编号,复制这个文件夹目录位置,注意替换以下命令中的 <hash>

  1. git clone https://github.com/AdaptiveCpp/AdaptiveCpp
  2. cd AdaptiveCpp
  3. mkdir build && cd build
  4. cmake -D CMAKE_INSTALL_PREFIX=/opt/AdaptiveCpp -D CMAKE_C_COMPILER=/root/spack/opt/spack/linux-debian12-zen4/aocc-5.0.0/llvm-amdgpu-6.2.1-<hash>/bin/clang -D CMAKE_CXX_COMPILER=/root/spack/opt/spack/linux-debian12-zen4/aocc-5.0.0/llvm-amdgpu-6.2.1-<hash>/bin/clang++ -D WITH_ROCM_BACKEND=ON -D LLVM_DIR=/root/spack/opt/spack/linux-debian12-zen4/aocc-5.0.0/llvm-amdgpu-6.2.1-<hash>/lib/cmake/llvm -D WITH_SSCP_COMPILER=OFF ..
  5. make clean
  6. make -j<cores> install
复制代码


其中 cores代表CPU核心数,Ryzen 7950X 为 16核,因此为
  1. make -j16 install
复制代码


至此,AdaptiveCpp 安装于 /opt/AdaptiveCpp 下
编译完成后回到主目录
  1. cd ~
复制代码


7. 安装编译 GROMACS 2024.3

参考 Installation guide - GROMACS 2024.2 documentation

使用spack 安装 amdblis amdlibflame (blas, lapack)

  1. spack install amdblis %aocc
  2. spack install amdlibflame %aocc
复制代码


使用spack加载 amdblis amdlibflame

  1. spack load amdblis amdlibflame
复制代码

注意替换<hash>,并指定rocm_path;gfx1100代表 RX 7900XT 和 RX 7900XTX
  1. wget https://ftp.gromacs.org/gromacs/gromacs-2024.2.tar.gz
  2. tar -xzf gromacs-2024.3.tar.gz
  3. cd gromacs-2024.3
  4. mkdir build && cd build
  5. cmake -D CMAKE_PREFIX_PATH=/opt/AdaptiveCpp -D CMAKE_INSTALL_PREFIX=/opt/gmx -D CMAKE_C_COMPILER=/root/spack/opt/spack/linux-debian12-zen4/aocc-5.0.0/llvm-amdgpu-6.2.1-<hash>/bin/clang -D CMAKE_CXX_COMPILER=/root/spack/opt/spack/linux-debian12-zen4/aocc-5.0.0/llvm-amdgpu-6.2.1-<hash>/bin/clang++ -D GMX_GPU=SYCL -D GMX_SYCL=ACPP -D ACPP_ROCM_PATH=/opt/rocm/ -D HIPSYCL_TARGETS=hip:gfx1100 -D GMX_BUILD_OWN_FFTW=ON ..
复制代码

至此,GROMACS 安装于 /opt/gmx 下
编译完成后回到主目录
  1. cd ~
复制代码

至此,主目录中用于编译的文件夹 AdaptiveCpp 和 gromacs-2024.3 就可以删除了。

8. 运行 GROMACS


载入初始化脚本,由于使用了spack中的rocm-openmp-extras ,因此每次使用GROMACS都需要加载
  1. source /opt/gmx/bin/GMXRC
  2. spack load rocm-openmp-extras
复制代码

下载测试文件夹,这里使用 Entropy.S.I 的测试集:文件下载地址:https://www.aliyundrive.com/s/9eUZ19WGepx,提取码:xp66。


  1. cd ~/md_benchmark_src/GROMACS2022.3
  2. gmx mdrun -s STMV-GMX.tpr -resetstep 5000 -nsteps 50000 -ntmpi 1 -ntomp 16 -gpu_id 0
复制代码


输出

Core t (s) Core t (s) (%)
Time: 5836.560 364.792 1600.0
(ns/day) (hour/ns)
Performance: 21.317 1.126


性能基本是RX 7900XTX 的 90%,RX 6900XT 的 110%,接近 RTX 3080Ti。

过程中可以使用 rocm-smi 来查看 gpu使用情况,具体参考 Using Python in ROCm SMI — ROCm SMI LIB 7.2.0 Documentation (amd.com) 中的usage

  1. watch -n 0.1 rocm-smi -u -c -t -P
复制代码


输出
  1. ============================ ROCm System Management Interface ============================
  2. ====================================== Temperature =======================================
  3. GPU[0]          : Temperature (Sensor edge) (C): 66.0
  4. GPU[0]          : Temperature (Sensor junction) (C): 81.0
  5. GPU[0]          : Temperature (Sensor memory) (C): 84.0
  6. GPU[1]          : Temperature (Sensor edge) (C): 47.0
  7. ==========================================================================================
  8. =============================== Current clock frequencies ================================
  9. GPU[0]          : dcefclk clock level: 0: (145Mhz)
  10. GPU[0]          : fclk clock level: 4: (2000Mhz)
  11. GPU[0]          : mclk clock level: 3: (1249Mhz)
  12. GPU[0]          : sclk clock level: 1: (2419Mhz)
  13. GPU[0]          : socclk clock level: 1: (1285Mhz)
  14. GPU[0]          : pcie clock level: 2 (16.0GT/s x16)
  15. GPU[1]          : mclk clock level: 0: (2100Mhz)
  16. GPU[1]          : sclk clock level: 1: (600Mhz)
  17. GPU[1]          : socclk clock level: 1: (1200Mhz)
  18. ==========================================================================================
  19. =================================== Power Consumption ====================================
  20. GPU[0]          : Average Graphics Package Power (W): 281.0
  21. GPU[1]          : Current Socket Graphics Package Power (W): 29.058
  22. ==========================================================================================
  23. =================================== % time GPU is busy ===================================
  24. GPU[0]          : GPU use (%): 100
  25. GPU[1]          : GPU use (%): 0
  26. ==========================================================================================
  27. ================================== End of ROCm SMI Log ===================================
复制代码







评分 Rate

参与人数
Participants 6
威望 +1 eV +17 收起 理由
Reason
dodobird1 + 1 谢谢
hdhxx123 + 5 赞!
GoldenBaby + 5 好物!
hyss1992 + 1 谢谢分享
anson + 5 谢谢分享
sobereva + 1

查看全部评分 View all ratings

442

帖子

0

威望

2410

eV
积分
2852

Level 5 (御坂)

娃娃儿鱼

2#
发表于 Post on 2024-12-27 16:09:10 | 只看该作者 Only view this author
本帖最后由 hdhxx123 于 2025-1-14 21:18 编辑

最终还是用楼主的方法在WSL下Ubuntu22.04下安装成功了,给楼主再捉个虫:实际上只要安装gromacs之后source GMXRC,再将libomp.so的所在目录加入环境变量
  1. export /root/spack/opt/spack/linux-debian12-<Architecture>/aocc-5.0.0/rocm-openmp-extras-<version>-<hash>/lib/
复制代码
即可,并且不限于安装所用的rocm-openmp-extras-<version>-<hash>/lib/路径下的libomp.so,将安装amd驱动后得到的
  1. export /opt/rocm-<version>/lib/llvm/lib/
复制代码
路径加入~/.bashrc中也是可以正常运行编译好的gromacs,而不需要单独去spack load rocm-openmp-extras。说这个主要是因为在WSL如果运行
  1. spack load rocm-openmp-extras
复制代码
就会掉驱动,因为spack中目前(2025.1.8)没有支持的Ubuntu22.04下支持WSL的ROCm6.2.3版本的库,不能正常识别显卡。




原始贴
抱歉,之前没有接触debian。我的设备是12600k,准备用7900xt,想在wsl2下先安装试试。
请问在“在安装之前,需要安装一些依赖ROCm依赖于 libpython3.10,Debian12 并不支持 使用 apt install 命令直接安装“这一步时
我用了arm64、i386都无法安装,我的步骤如下:
  1. wget https://packages.ubuntu.com/jammy/i386/libpython3.10/download/libpython3.10_3.10.12-1~22.04.7_i386.deb
复制代码
下载了deb文件后,应该怎么安装呢?
我尝试用
  1. dpkg -i ./libpython3.10_3.10.12-1~22.04.7_i386.deb
复制代码
或者
  1. sudo apt install ./libpython3.10_3.10.12-1~22.04.7_i386.deb
复制代码
均无法安装。

想求助一下楼主,我应该是犯了什么debian的基础性问题,但我还没有意识到。


——————————————————————————————————————————————————————————————后续————————————————————
ok,确实是有基础问题没解决:
1.是amd64不是i386
2.检查了一下,wsl自动安装的原来是debian11,所以dpkg的版本不对,不支持zstd
3.wget下载的链接不是

  1. wget https://packages.ubuntu.com/jammy/i386/libpython3.10/download/libpython3.10_3.10.12-1~22.04.7_i386.deb
复制代码
而应该是
  1. http://security.ubuntu.com/ubuntu/pool/main/p/python3.10/libpython3.10_3.10.12-1~22.04.7_amd64.deb
复制代码
更新至debian 12后,由于用的是wsl下debian 12进行rocm的安装,应当参考此文
https://rocm.docs.amd.com/projects/radeon/en/latest/docs/install/wsl/install-radeon.html

实测以下语句可以正常安装
  1. amdgpu-install -y --usecase=wsl,hip,opencl,rocm --no-dkms
复制代码


另,在进行spack安装cmake时
  1. spack install cmake %aocc
复制代码

反复遇到报错
  1. Error when bootstrapping CMake:
  2.      323    Problem while running initial CMake
复制代码
检查后发现是wsl在之前debian 11下安装的spack所带的libstdc++.so.6最新只有GLIBCXX_3.4.28,而安装cmake需要GLIBCXX_3.4.29.解决方法是重建软链接至更新后的debian 12自带的/usr/lib/x86_64-linux-gnu/libstdc++.so.6于spack下文件夹,路径则需要到build log for details内找到,如图。
总结一下:wsl2下按楼主步骤进行安装需要首先将debian 11升至debian 12再进行后续操作,若进行一部分操作后再升级有可能会遇到各种版本不匹配问题。

而在楼主说的
  1. cmake -D CMAKE_INSTALL_PREFIX=/opt/AdaptiveCpp -D CMAKE_C_COMPILER=/root/spack/opt/spack/linux-debian12-zen4/aocc-5.0.0/llvm-amdgpu-6.2.1-<hash>/bin/clang -D CMAKE_CXX_COMPILER=/root/spack/opt/spack/linux-debian12-zen4/aocc-5.0.0/llvm-amdgpu-6.2.1-<hash>/bin/clang++ -D WITH_ROCM_BACKEND=ON -D LLVM_DIR=/root/spack/opt/spack/linux-debian12-zen4/aocc-5.0.0/llvm-amdgpu-6.2.1-<hash>/lib/cmake/llvm -D WITH_SSCP_COMPILER=OFF ..
复制代码

中,若你的cpu与楼主不一致,则需要找到你的
  1. /root/spack/opt/spack/linux-debian12-<Architecture>/aocc-5.0.0/llvm-<version>-<hash>/
复制代码
路径替换CMAKE_C_COMPILER、CMAKE_CXX_COMPILER和LLVM_DIR中的
  1. /root/spack/opt/spack/linux-debian12-zen4/aocc-5.0.0/llvm-amdgpu-6.2.1-<hash>/
复制代码



报错.png (85.41 KB, 下载次数 Times of downloads: 32)

报错.png

libstdc .so.6报错路径.png (234.85 KB, 下载次数 Times of downloads: 32)

libstdc  .so.6报错路径.png

评分 Rate

参与人数
Participants 2
eV +8 收起 理由
Reason
qinsc + 5 GJ!
洛兰希尔 + 3 感谢踩坑!

查看全部评分 View all ratings

真·探

27

帖子

1

威望

699

eV
积分
746

Level 4 (黑子)

3#
发表于 Post on 2025-2-22 13:54:49 | 只看该作者 Only view this author
本帖最后由 洛兰希尔 于 2025-2-22 16:59 编辑

2025年2月22日尝试编译,参照楼主和楼上同学的方法已经编译成功
另外AMD似乎已经官方提供ROCm for WSL了(https://rocm.docs.amd.com/projec ... install-radeon.html),实测也可用
  1. amdgpu-install -y --usecase=wsl,rocm --no-dkms
复制代码
注意此版本需要按官方的要求使用Ubuntu-22.04(wsl现在默认安装的已经是24.04了)
Important!
For the ROCm 6.2.3 WSL package, Ubuntu 22.04 must be installed.
For more information, refer to Windows Subsystem for Linux Documentation.
另外,AdaptiveCpp不要用git clone的方法,用Release里面的版本,否则可能有奇奇怪怪的依赖问题(直接clone是开发版)

2

帖子

0

威望

20

eV
积分
22

Level 1 能力者

4#
发表于 Post on 2025-3-3 03:11:51 | 只看该作者 Only view this author
研究了很久解决了,不需要再编译hip了
  1. sudo apt install rocm-llvm-dev
复制代码

llvm文件夹就会出现
在新版本rocm中,llvm的cmake从rocm-llvm移动到rocm-llvm-dev中了

评分 Rate

参与人数
Participants 1
eV +5 收起 理由
Reason
qinsc + 5 GJ!

查看全部评分 View all ratings

本版积分规则 Credits rule

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

GMT+8, 2025-8-16 04:22 , Processed in 0.184722 second(s), 24 queries , Gzip On.

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