Ubuntu 24下ROCm 7.0.1 开发环境搭建和测试
下面给出一个 从安装 → 验证 → 代码测试 的完整流程(适用于 Ubuntu 24.04 环境下,参考官方 + 社区经验)。
一、安装 ROCm 开发环境
1. 系统准备
-
更新系统包与安装内核头部包与模块:
sudo apt update sudo apt upgrade -y sudo apt install -y linux-headers-$(uname -r) linux-modules-extra-$(uname -r) cmake gfortran llvm llvm-dev clang
-
安装 Python 工具(部分 ROCm 包需要):
sudo apt install -y python3-setuptools python3-wheel
若系统中已有 NVIDIA 驱动或其它 GPU 驱动,建议先清理或禁用冲突驱动。
2. 添加 ROCm / AMD 软件仓库
参考 AMD 官方 “Ubuntu native installation” 文档: (AMD ROCm 文档)
以 ROCm 7.0.1 为例(noble 为 Ubuntu 24.04 的代号):
sudo mkdir -p /etc/apt/keyrings wget https://repo.radeon.com/rocm/rocm.gpg.key -O - | gpg --dearmor | sudo tee /etc/apt/keyrings/rocm.gpg > /dev/null sudo tee /etc/apt/sources.list.d/rocm.list << EOF deb [arch=amd64 signed-by=/etc/apt/keyrings/rocm.gpg] https://repo.radeon.com/rocm/apt/7.0.1 noble main deb [arch=amd64 signed-by=/etc/apt/keyrings/rocm.gpg] https://repo.radeon.com/graphics/7.0.1/ubuntu noble main EOF sudo tee /etc/apt/preferences.d/rocm-pin-600 << EOF Package: * Pin: release o=repo.radeon.com Pin-Priority: 600 EOF sudo apt update
注意:社区用户反映,官方 “Ubuntu 24.04 快速安装指南” 有时会因为依赖缺失问题报错(例如libcholmod3、libsuitesparseconfig5、libpython3.10 等包找不到)(GitHub)
一个常见 workaround 是添加 Ubuntu 22.04(jammy)源以提供兼容依赖:sudo add-apt-repository -y -s "deb http://security.ubuntu.com/ubuntu jammy main universe"
(Ask Ubuntu)
3. 安装 amdgpu-installer 和 ROCm 套件
按 AMD 的 Quick Start 指南: (AMD ROCm 文档)
# 下载 amdgp-installer 包(版本根据你仓库版本替换) wget https://repo.radeon.com/amdgpu-install/7.0.1/ubuntu/noble/amdgpu-install_7.0.1.70001-1_all.deb sudo apt install -y ./amdgpu-install_7.0.1.70001-1_all.deb # 安装 ROCm(及其依赖包) sudo apt install rocm
或者使用 amdgpu-install 脚本带 usecase 选项(推荐),比如:
sudo amdgpu-install --usecase=rocm,hip,graphics,opencl,dkms
-
graphics 若你还希望 GPU 用于显示输出
-
dkms 用于内核模块自动重建
-
opencl 若需要 OpenCL 支持
安装完成后,将当前用户加入 render 和 video 组:
sudo usermod -a -G render,video $LOGNAME
然后重启系统:
sudo reboot
二、验证安装是否成功
重启后,可以做如下验证步骤:
-
检查模块是否加载:
lsmod | grep amdgpu lsmod | grep kfd
-
使用 rocminfo 或 rocm-smi 查看 GPU 信息:
rocminfo rocm-smi
若 GPU 被正确识别,会输出包括 GPU 型号、支持架构 (gfx) 等信息。
-
检查环境变量是否生效:
echo $PATH echo $LD_LIBRARY_PATH
通常应包含 /opt/rocm/bin、 /opt/rocm/lib、 /opt/rocm/lib64 等路径。
-
运行一个简单 HIP / ROCm 示例(详见下面“代码测试”部分)。
如果在上面某一步出错(例如 rocminfo 报错 “module not found” 或空 GPU 输出),需要检查驱动模块是否正确安装 / 签署 / 启用安全启动、是否有依赖包缺失、是否仓库版本冲突等。
三、代码测试流程
安装 + 验证通过后,接下来是用一些小程序来测试 HIP / ROCm 是否可用。
1. rocm-examples编译和测试
ROCm 官方 / 社区有不少示例仓库,例如 “rocm-examples” (GitHub)。可以克隆这个仓库来运行基本测试:
git clone https://github.com/ROCm/rocm-examples.git cd rocm-examples/HIP-Basic
这里有一些基础的 HIP 示例(比如向量加法、矩阵乘法等)。
假设在 HIP-Basic 目录下:
mkdir build && cd build
cmake ..
make -j$(nproc)
然后运行生成的可执行文件,比如:
./bin/hip_hello_world
如果程序在 GPU 上正确运行,并输出正确结果(比如向量加法的校验通过),说明 HIP / ROCm 的基本运行环境 OK。
Hello world from host! Hello world from device or host! Hello world from device or host! Hello world from device or host! Hello world from device or host! Hello world from device or host! Hello world from device kernel block 1 thread 0! Hello world from device kernel block 1 thread 1! Hello world from device kernel block 0 thread 0! Hello world from device kernel block 0 thread 1!
2. hip-tests测试
运行 HIP 单元测试或官方测试集(例如 hip-tests 项目)(GitHub)。
git clone https://github.com/ROCm/rocm-systems/ cd rocm-systems/projects/hip-tests
git checkout hip-version_7.1.52680 mkdir -p build && cd build rm -rf * # (to clear up) cmake ../samples make build_samples -j$(nproc)
由于rocm-llvm没有llvm-dis和llvm-as需要安装:
sudo apt install llvm-20 llvm-20-dev llvm-20-tools clang-20 clang-tools-20 sudo update-alternatives --install /usr/bin/llvm-dis llvm-dis /usr/bin/llvm-dis-20 100 sudo update-alternatives --install /usr/bin/llvm-as llvm-as /usr/bin/llvm-as-20 100 sudo update-alternatives --config llvm-dis sudo update-alternatives --config llvm-as sudo ln -s /usr/bin/llvm-dis /opt/rocm/llvm/bin/llvm-dis sudo ln -s /usr/bin/llvm-as /opt/rocm/llvm/bin/llvm-as
测试:
~/rocm-systems/projects/hip-tests/build/2_Cookbook/11_texture_driver$ ./texture2dDrv
tex2dKernelChar test PASSED ...
tex2dKernelShort test PASSED ...
tex2dKernelInt test PASSED ...
tex2dKernelFloat test PASSED ...
tex2dKernelChar4 test PASSED ...
tex2dKernelShort4 test PASSED ...
tex2dKernelInt4 test PASSED ...
tex2dKernelFloat4 test PASSED ...
texture2dDrv PASSED ...
3. 性能或库功能测试
你可以进一步测试 ROCm 提供的库功能,比如:
-
RCCL / ROCm 通信库测试:在多 GPU 环境下跑 NCCL / RCCL 性能测试工具 (GitHub)
-
Composable Kernel 示例与测试:ROCm 的可组合核 (Composable Kernel) 提供多个性能测试例子 (AMD ROCm 文档)
-
深度学习框架:在 HIP / ROCm 支持版本中运行 PyTorch / TensorFlow 的小模型(如 MNIST、ResNet)进行前向与反向测试
四、安装内容和说明
通过sudo amdgpu-install --usecase=rocm,hip,graphics,opencl,dkms命令安装了如下内容:
模块 | 说明 | 作用 |
---|---|---|
graphics | 安装 amdgpu 图形驱动(显示用) |
提供桌面显示、Xorg/Wayland 支持、Vulkan、Mesa 等图形功能 |
dkms | 安装 amdgpu-dkms 内核模块 |
自动构建并加载 GPU 驱动(含 KFD 计算调度模块)到当前内核 |
rocm | 安装 ROCm Runtime 栈 | 提供 ROCr(HSA runtime)、ROCt(低层通信)、rocminfo 、rocm-smi 等工具 |
hip | 安装 HIP 编译与运行环境 | 提供 CUDA 兼容 API(hipcc , hip_runtime.h ),用于开发 GPU 加速程序 |
opencl | 安装 OpenCL Runtime | 提供 OpenCL ICD (libamdocl64.so ),兼容传统 GPU 计算框架 |
AMG GPU内核源码位置如下:
tree /usr/src/amdgpu-6.14.14-2212064.24.04/ -L 3 /usr/src/amdgpu-6.14.14-2212064.24.04/ ├── amd │ ├── acp │ ├── amdgpu │ ├── amdkcl │ ├── amdkfd │ ├── amdxcp │ ├── backport │ ├── display │ ├── dkms │ ├── include │ └── pm ├── dkms.conf -> amd/dkms/dkms.conf ├── drm_buddy.c ├── drm_exec.c ├── drm_gem_ttm_helper.c ├── include │ ├── drm │ ├── kcl │ ├── linux │ │ ├── dma-resv.h │ │ └── reservation.h │ └── uapi │ ├── drm │ └── linux ├── Makefile -> amd/dkms/Makefile ├── scheduler └── ttm
主 GPU 驱动模块,包含 KFD(计算调度)的DKMS内容为:
/lib/modules/6.8.0-85-generic/updates/ └── dkms ├── amddrm_buddy.ko.zst ├── amddrm_exec.ko.zst ├── amddrm_ttm_helper.ko.zst ├── amdgpu.ko.zst ├── amdkcl.ko.zst ├── amd-sched.ko.zst ├── amdttm.ko.zst ├── amdxcp.ko.zst ├── nvidia-drm.ko.zst ├── nvidia.ko.zst ├── nvidia-modeset.ko.zst ├── nvidia-peermem.ko.zst └── nvidia-uvm.ko.zst
ROCm 主目录,包含 HIP、ROCr、OpenCL、工具链等:
tree /opt/rocm -L 1 /opt/rocm ├── amdgcn -> lib/llvm/lib/clang/20/lib/amdgcn ├── bin ├── include ├── lib ├── libexec ├── llvm -> ./lib/llvm └── share
图形驱动组件(如 Vulkan、OpenGL 库):
tree /opt/amdgpu -L 1 /opt/amdgpu ├── etc ├── include ├── lib └── share
动态库加载路径配置:
cat /etc/ld.so.conf.d/10-rocm-opencl.conf /etc/ld.so.conf.d/20-amdgpu.conf /opt/rocm-7.0.1/lib /opt/amdgpu/lib/x86_64-linux-gnu /opt/amdgpu/lib/i386-linux-gnu
五、流程总结(按时间线)
下面是一个按时间顺序排列的流程清单(可以据此做一个 Checklist):
阶段 | 操作 | 目标 / 验证点 |
---|---|---|
系统准备 | 更新系统 & 安装内核头、模块 | 确保系统 kernel 支持 ROCm 驱动构建 |
仓库配置 | 添加 ROCm / AMD 源与签名 | apt 能够拉取 ROCm 软件包 |
安装 ROCm 工具 | 安装 amdgpu-install + ROCm 包 | 驱动 + 库 + HIP / ROCm 环境搭建 |
用户权限 | 加入 render / video 组、重启 | 当前用户可访问 GPU 资源 |
验证驱动 | lsmod, rocminfo, rocm-smi | 驱动模块正确加载、GPU 可被识别 |
编译示例 | 编译 HIP 示例、运行向量加法等 | GPU 端的计算可正常执行并得到正确输出 |
库 / 通信测试 | RCCL、Composable Kernel、HIP Tests | 多 GPU 通信 / 性能库功能可用性 |