GEMM 与 BLAS 全解:Tensor Core、CUDA、Transformer 的关系,各家 GPU 与框架的实现逻辑,以及投资机会
声明:本文作为笔者个人备忘的文章,不喜勿喷。本文由AI辅助生成,技术参数与市场信息整理自公开资料,仅供参考。
一、一句话结论
GEMM(通用矩阵乘法)是大模型/深度学习绝对的"计算心脏",占 Transformer 计算的 90% 以上;BLAS 是矩阵/向量运算的标准库接口;而 Tensor Core 是 GPU 上为 GEMM 专门造的"乘法机房"。
整条链路是:Transformer 的每一层几乎都是 GEMM → 由框架(PyTorch 等)下发 → 调用 cuBLAS/cuDNN/CUTLASS → 在 CUDA 上驱动 Tensor Core 硬件。谁把 GEMM 跑得更快、软件生态更好,谁就赢得 AI 算力竞赛。
二、GEMM 与 BLAS 是什么?
2.1 BLAS(基础线性代数子程序库)
BLAS(Basic Linear Algebra Subroutines)是 1980 年代起逐步标准化的线性代数底层函数接口,分三个层级: -Level 1:向量-向量运算(如点积、axpy); -Level 2:矩阵-向量运算(GEMV); -Level 3:矩阵-矩阵运算(GEMM是最重要、最难优化的一个)。
价值:BLAS 让无数科学计算、机器学习程序不必重复造轮子,统一调用同一套接口,而具体实现由各厂商针对硬件优化。
2.2 GEMM(通用矩阵乘法)
C = α·A·B + β·C- A 是 M×K、B 是 K×N、C 是 M×N;
- 计算量为2·M·N·K次浮点运算,是深度学习里"吃算力"最大的单一算子。
2.3 cuBLAS 与 CUTLASS(GPU 侧的两条路)
- cuBLAS:NVIDIA 官方的BLAS 的 GPU 加速闭源库,开箱即用、高度调优,但像"黑盒"。
- CUTLASS:NVIDIA开源的 C++ 模板库,把 GEMM 优化拆成可组合的"积木"(数据tile、线程配置、指令),可定制、可"庖丁解牛",也是 FlashAttention 等的底层抽象来源。
三、GEMM 与 Tensor Core 的关系
Tensor Core 是专为矩阵乘设计的硬件单元(NVIDIA 自 Volta 2017 起加入),一条指令即可完成一块小矩阵的乘累加(如 4×4、8×8、16×8 的 MMA),而普通 CUDA Core 只能做标量乘加。
- GEMM 是 Tensor Core 的核心负载:Tensor Core 把 GEMM 的乘累加"一条条打包"并行。
- 混合精度是关键:Tensor Core 用FP16/BF16/TF32/FP8 输入 × 运算 → FP32 累加,在损失可接受精度下大幅提速。
- 性能差距巨大:H100 的 FP16 Tensor 稠密约 989 TFLOPS,而 FP32 CUDA Core 仅约 67 TFLOPS——专用硬件 + 低精度是 15 倍差距的来源。
一句话:GEMM 是"要算的活",Tensor Core 是"专干这活的机器"。
四、GEMM 在 GPU 中如何计算?
4.1 三层"分块"(Tiling)
沿 M/N/K 三个维度把大矩阵切成小 tile,每个线程块(Thread Block)算一块输出 tile,K 维迭代累加。复用远比算一次重要:数据尽量停留在高速存储(寄存器、共享内存),少去全局内存。
4.2 数据流
Global Memory → Tile 加载 → Shared Memory → 寄存器(Register Blocking) → Tensor Core(Warp 级 MMA)- Warp 级 MMA:32 个线程协同执行一条 Tensor Core 矩阵乘指令;
- 优化手段:多级 tile、共享内存复用、避免 bank conflict、双缓冲/流水线、寄存器阻塞。
4.3 实测(Tesla T4,2048×2048)
| 方案 | 时间 | GFLOPS |
|---|---|---|
| CPU | ~65885 ms | ~1.5 |
| CUDA Naive | ~61 ms | ~308 |
| Shared 优化 | ~25 ms | ~475 |
| cuBLAS | ~2.65 ms | ~2462 |
数据说明:同样的 GEMM,从朴素写法到 cuBLAS,性能差几个数量级——这就是为什么大模型必须"优化到极致"。
五、GEMM 与 CUDA 的关系
CUDA 是 NVIDIA 的编程模型/运行时。开发者用 GEMM 有三种层次: 1.直接调库:cublasGemmEx/ cuDNN——开箱即用、性能最好; 2.CUTLASS 手写:需要定制/算子融合时,用 C++ 模板写 Kernel 驱动 Tensor Core; 3.CUDA C++ 裸写:基础教学/特殊场景。
框架(PyTorch/TensorFlow)的 matmul 最终都落到 cuBLAS / cuDNN / CUTLASS。所以看懂 GEMM 就看懂了 AI 算力的软件底座。
六、GEMM 与 Transformer 的关系
Transformer 的每一层几乎都是矩阵乘: -QKV 投影:X·Wq / Wk / Wv(GEMM); -注意力分数:Q·Kᵀ(GEMM); -输出投影:Attention·Wo(GEMM); -前馈 MLP:GELU(X·W1)·W2(两个大 GEMM)。
GEMM 占 Transformer 总计算的 90% 以上。所以优化 GEMM(如 FlashAttention、更优的矩阵分块)直接决定大模型训练/推理速度;这也是各家 GPU 都拼命优化 GEMM 的原因。
七、每家 GPU 如何实现(矩阵乘法硬件 + 软件栈)
| 厂商 | 硬件矩阵单元 | 软件栈 | 策略 |
|---|---|---|---|
| NVIDIA | Tensor Core | cuBLAS / CUTLASS / cuDNN | 私有高性能 + 生态垄断 |
| AMD | CDNA Matrix Core | ROCm / rocBLAS | HIP 兼容,对标 CUDA |
| Intel | XMX 矩阵引擎 | oneMKL | 服务器/数据中心 |
| 华为昇腾 | Cube Unit(可重构 Cube:16 FP16 ALU + INT8 MAC) | CANN(编译器把 GEMM 拆成 Load→Compute→Store 三阶段直接映射硬件流水线) | 全栈自研,DSA 高能效;batch=1 小矩阵延迟比 A100 低约 11% |
| 寒武纪 | MLU Core + 稀疏加速器(自动跳过零值乘加,1024 步压到 320 步) | NeuWare | 适配推荐/稀疏;CV 等均匀权重场景反而低效 |
| 摩尔线程 | 全功能 GPU(MMX 矩阵单元) | MUSA(API 兼容 CUDA,MUSIFY 一键迁移)+ TileLang-MUSA | 极致兼容,迁移成本最低 |
| 海光 | DCU(类 AMD) | DTK(基于 ROCm,HIP 兼容 CUDA,算子覆盖超 99%) | 源码兼容,HPC+AI |
| 壁仞 | 云端 GPU | BIRENSUPA(类 CUDA) | vLLM/SGLang 快速适配 |
| 沐曦 | 异构计算 | 曦云/曦思 | 通用+推理 |
两条路线: -GPGPU 通用路线(海光、摩尔、沐曦、AMD):兼容 CUDA 生态,迁移成本≈0; -DSA 专用路线(昇腾、寒武纪、昆仑芯、Google TPU):专为张量计算定制,牺牲通用换更高能效与自主可控。
八、常见框架如何实现
- PyTorch:用户写
torch.matmul/nn.Linear→ ATen 层 → 调用cuBLAS/cuDNN(NVIDIA)或各厂商库(昇腾走 CANN/Torch-Ascend、寒武纪走 NeuWare 一键迁移)。 - TensorFlow/JAX:XLA 编译后调用 cuBLAS/CUTLASS。
- 训练/推理框架:DeepSpeed、vLLM、SGLang 下层仍归到 GEMM 算子库。
- TileLang(新变量):一个不归属任何硬件厂商的中立算子编译语言。芯片厂商只需提供编译后端与底层指令接口,上层算子生态即可复用——这让国产芯片有望第一次共享同一套算子生态,解决长期碎片化。DeepSeek 已开源昇腾全套组件,并适配寒武纪、海光、摩尔线程等。
九、为什么有这些?怎么想到的?解决什么问题?
- BLAS(为什么先有接口):数十年前科学计算重复"造矩阵库"。BLAS 用统一接口解决问题,让每个厂商只优化一次、人人共享——本质是工程标准化。
- GEMM 是核心:因为几乎所有线性代数与深度学习,都收敛到 GEMM。优化 GEMM = 优化一切。
- Tensor Core(为什么被想到):NVIDIA 发现 AI/ML 主负载就是矩阵乘,且能容忍精度损失。于是造专用硬件 + 开混合精度——用"精度换性能"解决"通用 CUDA Core 算 GEMM 不够快/不够省"。
- 各家定制(为什么有分歧):绕开 CUDA 生态垄断 + 自主可控 + 能效比,衍生出 GPGPU 兼容路线(迁移成本低)与 DSA 专用路线(能效高)——解决"生态 vs 能效 vs 自主"的三难。
- TileLang/算子生态(新问题):国产芯片软件栈碎片化,模型厂商适配每家都要重来。中立编译语言 + 共享算子生态,解决"国产算力从推理可用走向训练可用、降低迁移门槛"。
本质:AI 算力几乎全花在 GEMM 上,谁把 GEMM 的"硬件 + 软件 + 生态"做到最好,谁就占据算力主导。
十、投资视角:行业占比、投资情况与趋势
10.1 市场规模与占比
- 中国 AI 服务器本土芯片采购占比已升至约 40%,训练芯片国产替代率超 30%。
- 国产格局:华为昇腾一家独大(占半壁江山),寒武纪第二,海光、天数、摩尔线程、沐曦、燧原构成第二梯队。
10.2 主要玩家(2025 出货/业绩概览)
- 华为昇腾:DSA 全栈自研,出货领先;
- 摩尔线程:出货约 6-8 万张,2025 营收 15.05 亿元,全功能 GPU 龙头;
- 沐曦:出货约 5-7 万张,2025 营收 16.44 亿元;
- 燧原科技:S60 累计出货/订单超 10 万片;
- 增速:天数智芯 +168.5%,寒武纪、摩尔、沐曦营收均翻倍以上。
10.3 三条技术路线(交付模式分化)
- SRAM 推理专用(曲速科技):高能效低延迟,适合推理优先;
- 全栈自研(华为昇腾):端到端可控、全场景,适合自主可控要求高;
- 通用 GPU(寒武纪、海光、沐曦):生态兼容、迁移成本低,兼顾训练与推理。
10.4 趋势研判
- 算子生态走向统一:DeepSeek 开源昇腾组件 + TileLang/FlashAttention-Ascend 等,国产从"各自建生态"走向"共享算子层"。
- 训练可用性升级:国产芯片从"能跑推理"迈向"能训大模型"(V4 已在昇腾首发、多芯片适配)。
- AI 服务器国产化率稳步抬升:本土芯片采购占比 40% 且续升。
- 资本市场分化:摩尔/沐曦/天数等 2025 年陆续上市后板块回调,估值从"稀缺溢价"转向"业绩验证"。
十一、当前主要优劣
NVIDIA Tensor Core
- 优:性能与生态(CUDA/cuBLAS/CUTLASS)碾压;混合精度成熟。
- 劣:封闭、对华受限;专用性牺牲了通用性。
华为昇腾 Cube Unit
- 优:DSA 高能效、全栈自主、可重构;小矩阵/推理场景优秀。
- 劣:通用性弱,需适配定制 Torch/CANN,生态仍在追赶。
寒武纪 MLU
- 优:稀疏计算加速,推荐系统等稀疏场景强;PyTorch 一键迁移。
- 劣:CV 等均匀权重场景开启稀疏反而增加开销(实测延迟 +7%)。
国产 GPGPU(海光/摩尔/沐曦)
- 优:生态兼容(HIP/MUSA)、迁移成本低、HPC+AI 兼顾。
- 劣:单卡性能仍逊于英伟达;依赖"跟跑"其生态;资本市场估值高企后回调。
十二、小结
- GEMM 是 AI 算力的心脏,BLAS 是它的标准接口,Tensor Core 是为它而生的专用硬件——三者 + CUDA/框架一起构成"从算法到硬件"的完整链路。
- Transformer 几乎全是 GEMM,优化 GEMM(分块、共享内存、混合精度、算子融合)直接决定大模型速度。
- 各家 GPU 分 GPGPU 兼容与 DSA 专用两路,分别解决"生态迁移"与"能效/自主"。
- 投资主线:国产算力国产化(40% 且续升)、算子生态统一(TileLang/DeepSeek 开源)、训练可用性升级、AI 服务器/高速互联配套,叠加资本市场从"稀缺溢价"转向"业绩验证"。
附:参考来源(公开资料整理)
- NVIDIA 技术博客(CUTLASS 3.x、Tensor Core 浮点仿真、CUTLASS v2.8)
- 腾讯云开发者社区(CUDA:Tensor Core 与混合精度 GEMM、cuBLAS SGEMM 性能实测)
- GitCode / CSDN(simpleCUBLAS、CUTLASS 源码解析、行/列主序)
- 腾讯云 / CSDN(GPU 执行单元:昇腾 Cube Unit、寒武纪 MLU 稀疏加速、三家软栈对比)
- 腾讯新闻 / 网易(DeepSeek 开源昇腾组件、TileLang 跨芯片算子生态)
- 知乎(2026 国产 GPU/AI 芯片出货情况:昇腾/寒武纪/摩尔/沐曦等)
- 央广网 / 中国经济时报 / 新京报(AI 芯片 GPU/ASIC/TPU 多路线、三条交付路线)
- 腾讯新闻(摩尔线程等国产 GPU 上市后板块表现)
- 微信公众号(AI闲谈、国联民生电子等)
笔者按:本文为个人备忘与学习笔记,面向普通读者讲清 GEMM/BLAS 与 Tensor Core、CUDA、Transformer 的关系及各家实现。技术参数以各芯片厂商官方与权威机构数据为准,若有出入以官方为准。