ROCm 5分钟跑通GPU加速从环境搭建到核函数【免费下载链接】legacy-rocm-buildAMD ROCm™ Software - GitHub Home项目地址: https://gitcode.com/GitHub_Trending/ro/legacy-rocm-build大模型训练卡在数据搬运上时算力再贵也白搭。AMD ROCm 就是 AMD 的开源 GPU 加速计算平台覆盖驱动、HIP 编译器到 AI 框架的完整软件栈让 GPU 加速计算在 AMD 显卡上直接落地。它凭什么值得你把 GPU 训练任务搬过来先看三个判断维度全栈开源无授权成本。从驱动、rocBLAS/rocFFT/rocSPARSE 数学库、HIP 运行时到基于 LLVM 的 hipCC 编译器、剖析调试工具一路到 PyTorch、TensorFlow、JAX 的官方对接版本全部开源不需要任何商业授权。代码可移植迁移不是重写。HIP 核函数与 CUDA 同构同一份源码在 AMD 与 NVIDIA 平台都能编译运行换平台改的是编译命令不是算法。硬件覆盖实打实。Instinct MI100 / MI200 / MI300 系列与主流 Radeon 显卡均在支持范围内多卡通信由 RCCL 集合通信库兜底分布式训练不缺底层件。ROCm 多卡节点8 张 GPU 经 Infinity Fabric 全互联大规模训练的基本单元。3 条命令装好 ROCm 开发环境前置条件一句话Ubuntu 22.04/24.04 或 RHEL 8/9支持列表内的 Instinct 或 Radeon 显卡16GB 以上内存磁盘预留 20GB 以上。ROCm 有 apt 与 runfile 两条安装路径下面走 apt 最短路径# ① 导入 GPG 密钥并配置 apt 源 wget -qO - https://repo.radeon.com/rocm/rocm.gpg.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/rocm.gpg echo deb [archamd64] https://repo.radeon.com/rocm/apt/apt/ stable main | sudo tee /etc/apt/sources.list.d/rocm.list # ② 安装 HIP SDKhipCC 编译器与 HIP 运行时 sudo apt update sudo apt install -y rocm-hip-sdk # ③ 当前用户加入 video/render 组否则程序打不开 GPU sudo usermod -aG video,render $USER执行完注销再登录让用户组生效。装完立刻做两个最小验证# 验证 1系统是否认出你的 GPU应看到 gfx 目标 rocminfo | grep -i gfx # 验证 2编译并运行官方示例冒烟测试 cd /opt/rocm/share/hip/samples/0_Intro/bit_extract make ./bit_extract第一条命令能列出对应 gfx 目标、示例能正常打印结果说明编译器、运行时、驱动三件套都通了。环境就绪后面的事才有意义。理解计算单元GPU 并行快的原因只有一条把计算单元CU想象成小车间顶上的调度器是工头不停派发任务4 个 SIMD 单元是四条流水线一条指令同时处理 64 份数据吞吐的主来源就在这里标量单元干控制流的细活每条流水线配大容量寄存器文件整个 CU 再共享一块叫 LDS 的高速本地内存。快的原因只有一条海量线程共用同一条指令数据从寄存器和 LDS 里抓几乎不等慢速的全局内存。写 HIP 核函数时你只定义每个线程干什么剩下交给平台。ROCm 计算单元内部结构调度器、SIMD 流水线与 LDS 寄存器文件。把第一个 HIP 核函数跑起来向量加法是 HIP 的最小完整闭环分配显存、搬数据、启动核函数、校验结果。核函数里只有一行计算索引块号×块大小线程号让每个线程在显存里找到自己的数据越界检查保证尾部线程不越权// vector_add.cpp #include hip/hip_runtime.h #include iostream #include algorithm // 每个线程负责一个元素的加法 __global__ void vecAdd(const float* a, const float* b, float* c, int n) { int idx hipBlockIdx_x * hipBlockDim_x hipThreadIdx_x; if (idx n) c[idx] a[idx] b[idx]; } int main() { const int n 1024; std::vectorfloat hA(n, 1.0f), hB(n, 2.0f), hC(n, 0.0f); float *dA, *dB, *dC; hipMalloc(dA, n * sizeof(float)); // 申请设备内存 hipMalloc(dB, n * sizeof(float)); hipMalloc(dC, n * sizeof(float)); hipMemcpy(dA, hA.data(), n * sizeof(float), hipMemcpyHostToDevice); // 主机→设备 hipMemcpy(dB, hB.data(), n * sizeof(float), hipMemcpyHostToDevice); // 4 个块 × 256 线程启动核函数 hipLaunchKernelGGL(vecAdd, dim3(4), dim3(256), 0, 0, dA, dB, dC, n); hipDeviceSynchronize(); // 阻塞到 GPU 忙完 hipMemcpy(hC.data(), dC, n * sizeof(float), hipMemcpyDeviceToHost); bool ok std::all_of(hC.begin(), hC.end(), [](float v) { return v 3.0f; }); std::cout (ok ? 向量加法成功全部元素为 3.0 : 校验失败) std::endl; hipFree(dA); hipFree(dB); hipFree(dC); return ok ? 0 : 1; }整套 API 只需记四步hipMalloc分配、hipMemcpy搬运、hipLaunchKernelGGL启动、hipDeviceSynchronize同步。编译运行hipcc -O2 -o vec_add vector_add.cpp ./vec_add只改这一行的三个微调用来确认你对参数有感知把n改成 4096验证索引逻辑没写死把dim3(256)换成 128输出应不变、耗时变化把改成乘 2输出全变 2.0证明改动确实跑在了 GPU 上。现有 PyTorch 代码基本不用改框架层最关心迁移成本ROCm 的答案是换安装源不换 API。ROCm 版 PyTorch 用当前稳定版对应的 index 安装pip3 install torch torchvision --index-url https://download.pytorch.org/whl/rocm6.2 python3 -c import torch; print(torch.__version__, torch.cuda.is_available())打印出版本号和True说明 PyTorch 已自动识别 AMD GPU——代码里照旧写torch.cuda这套 API框架自己路由过去。TensorFlow 同理pip3 install tensorflow-rocm python3 -c import tensorflow as tf; print(tf.config.list_physical_devices(GPU))设备列表非空即可开训。对 HIP 核函数而言迁移成本更低cudaMalloc改hipMalloc、cudaMemcpy改hipMemcpy编译器从 nvcc 换成 hipCC训练脚本一行不动。三类高频故障的 30 秒排查现象一条命令预期输出GPU 未识别lspci \| grep -i amd出现AMD/ATI3D controller否则查驱动与video/render用户组hipCC 编译找不到which hipcc hipcc --version路径指向 ROCm 安装目录并打印版本否则先加载 ROCm 环境脚本显存不足rocm-smi --showmeminfo vram逐卡列出 Free/Total一眼看出是占满还是碎片深挖时还有两件武器rocgdb给程序设断点单步看核函数启动路径rocprof生成 trace 数据导入剖析工具看核函数级耗时。rocm-smi --showtopo 输出卡间链路类型、跳数与 NUMA 亲和。多卡调度前值得再看一眼拓扑视图XGMI 直连、PCIe 还是经 NUMA 跨节点决定你把哪两张卡绑在一个任务里。ROCm RCCL 八卡集合通信测试分布式训练前验证卡间带宽的常用手段。下一步git clone https://gitcode.com/GitHub_Trending/ro/legacy-rocm-build跑通share/hip/samples/下的全部 Intro 示例记录每个核函数耗时写一个 4096×4096 矩阵乘法rocm-smi监控 VRAM 占用的同时对比两组块大小与 tile 尺寸的耗时用 ROCm 版 PyTorch 训练一个两层小网络记录 GPU 与 CPU 的 step 耗时对照搬数据的隐形开销没了算力才算真正跑满。【免费下载链接】legacy-rocm-buildAMD ROCm™ Software - GitHub Home项目地址: https://gitcode.com/GitHub_Trending/ro/legacy-rocm-build创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设
高端定制
企业官网