Origin
type
Post
status
Published
date
Jul 25, 2024
slug
summary
从 CUDA 核心到 Tensor Core,理解矩阵计算与混合精度,梳理 Volta 到 Hopper 的关键演进,以及 GPU 选型时值得关注的因素。
tags
category
芯片架构
icon
password
Created
Jul 25, 2024 01:49 PM
URL
作者
慢慢学 AIGC
来源
微信
发布时间
May 28, 2024 08:08
标签
GPU
📖
阅读提示:本文为历史文章的整理版。产品规格、企业布局、市场数据及预测保留原文语境,不代表最新进展;涉及选型和决策,请核对最新官方资料。
来源:慢慢学 AIGC · 原文链接

引言

如果你最近在看 GPU 选型,八成会被一堆名词砸到:CUDA 核心、Tensor Core、FP16、TF32、FP8……看起来都很“硬”,但其实它们回答的是同一个问题:为什么同样是 GPU,有的训练大模型飞快,有的却明显吃力?
先用一句人话概括:
  • CUDA 核心更像“通用工人”,什么都能干。
  • Tensor Core(张量核心)是“矩阵乘法专用加速器”,专门把深度学习里最耗时的那部分活干得又快又省电。
接下来我们就从这两个“工种”讲起,顺便把不同代 Tensor Core 的升级点捋清楚。
🎯
本文用更直观的方式,帮你一次搞清楚:
  • CUDA 核心和 Tensor Core 分别在做什么
  • Tensor Core 为什么能让训练和推理明显提速
  • Volta、Turing、Ampere、Hopper 几代 Tensor Core 的关键变化
  • 怎么判断一块 GPU 有没有 Tensor Core

什么是 CUDA 核心?

先从最基础的说起。
CUDA(Compute Unified Device Architecture) 是 NVIDIA 提供的一套并行计算平台和编程接口。它更像是“说明书 + 工具箱”:让程序员能写出指令,指挥 GPU 按照某种方式并行干活。
而 CUDA 核心 则是 GPU 里最常见、最通用的计算单元。它们擅长做常规的浮点运算,比如加法、乘法,以及常见的“乘加”(Multiply-Add)。
CUDA 核心原文示意图
CUDA 核心原文示意图
一个更直观的比喻是:
  • CPU 像“少数几个非常聪明的工程师”,擅长复杂决策和分支。
  • GPU 像“成百上千个做同一件事的熟练工人”,擅长把同一种计算批量并行完成。
在深度学习里,最核心的工作之一就是大量的矩阵乘法,比如线性层、卷积、注意力机制里的乘法。这类计算非常适合并行,所以很多 CUDA 核心一起上阵,速度会很快。
但 CUDA 核心的“通用性”也带来两个现实问题:
  • 不是为矩阵乘法量身定制:能算,但不算“最合身”。
  • 扩展成本越来越高:模型越来越大、数据越来越多,继续堆核心、提频率的能效比会越来越差。
于是,Tensor Core 出场了。

什么是 Tensor Core?

Tensor Core(张量核心) 是专门为“矩阵运算”加速设计的计算单元,尤其适合深度学习训练和推理中最常见的矩阵乘法与累加。
它的核心思想可以用一句话概括:
用更省的精度做更快的矩阵乘法,同时在关键处用更稳的精度保证结果可靠。
更具体一点,常见模式是:
  • 输入用更“省”的精度,比如 FP16、BF16、INT8。
  • 计算用专门硬件电路把矩阵乘法做得很快。
  • 输出或累加用更“稳”的精度,比如 FP32。
这就是大家常听到的 混合精度(Mixed Precision)。可以把它理解成:
  • 草稿阶段用“铅笔”快速算(低精度)
  • 关键步骤用“计算器”校验或累加(高精度)
  • 结果既快,又更不容易在数值上“跑偏”
Tensor Core 与混合精度原文示意图
Tensor Core 与混合精度原文示意图
第一代 Tensor Core 在 Volta 架构中首次出现(代表型号 V100)。从那之后,NVIDIA 基本每一代都会扩展 Tensor Core 支持的数值格式,让它能覆盖更多任务场景。

Tensor Core 到底怎么“跑得快”?

先抓住一句话:
深度学习里最耗时的往往是“矩阵乘法 + 累加”(GEMM)。
Tensor Core 的优势主要来自两点:
  1. 硬件专用,少走弯路 通用计算单元需要用一连串指令“拼”出矩阵乘法;而 Tensor Core 把这件事做成了更贴合的硬件流水线,专门为矩阵乘法优化。
  1. 低精度吞吐更高,搬得少、算得密 FP16、INT8 这类数据更短:
      • 同样的显存带宽里,一次能搬运更多数据
      • 同样的时间里,能完成更多乘加操作 所以吞吐更高。
矩阵计算原文示意图
矩阵计算原文示意图
接下来按代际把关键变化讲清楚。

Tensor Core 的代际演进(Volta → Hopper)

第一代:Volta(V100)

Volta 是 Tensor Core 的“开山鼻祖”。
  • 主要面向 FP16 混合精度训练。
  • 相比上一代 Pascal,在深度学习相关矩阵运算的吞吐上有显著提升。
带有和不带有 Tensor Core 的 Pascal 与 Volta 计算可视化:
Pascal 与 Volta 原文对比图
Pascal 与 Volta 原文对比图
换个更生活化的理解:
  • CUDA 核心像“拿着通用工具干活”。
  • 第一代 Tensor Core 像“专门做矩阵乘法的模具机”,同样时间能压出更多零件。

第二代:Turing(RTX 20 / 部分专业卡)

第二代 Tensor Core 随 Turing 发布。
  • 在 FP16 之外,扩展支持 INT8、INT4、INT1 等更低精度。
  • 对推理(Inference)尤其友好,因为推理往往更能容忍低精度。
不同精度格式速度对比可视化:
Turing 精度格式原文对比图
Turing 精度格式原文对比图
顺带一提:Turing 还引入了 RT Core(光线追踪核心),主要面向图形渲染中的光线追踪。

第三代:Ampere(A100 / RTX 30 / A 系列工作站)

Ampere 的 Tensor Core 更强大,也更“通用”。
  • 在 FP16 之外,引入或强化了 TF32、bfloat16 等格式。
  • TF32 非常关键:它让很多原本按 FP32 写的训练代码,几乎不改动也能吃到 Tensor Core 的加速。
Ampere 原文配图
Ampere 原文配图
可以把 Ampere 想成:把“模具机”升级为能处理更多材料规格的智能产线,换材料更省事,产量还更大。

第四代:Hopper(H100)

Hopper 的亮点之一是引入对 FP8 的支持。
  • FP8 更“短”,理论吞吐更高。
  • 在 NVIDIA 的宣传中,FP8 对大模型训练可带来很显著的提升(实际效果取决于任务、框架与实现)。
Hopper 原文配图
Hopper 原文配图
此外,Hopper 也强调更强的互联能力(如 NVLink),让多块 GPU 更像“一个更大的整体”协作。

怎么判断一块 GPU 有没有 Tensor Core?

最简单的方法:看它属于哪一代架构,以及定位是什么。
  • 早期架构(如 Maxwell、Pascal)通常没有 Tensor Core。
  • 从 Volta 开始,在数据中心卡、专业卡、后来的消费级 RTX 中逐步普及。
下面是文中提到的 Paperspace 机器对照表:
GPU 型号
Tensor Core
RT Core
M4000
否
否
P4000
否
否
P5000
否
否
P6000
否
否
V100
是
否
RTX 4000
是
是
RTX 5000
是
是
A4000
是
是
A5000
是
是
A6000
是
是
A100
是
待核对
说明:已将原文错位的横表整理为纵表。原表把 A100 的 RT Core 标为“是”,该项未获核验,因此不沿用为确定结论;具体能力请以对应型号官方规格为准。
从选型角度,可以这样记:
  • 训练大模型:更在意 Tensor Core 的代际、显存容量、显存带宽、以及互联能力。
  • 部署推理:更在意低精度(INT8、FP16、FP8)的效率、功耗与成本。

结语

如果把 GPU 的进步当作一条主线,那么 Tensor Core 的演进几乎就是这条线里最醒目的部分之一。
  • Volta 让混合精度训练从“技巧”变成了“硬件能力”。
  • Turing 把支持扩展到更多低精度,让推理更高效。
  • Ampere 用 TF32 等机制,让更多训练任务更容易吃到加速。
  • Hopper 进一步把精度推到 FP8,为大模型时代提供更高吞吐的可能。
理解这些差异以后,你在看 GPU 规格、读训练加速文章、或者给项目做硬件选型时,会更容易判断:
  • 为什么同样标着“算力”,实际训练速度差很多。
  • 为什么有些卡对深度学习特别友好。
  • 为什么“混合精度”几乎成了现代训练的标配。