LXR | KVM | PM | Time | Interrupt | Systems Performance | Bootup Optimization

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

二、验证安装是否成功

重启后,可以做如下验证步骤:

  1. 检查模块是否加载:

    lsmod | grep amdgpu
    lsmod | grep kfd
  2. 使用 rocminfo 或 rocm-smi 查看 GPU 信息:

    rocminfo
    rocm-smi

    若 GPU 被正确识别,会输出包括 GPU 型号、支持架构 (gfx) 等信息。

  3. 检查环境变量是否生效:

    echo $PATH
    echo $LD_LIBRARY_PATH

    通常应包含 /opt/rocm/bin、 /opt/rocm/lib、 /opt/rocm/lib64 等路径。

  4. 运行一个简单 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(低层通信)、rocminforocm-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 通信 / 性能库功能可用性

posted on 2025-07-13 23:59  ArnoldLu  阅读(25)  评论(0)    收藏  举报

导航