硬件与系统前置检查:别急着敲命令

刚拿到 AMD Instinct 显卡,最忌讳的就是直接复制粘贴安装命令。ROCm 7.x 对底层环境相当挑剔,很多“跑不起来”的锅,其实早在安装前就埋下了。我吃过亏,所以第一步务必扎实。

首先是操作系统内核。ROCm 7.x 在 Ubuntu 22.04 LTS 上表现最稳,如果你还在用 20.04 或者更老的版本,建议先升级系统。执行 lsb_release -a 确认版本,同时检查内核版本,过旧的内核会导致后续 DKMS 模块编译失败。

硬件层面,打开终端输入 lspci | grep -i vga,确认系统能识别到你的 Instinct MI300 系列或其他支持的计算卡。这里有个极易被忽视的 BIOS 设置:Above 4G DecodingRe-Size BAR。这两项必须在 BIOS 中开启,否则 GPU 无法映射大内存地址空间,驱动加载时会直接报错"probe failed"。此外,确保系统至少有 16GB 内存,避免编译大型项目时频繁 Swap 导致卡死。

添加软件源与最小化驱动安装

环境确认无误后,开始安装核心组件。ROCm 7.x 采用了模块化架构,我们不需要安装那些臃肿的图形界面驱动,只需关注计算核心。

以 Ubuntu 为例,先下载并安装官方仓库脚本:

wget https://repo.radeon.com/amdgpu-install/7.0/ubuntu/jammy/amdgpu-install_7.0.70000-1_all.deb
sudo dpkg -i amdgpu-install_7.0.70000-1_all.deb
sudo apt update

源配置好后,不要无脑执行全量安装。为了减少冲突,我们采用最小化策略,只安装必要的内核驱动和开发包:

sudo apt install rocm-dkms rocm-dev hip-base

安装过程中,终端会显示 Building initial module for...,这是 DKMS 正在根据当前内核编译驱动模块,请耐心等待完成。这一步切忌断网或强制中断。安装结束后,必须重启系统,让新的内核模块生效。重启后可以用 dpkg -l | grep rocm 简单核对版本号,确保没有残留旧版本文件。

权限配置与首个 HIP 程序验证

重启回来,很多人发现运行程序还是报 Permission denied。这是因为 Linux 默认将 GPU 设备文件归属于 videorender 组,而普通用户不在其中。

解决很简单,将当前用户加入对应组:

sudo usermod -aG render,video $USER

执行完后,注销并重新登录(或再次重启)才能生效。验证是否成功,可以查看 /dev/kfd 的权限:ls -l /dev/kfd,确认组权限包含你刚才添加的组。

接下来是重头戏:验证算力。与其跑复杂的模型,不如写个最基础的 HIP 向量加法程序。新建 vector_add.cpp

#include <hip/hip_runtime.h>
#include <iostream>

__global__ void vectorAdd(float *A, float *B, float *C, int n) {
    int i = blockIdx.x * blockDim.x + threadIdx.x;
    if (i < n) C[i] = A[i] + B[i];
}

int main() {
    int n = 1 << 20;
    size_t size = n * sizeof(float);
    float *h_A, *h_B, *h_C;
    float *d_A, *d_B, *d_C;

    h_A = new float[n]; h_B = new float[n]; h_C = new float[n];
    for(int i=0; i<n; i++) { h_A[i] = 1.0f; h_B[i] = 2.0f; }

    hipMalloc(&d_A, size); hipMalloc(&d_B, size); hipMalloc(&d_C, size);
    hipMemcpy(d_A, h_A, size, hipMemcpyHostToDevice);
    hipMemcpy(d_B, h_B, size, hipMemcpyHostToDevice);

    int threadsPerBlock = 256;
    int blocksPerGrid = (n + threadsPerBlock - 1) / threadsPerBlock;
    vectorAdd<<<blocksPerGrid, threadsPerBlock>>>(d_A, d_B, d_C, n);

    hipMemcpy(h_C, d_C, size, hipMemcpyDeviceToHost);
    
    bool success = true;
    for(int i=0; i<n; i++) if(h_C[i] != 3.0f) { success = false; break; }
    
    std::cout << (success ? "Test Passed!" : "Test Failed!") << std::endl;

    hipFree(d_A); hipFree(d_B); hipFree(d_C);
    delete[] h_A; delete[] h_B; delete[] h_C;
    return 0;
}

使用 hipcc 编译器进行编译和运行:

hipcc vector_add.cpp -o vector_add
./vector_add

如果屏幕吐出 Test Passed!,恭喜,你的 GPU 计算链路已经彻底打通。

状态监控与避坑指南

环境跑通后,日常监控必不可少。ROCm 自带的 rocm-smi 就是 AMD 版的 nvidia-smi

rocm-smi --showall

这条命令能直观看到温度、功耗、显存占用和风扇转速。调试时配合 watch -n 1 rocm-smi --showall 可以实时观察负载变化。

最后分享两个高频坑点:

  1. 环境变量缺失:如果编译提示找不到头文件,检查 ~/.bashrc 是否添加了 export PATH=/opt/rocm/bin:$PATHexport LD_LIBRARY_PATH=/opt/rocm/lib:$LD_LIBRARY_PATH
  2. PyTorch 版本错位:如果在 Python 中遇到 HIP platform not found,通常是因为安装的 PyTorch ROCm 版本与系统驱动不一致。务必去官网查找严格对应的 wheel 包,或者直接使用官方提供的 Docker 容器,这是最省心的方案。

走到这一步,你的 AMD Instinct 显卡就已经是一台合格的 AI 算力机器了。接下来无论是跑 vLLM 推理还是训练大模型,地基都已经打牢。

200小时GPU算力已就位,快来领取:https://marketing.csdn.net/questions/Q2604140858304426315?utm_source=AIpaper
在这里插入图片描述

Logo

免费领 200 小时云算力,进群参与显卡、AI PC 幸运抽奖

更多推荐