news 2026/7/3 10:26:16

一文搞明白 hipBLAS:ROCm 里的 BLAS 加速核心

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
一文搞明白 hipBLAS:ROCm 里的 BLAS 加速核心

一文搞明白 hipBLAS:ROCm 里的 BLAS 加速核心

在 GPU 计算世界里,只要你碰到“矩阵乘法、向量加法、Transformer、CNN”,几乎都绕不开一个关键词:BLAS(Basic Linear Algebra Subprograms)

在 NVIDIA CUDA 生态里是cuBLAS,而在 AMD ROCm 生态里,对应的就是本文主角:

🚀hipBLAS:AMD GPU 上的高性能 BLAS 实现


1. hipBLAS 是什么?

hipBLAS = AMD GPU 上的 BLAS 加速库(类似 cuBLAS)

它提供:

  • 向量运算(Level 1 BLAS)
  • 矩阵-向量(Level 2 BLAS)
  • 矩阵-矩阵(Level 3 BLAS)

核心目标:

用 GPU 的并行能力,加速线性代数计算


🌰 典型函数

类别函数作用
Level 1hipblasSaxpyy = a*x + y
Level 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
厂商NVIDIAAMD
API风格CUDAHIP
功能BLASBLAS
对应关系CUDA ecosystemROCm ecosystem

👉 可以理解为:

hipBLAS = cuBLAS 的 AMD 对应实现


4. hipBLAS 最重要的函数:GEMM

💡 GEMM 是什么?

C = αAB + βC

这是:

深度学习里最核心的计算:矩阵乘法


🌰 PyTorch 背后的真实调用

例如:

importtorch a=torch.randn(1024,4096,device="cuda")b=torch.randn(4096,4096,device="cuda")c=a @ b

在 ROCm 下执行流程:

torch.matmul ↓ ATen operator ↓ HIP kernel dispatch ↓ hipBLAS::hipblasGemmEx ↓ GPU kernel(wavefront并行)

5. 一个 hipBLAS C++ 示例(最经典)

#include<hipblas.h>intmain(){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 中:

模块是否依赖 BLAS
QKV projection✔ GEMM
FFN(MLP)✔ GEMM
Attention score✔ GEMM
Softmax❌(非BLAS)

👉 结论:

Transformer 80% 计算都靠 GEMM(hipBLAS)


7. 为什么你在 profiling 里会看到 hipBLAS?

你之前用 rocprofv2 看到:

KernelExecution hipblas / gemm kernel

原因:

  • PyTorch 调用 matmul
  • 自动 fallback 到 hipBLAS
  • rocprofiler hook 到 kernel launch

所以你看到的“kernel trace”本质是:

hipBLAS dispatch 的 GPU kernel


8. hipBLAS vs rocBLAS(容易混淆)

很多人会问:

hipBLAS 和 rocBLAS 是什么关系?

答案:

角色
rocBLAS底层高性能实现
hipBLASHIP API wrapper(更兼容 CUDA风格)

👉 可以理解为:

hipBLAS = API 层
rocBLAS = 真正干活的底层实现


9. 性能优化关键点

hipBLAS 性能主要受:

1️⃣ Tile 分块策略

GPU wavefront 并行执行 GEMM

2️⃣ Memory coalescing

连续访问 global memory

3️⃣ Tensor Core / Matrix Core(部分 GPU)

4️⃣ 数据布局

  • row-major vs column-major
  • stride

10. 常见问题(工程坑)

❌ 1. 找不到 libhipblas.so

/usr/bin/ld: cannot find -lhipblas

解决:

exportLD_LIBRARY_PATH=/opt/dtk/hipblas/lib:$LD_LIBRARY_PATH

❌ 2. 性能不如预期

可能原因:

  • 未使用 GEMM kernel
  • dtype 不匹配(fp32 vs fp16)
  • layout 不对(stride问题)

11. 总结一句话

hipBLAS 是 ROCm 生态中负责高性能线性代数计算的核心库,是 PyTorch / vLLM / Transformer 计算性能的底层关键组件。


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/1 4:01:25

快上车!掌握多尺度Mamba新方法,快人一步发文章

听说有人觉得transformer太卷了&#xff0c;想搞新的&#xff0c;不如看看mamba&#xff1f;当然&#xff0c;纯单尺度Mamba也是卷上加卷&#xff0c;我是说多尺度mamba这块&#xff0c;它是SSM子方向最成熟、产出最多、赛道最宽的选题了。当前的多尺度mamba有三大落地赛道&…

作者头像 李华
网站建设 2026/7/3 7:32:38

RAG = 就是让AI去查资料然后再回答 ?

故事是这样的。 RAG这个词&#xff0c;我大概在一年多前就开始频繁地在各种技术群、公众号、推特上刷到了。每次看到有人聊RAG&#xff0c;我都会本能地点进去看两眼&#xff0c;然后。。。看不到三分之一就退出来了。 不是因为看不懂&#xff0c;而是每次看到的内容都是那种很…

作者头像 李华
网站建设 2026/7/1 4:00:10

[特殊字符] 财经日报 | 2026年6月30日(周二)

&#x1f4c5; 财经日报 | 2026年6月30日&#xff08;周二&#xff09;&#x1f525; 热点速览道指创历史收盘新高&#xff0c;纳指飙升2.07%&#xff0c;标普500涨1.18%&#xff0c;大型科技股强势反弹美伊多哈会谈迷雾重重&#xff1a;特朗普称今日会谈&#xff0c;伊朗坚决否…

作者头像 李华
网站建设 2026/7/1 3:58:17

Zynq AC880-Pro开发板:FPGA+YOLO实时目标检测 + WiFi无线图传实战

项目概述 本项目基于AC880-Pro&#xff08;Xilinx Zynq-7020&#xff09;开发板&#xff0c;实现了一套完整的FPGA硬件加速YOLO实时目标检测 WiFi无线图传方案。系统上电后自动开启WiFi热点&#xff0c;手机/电脑连接即可通过浏览器实时查看摄像头画面和AI检测结果&#xff0…

作者头像 李华
网站建设 2026/7/1 3:54:57

AI Agent开发实战:从概念到落地,构建自动化工作流

1. 先搞清楚 AI Agent 到底在解决什么问题&#xff0c;别急着上手AI Agent 这个词最近热度很高&#xff0c;但很多人一上来就踩坑&#xff0c;不是去研究框架&#xff0c;就是去复现别人的工作流&#xff0c;结果跑了一圈发现&#xff0c;要么根本跑不起来&#xff0c;要么跑起…

作者头像 李华