15.2 节我们拆解了 GPU 的宏观硬件架构:计算单元、存储层级、调度单元。但当你打开一片 NVIDIA GPU 的芯片版图时,会发现真正执行运算的物理单元并非铁板一块,而是分成了三种功能截然不同的“工种”——CUDA Core(通用计算单元)、Tensor Core(张量加速单元)和 RT Core(光追单元)。在大模型训练与推理的工程实践中,搞清楚它们各自能干什么、不能干什么,直接决定了你能否看懂硬件 spec 表上的数字陷阱,以及为什么某些卡“纸面算力很高”却跑不出预期性能。
一、CUDA Core:通用并行计算的“老黄牛”
CUDA Core(早期文献中也称 Streaming Processor, SP)是 NVIDIA GPU 中最基础、历史最悠久的计算单元, residing 在 SM(Streaming Multiprocessor)内部。
它到底做什么?
- 标量与向量运算:浮点加减乘除(FP32/FP64)、整数运算(INT32)、位操作、比较、分支逻辑等。
- 通用程序的执行载体:当你写一个普通的 CUDA Kernel(非矩阵乘法),或者 PyTorch 里遇到不适合 Tensor Core 的零散操作(如自定义索引、条件判断、数据预处理),最终就是由 CUDA Core 一条条线程(Thread)去执行。
- 图形渲染:顶点着色、像素着色等传统图形管线任务,同样依赖 CUDA Core。
在大模型场景中的角色:
CUDA Core 是“兜底”角色。Transformer 里并非所有运算都是规整的大矩阵乘法,例如:
- 激活函数(GELU、SwiGLU 的逐元素计算)
- Softmax 的归约求和与除法
- LayerNorm / RMSNorm 的统计量计算
- 数据类型转换、索引重排、控制流分支
这些操作无法充分利用 Tensor Core 的矩阵乘加(MMA)指令,只能由 CUDA Core 完成。因此,即便你的模型 80% 的 FLOPs 在 Tensor Core 上,剩余 20% 的 CUDA Core 负载如果过重,也会成为瓶颈(这就是 16.1 节将要讨论的“计算瓶颈”中的长尾延迟)。
二、Tensor Core:深度学习时代的“专用引擎”
Tensor Core 是 Volta 架构(V100)引入的专用加速单元,它的设计目标极其纯粹:在单个时钟周期内,高效完成一个小型矩阵乘加运算(D = A × B + C)。
为什么它改变了一切?
在 Tensor Core 出现之前,GPU 做矩阵乘法需要把运算拆解成大量标量/向量指令,由 CUDA Core 串行发射,指令开销和寄存器占用极高。Tensor Core 则像一台微型“矩阵乘法机”,一次性吞入一个 4×4、8×8×4 或更大的矩阵块,硬件级地完成乘加累加。这让 GEMM(通用矩阵乘法)——也就是 Transformer 中注意力层和前馈网络(FFN)的核心算子——效率提升了数倍乃至十数倍。
精度演进与代际差异:
| 架构代际 | 代表型号 | Tensor Core 代数 | 新增关键能力 | 大模型相关度 |
|---------|---------|----------------|------------|------------|
| Volta | V100 | 1st Gen | FP16 混合精度 | 开创者,但已淘汰 |
| Turing | T4 / RTX 20 | 2nd Gen | + INT8 / INT4 / INT1 | 推理卡 T4 曾广泛用于早期部署 |
| Ampere | A100 / A30 / RTX 30 | 3rd Gen | + TF32、BF16、稀疏性加速 | 训练主力 A100 至今仍大规模服役 |
| Ada Lovelace | RTX 40 / RTX 6000 Ada | 4th Gen | + FP8 | 消费级/工作站推理性价比之选 |
| Hopper | H100 / H200 | 4th Gen / 新一代 | FP8 + Transformer Engine(硬件级动态精度管理) | 当前训练集群标配 |
| Blackwell | B100 / B200 / RTX 50 | 5th Gen | FP4 / FP6、第二代 Transformer Engine | 下一代训练旗舰 |
实用提示:选型时务必看清“Tensor Core”支持的精度。例如,A100 的 TF32 让 FP32 训练几乎不损失精度却提速 8 倍;H100 的 FP8 和 Transformer Engine 则让大模型训练的显存占用与算力效率再上一个台阶。
在大模型场景中的角色:
绝对主力。预训练中的每一次前向传播(矩阵乘)和反向传播(梯度矩阵乘),推理中的 KV-Cache 投影和 FFN 计算,几乎全部由 Tensor Core 承接。我们在 16.1 节讨论“计算瓶颈”时,本质上就是在讨论 Tensor Core 的利用率(MFU) 能否被打满。
三、RT Core:图形渲染的“专业选手”
RT Core(Ray Tracing Core)是 Turing 架构引入的专用单元,功能单一且极具针对性:加速 Bounding Volume Hierarchy(BVH)遍历和光线-三角形求交计算,用于实时光线追踪渲染。
在大模型场景中的角色:
基本不参与。
大模型训练与推理是纯计算密集型的数值线性代数任务,不涉及光线追踪。因此:
- 数据中心级训练卡(A100、H100、H200):芯片面积和功耗预算全部向计算和显存控制器倾斜,不含 RT Core。
- 消费级显卡(RTX 3090/4090)与部分 RTX 专业卡(如 RTX A6000 Ada):保留了 RT Core,因为它们的定位是“图形+计算”混合。这意味着,对于同等晶体管预算和功耗墙,消费卡有一部分硅面积被 RT Core 占据,而这部分面积如果换成 Tensor Core 或更大的显存控制器,反而对大模型更有利。
实用认知:这就是为什么 16.3 节会提到,消费级卡(如 RTX 4090)的 FP16/BF16 Tensor Core 算力纸面数据惊人,但在大规模分布式训练中,其显存容量、PCIe 带宽、无 NVLink 互联等短板(而非 RT Core 本身)才是主要瓶颈。RT Core 对 LLM 来说只是“沉默的看客”,既不帮忙,也不添乱(不额外耗电,因为空闲时通常可关断时钟)。
四、三者的分工协作:一张图看懂
把一次典型的大模型前向传播运算切片,三种核心的分工如下:
输入 Token Embedding + 位置编码
↓
[CUDA Core] 数据整形、索引查表、类型转换
↓
[Tensor Core] Q/K/V 投影矩阵乘法 (GEMM)
↓
[CUDA Core] Softmax、缩放、掩码、注意力权重统计
↓
[Tensor Core] 注意力输出投影 (GEMM) + FFN 两层 GEMM
↓
[CUDA Core] 残差连接加法、LayerNorm/RMSNorm
↓
输出 logits
总结表:
| 核心类型 | 设计初衷 | 执行指令类型 | LLM 中的典型负载 | 是否决定峰值算力 |
|---------|---------|-------------|----------------|----------------|
| CUDA Core | 通用并行计算 | 标量/向量 FP32/INT32 运算、分支逻辑 | 激活函数、归约、Norm、控制流、数据搬运 | 否(兜底) |
| Tensor Core | 深度学习矩阵加速 | 矩阵乘加 (MMA),混合精度 | 所有 GEMM(注意力、FFN、线性层) | 是 |
| RT Core | 实时光线追踪 | BVH 遍历、光线-三角形求交 | 无 | 否(闲置) |
五、给开发者的三条实用建议
1. 看算力认准 Tensor Core,而非 CUDA Core 数量
硬件 spec 表上的 “CUDA Core 数”对深度学习参考意义有限。真正决定大模型训练速度的是 Tensor FP16/BF16/FP8 峰值算力(单位 TFLOPS)。例如,H100 SXM 的 FP8 算力约 4000 TFLOPS,这是评估集群规模时的核心指标。
2. 小 batch 推理时,Tensor Core 可能“吃不饱”
Tensor Core 的效率随矩阵尺寸增大而提升。如果推理 batch size=1,序列长度很短,GEMM 矩阵退化成“小胖子”,此时有效吞吐可能受限于 CUDA Core 或显存带宽,而非 Tensor Core 峰值。这是 22.3 节推理优化中“连续批处理(Continuous Batching)”和“增大 batch”的技术动机之一。
3. 写自定义 CUDA Kernel 时,主动“喂”Tensor Core
如果你在用 Triton、CUTLASS 或手写 CUDA 做算子优化,不要只用 CUDA Core 做循环展开。通过 WMMA(Warp Matrix Multiply Accumulate)或 PTX mma.sync 指令,将符合矩阵乘模式的运算显式映射到 Tensor Core,是获取极致性能的关键。绝大多数情况下,PyTorch + cuBLAS/cuDNN 已经自动做好了这件事,但如果你做 MoE 的自定义路由或新型注意力变体,这层认知能帮你定位性能瓶颈。
六、小结
NVIDIA GPU 内部的三类核心,本质上是通用计算(CUDA Core)、专用加速(Tensor Core)与图形专用(RT Core)的分层设计。在大模型的世界里:
- Tensor Core 是主角,它的代际和精度支持直接决定了你的训练速度与推理成本;
- CUDA Core 是配角但不能缺位,Norm、Softmax、激活等长尾算子靠它兜底;
- RT Core 是观众,除非你的 LLM 应用同时叠加了 3D 渲染管线,否则无需考虑。
理解了这套分工,你再去看 15.4 节的 SIMT 执行模型和 15.6 节的计算精度时,会清楚意识到:SIMT 是 CUDA Core 的线程组织哲学,而 FP16/BF16/FP8 则是 Tensor Core 的燃料规格。两者共同构成了大模型算力的物理底座。