|
|
本帖最后由 qinsc 于 2024-10-30 19:50 编辑
1. 安装spack
spack 是一个非常好用的包管理器,可参考 AMD 官方文档(Getting Started | AMD),详细可参考 spack 文档(Getting Started — Spack 0.23.0.dev0 documentation)。
安装spack依赖
- apt update
- apt install build-essential ca-certificates coreutils curl environment-modules gfortran git gpg lsb-release python3 python3-distutils python3-venv unzip zip
复制代码
安装spack,这里直接安装到root下
- export SPACK_ROOT=/root/spack
- git clone -c feature.manyFiles=true https://github.com/spack/spack.git ${SPACK_ROOT}
复制代码
将以下变量添加至 ~/.bashrc 中
- export SPACK_ROOT=/root/spack
- source ${SPACK_ROOT}/share/spack/setup-env.sh
复制代码
重新进入终端
让spack寻找系统默认的编译器
2. 安装 AOCC
参考 AMD Optimized C/C++ Compiler (AOCC)
- spack install aocc +license-agreed
复制代码
安装完成后添加至spack的编译器中
- spack load aocc
- spack compiler find
复制代码
3. 安装 amdgpu-inistall
参考 Installation via AMDGPU installer — ROCm installation (Linux)
4. 使用 amdgpu-install 安装 ROCm
在安装之前,需要安装一些依赖
ROCm依赖于 libpython3.10,Debian12 并不支持 使用 apt install 命令直接安装
从Ubuntu packages 下载 Ubuntu – Details of package libpython3.10 in jammy
使用
安装,会提醒缺少依赖,同样从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
使用
命令安装,安装完 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)
- amdgpu-install --usecase=hiplibsdk,rocm
- usermod -a -G render root
复制代码
之后重启
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
使用spack加载hip、llvm-amdgpu 和 rocm-openmp-extras
- spack load hip llvm-amdgpu rocm-openmp-extras
复制代码
使用spack 安装 cmake, gmake, boost //也可以使用debian默认的包 apt install cmake, apt install gmake, apt install boost
- spack install cmake %aocc
- spack install gmake %aocc
- spack install boost %aocc
复制代码
使用spack加载 cmake, gmake, boost
- 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>
- git clone https://github.com/AdaptiveCpp/AdaptiveCpp
- cd AdaptiveCpp
- mkdir build && cd build
- 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 ..
- make clean
- make -j<cores> install
复制代码
其中 cores代表CPU核心数,Ryzen 7950X 为 16核,因此为
至此,AdaptiveCpp 安装于 /opt/AdaptiveCpp 下
编译完成后回到主目录
7. 安装编译 GROMACS 2024.3
参考 Installation guide - GROMACS 2024.2 documentation
使用spack 安装 amdblis amdlibflame (blas, lapack)
- spack install amdblis %aocc
- spack install amdlibflame %aocc
复制代码
使用spack加载 amdblis amdlibflame
- spack load amdblis amdlibflame
复制代码
注意替换<hash>,并指定rocm_path;gfx1100代表 RX 7900XT 和 RX 7900XTX
- wget https://ftp.gromacs.org/gromacs/gromacs-2024.2.tar.gz
- tar -xzf gromacs-2024.3.tar.gz
- cd gromacs-2024.3
- mkdir build && cd build
- 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 下
编译完成后回到主目录
至此,主目录中用于编译的文件夹 AdaptiveCpp 和 gromacs-2024.3 就可以删除了。
8. 运行 GROMACS
载入初始化脚本,由于使用了spack中的rocm-openmp-extras ,因此每次使用GROMACS都需要加载
- source /opt/gmx/bin/GMXRC
- spack load rocm-openmp-extras
复制代码
下载测试文件夹,这里使用 Entropy.S.I 的测试集:文件下载地址:https://www.aliyundrive.com/s/9eUZ19WGepx,提取码:xp66。
- cd ~/md_benchmark_src/GROMACS2022.3
- 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
- watch -n 0.1 rocm-smi -u -c -t -P
复制代码
输出
- ============================ ROCm System Management Interface ============================
- ====================================== Temperature =======================================
- GPU[0] : Temperature (Sensor edge) (C): 66.0
- GPU[0] : Temperature (Sensor junction) (C): 81.0
- GPU[0] : Temperature (Sensor memory) (C): 84.0
- GPU[1] : Temperature (Sensor edge) (C): 47.0
- ==========================================================================================
- =============================== Current clock frequencies ================================
- GPU[0] : dcefclk clock level: 0: (145Mhz)
- GPU[0] : fclk clock level: 4: (2000Mhz)
- GPU[0] : mclk clock level: 3: (1249Mhz)
- GPU[0] : sclk clock level: 1: (2419Mhz)
- GPU[0] : socclk clock level: 1: (1285Mhz)
- GPU[0] : pcie clock level: 2 (16.0GT/s x16)
- GPU[1] : mclk clock level: 0: (2100Mhz)
- GPU[1] : sclk clock level: 1: (600Mhz)
- GPU[1] : socclk clock level: 1: (1200Mhz)
- ==========================================================================================
- =================================== Power Consumption ====================================
- GPU[0] : Average Graphics Package Power (W): 281.0
- GPU[1] : Current Socket Graphics Package Power (W): 29.058
- ==========================================================================================
- =================================== % time GPU is busy ===================================
- GPU[0] : GPU use (%): 100
- GPU[1] : GPU use (%): 0
- ==========================================================================================
- ================================== End of ROCm SMI Log ===================================
复制代码
|
评分 Rate
-
查看全部评分 View all ratings
|