一文搞明白 hipBLAS:ROCm 里的 BLAS 加速核心 📅 2026/7/1 4:01:47 一文搞明白 hipBLASROCm 里的 BLAS 加速核心在 GPU 计算世界里只要你碰到“矩阵乘法、向量加法、Transformer、CNN”几乎都绕不开一个关键词BLASBasic Linear Algebra Subprograms。在 NVIDIA CUDA 生态里是cuBLAS而在 AMD ROCm 生态里对应的就是本文主角hipBLASAMD GPU 上的高性能 BLAS 实现1. hipBLAS 是什么hipBLAS AMD GPU 上的 BLAS 加速库类似 cuBLAS它提供向量运算Level 1 BLAS矩阵-向量Level 2 BLAS矩阵-矩阵Level 3 BLAS核心目标用 GPU 的并行能力加速线性代数计算 典型函数类别函数作用Level 1hipblasSaxpyy a*x yLevel 1hipblasSdot向量点积Level 3hipblasSgemm矩阵乘法最重要2. hipBLAS 在 ROCm 体系中的位置ROCm 软件栈大致是PyTorch / TensorFlow / vLLM ↓ ATen / Inductor ↓ HIP runtime (类似 CUDA runtime) ↓ hipBLAS / hipFFT / rocBLAS / rocPRIM ↓ GPU关键点hipBLAS 本质上是 BLAS API HIP backend 封装3. hipBLAS vs cuBLAS特性cuBLAShipBLAS厂商NVIDIAAMDAPI风格CUDAHIP功能BLASBLAS对应关系CUDA ecosystemROCm ecosystem 可以理解为hipBLAS cuBLAS 的 AMD 对应实现4. hipBLAS 最重要的函数GEMM GEMM 是什么C αAB βC这是深度学习里最核心的计算矩阵乘法 PyTorch 背后的真实调用例如importtorch atorch.randn(1024,4096,devicecuda)btorch.randn(4096,4096,devicecuda)ca b在 ROCm 下执行流程torch.matmul ↓ ATen operator ↓ HIP kernel dispatch ↓ hipBLAS::hipblasGemmEx ↓ GPU kernelwavefront并行5. 一个 hipBLAS C 示例最经典#includehipblas.hintmain(){hipblasHandle_t handle;hipblasCreate(handle);float*A,*B,*C;// C A * BhipblasSgemm(handle,HIPBLAS_OP_N,HIPBLAS_OP_N,1024,1024,1024,alpha,A,1024,B,1024,beta,C,1024);hipblasDestroy(handle);}6. hipBLAS 在 AI / LLM 中的作用非常关键你可以把 hipBLAS 理解为 LLM 推理/训练的“发动机之一”在 Transformer 中模块是否依赖 BLASQKV projection✔ GEMMFFNMLP✔ GEMMAttention score✔ GEMMSoftmax❌非BLAS 结论Transformer 80% 计算都靠 GEMMhipBLAS7. 为什么你在 profiling 里会看到 hipBLAS你之前用 rocprofv2 看到KernelExecution hipblas / gemm kernel原因PyTorch 调用 matmul自动 fallback 到 hipBLASrocprofiler hook 到 kernel launch所以你看到的“kernel trace”本质是hipBLAS dispatch 的 GPU kernel8. hipBLAS vs rocBLAS容易混淆很多人会问hipBLAS 和 rocBLAS 是什么关系答案库角色rocBLAS底层高性能实现hipBLASHIP API wrapper更兼容 CUDA风格 可以理解为hipBLAS API 层rocBLAS 真正干活的底层实现9. 性能优化关键点hipBLAS 性能主要受1️⃣ Tile 分块策略GPU wavefront 并行执行 GEMM2️⃣ Memory coalescing连续访问 global memory3️⃣ Tensor Core / Matrix Core部分 GPU4️⃣ 数据布局row-major vs column-majorstride10. 常见问题工程坑❌ 1. 找不到 libhipblas.so/usr/bin/ld: cannot find -lhipblas解决exportLD_LIBRARY_PATH/opt/dtk/hipblas/lib:$LD_LIBRARY_PATH❌ 2. 性能不如预期可能原因未使用 GEMM kerneldtype 不匹配fp32 vs fp16layout 不对stride问题11. 总结一句话hipBLAS 是 ROCm 生态中负责高性能线性代数计算的核心库是 PyTorch / vLLM / Transformer 计算性能的底层关键组件。