FlashInfer - 测试的GPU H100 SXM、A100 PCIe、RTX 6000 Ada、RTX 4090
FlashInfer - 测试的GPU H100 SXM、A100 PCIe、RTX 6000 Ada、RTX 4090
flyfish
GPU 技术参数术语
1. Memory bandwidth (GB/s)
中文:显存带宽(单位:GB/秒)
定义:显存(GPU 内存)与 GPU 核心之间每秒的数据传输速率,反映显存与计算单元之间的“数据高速公路”宽度。
作用:带宽越高,GPU 每秒能处理的数据量越大,尤其影响需要频繁读写显存的场景(如大规模矩阵运算、高分辨率图形渲染)。
例:H100 SXM 的 3352 GB/s 远高于 RTX 4090 的 1008 GB/s,适合需要海量数据吞吐的 AI 训练。
2. Number of SM
中文:流多处理器数量(SM,Streaming Multiprocessors)
定义:NVIDIA GPU 的核心计算单元,每个 SM 包含多个 CUDA 核心、Tensor Core、共享内存等组件,是并行计算的基本单元。
作用:SM 数量越多,GPU 的并行计算能力越强(尤其是矩阵运算、图形渲染等并行任务)。
例:RTX Ada 6000 的 142 个 SM 多于 RTX 4090 的 128 个,适合更复杂的专业图形计算。
3. Peak Tensor Cores Performance (TFLops/s)
中文:峰值张量核心性能(单位:万亿次运算/秒)
定义:Tensor Core 是 NVIDIA GPU 中专门优化矩阵运算的硬件单元,用于加速 AI 训练和推理中的矩阵乘法与累加(如 FP16/BF16 混合精度计算)。
作用:性能越高,AI 模型训练/推理速度越快,是衡量 GPU 机器学习能力的核心指标。
例:H100 的 989 TFLops 远高于 A100 的 312 TFLops,使其成为大模型训练的首选。
4. Peak (Non-Tensor Cores) FP32 Performance (TFLops/s)
中文:峰值(非张量核心)FP32 浮点性能(单位:万亿次运算/秒)
定义:不依赖 Tensor Core 时,GPU 传统浮点单元(CUDA 核心)处理 32 位单精度浮点运算(FP32)的峰值性能,用于衡量传统科学计算、图形渲染等场景的能力。
作用:FP32 是图形渲染(如 3D 建模、光线追踪)和部分科学计算的基础,性能越高,传统浮点任务速度越快。
例:RTX Ada 6000 的 90 TFLops 高于 A100 的 20 TFLops,更适合专业图形处理。
5. Max Shared Memory (KB/SM)
中文:每 SM 最大共享内存(单位:KB/流多处理器)
定义:每个 SM 内部的高速缓存,用于存储线程块内共享的数据,速度远快于显存,减少对外部显存的访问。
作用:共享内存容量越大,线程间数据交互效率越高,适合需要高频数据共享的并行计算(如 AI 训练中的小批量数据处理)。
例:H100 每 SM 228 KB 共享内存,支持更高效的本地化数据处理。
6. L2 Cache (KB)
中文:二级缓存(单位:KB)
定义:GPU 芯片上的全局高速缓存,介于显存和 SM 共享内存之间,存储常用数据以减少显存访问延迟。
作用:容量越大,数据命中率越高,延迟越低,尤其对需要频繁访问非连续数据的场景(如深度学习中的参数读取、科学计算中的数组操作)有显著优化。
例:RTX Ada 6000 的 98304 KB(96MB)L2 缓存是四款中最大的,适合专业软件的复杂数据处理。
参数 | 核心影响场景 | 数值意义 |
---|---|---|
显存带宽 | 数据密集型任务(AI 训练、高分辨率渲染) | 越高,数据吞吐量越快 |
SM 数量 | 并行计算能力(矩阵运算、图形渲染) | 越多,并行任务处理能力越强 |
Tensor Core 性能 | AI 训练/推理(矩阵乘法为主) | 越高,AI 计算速度越快 |
FP32 性能 | 传统浮点任务(图形渲染、科学计算) | 越高,传统浮点运算越快 |
共享内存(每 SM) | 线程内数据共享效率 | 越大,本地化数据处理效率越高 |
L2 缓存 | 全局数据访问延迟 | 越大,数据缓存命中率越高 |
在 NVIDIA GPU 的技术规格中,sm_xx
(如 sm_90
、sm_80
、sm_89
)代表 计算能力版本(Compute Capability),用于标识 GPU 架构支持的硬件特性和指令集,是 NVIDIA 定义的一套技术标准。以下是具体含义和解析:
sm_xx
sm_xx
是 NVIDIA 用于标识 GPU 架构能力的“技术身份证”,直接决定了 GPU 支持的计算精度、指令集和硬件特性。选择 GPU 或开发 CUDA 程序时,需根据 sm_xx
判断其是否满足任务需求(如 AI 训练需要 sm_80
以上的 Tensor Core 支持,而老旧架构可能无法运行新框架的优化功能)。
1. 计算能力版本的定义
sm_xx
中的 sm
是 Streaming Multiprocessor(流多处理器)的缩写,xx
是版本号,格式为 主版本.次版本
(如 9.0
、8.0
、8.9
),用于区分不同代次的 GPU 架构及其技术特性。
- 主版本(第一个数字):代表 GPU 架构的代次(如 Hopper 是 9.0,Ampere 是 8.0)。
- 次版本(第二个数字):代表同代架构中的小版本迭代(如 Ada Lovelace 架构下的
8.9
可能针对特定型号优化)。
2. 各 sm_xx
的具体含义
架构名称 | 计算能力(sm_xx) | 对应 GPU 型号 | 核心特性 |
---|---|---|---|
Hopper | sm_90 (9.0) | H100 SXM、H100 PCIe 等 | 支持第四代 Tensor Core(FP8/FP16/BF16 混合精度计算)、双精度浮点性能大幅提升,专为 AI 训练和科学计算设计。 |
Ampere | sm_80 (8.0) | A100 PCIe、RTX 3090 等 | 引入第三代 Tensor Core(支持 FP16/BF16)、稀疏矩阵加速,兼顾 AI 训练和高性能计算(HPC)。 |
Ada Lovelace | sm_89 (8.9) | RTX Ada 6000、RTX 4090 等 | 第四代 Tensor Core(支持 FP8 混合精度)、Ada 架构优化图形渲染(如光线追踪加速),同时兼容 CUDA 12.x 及新指令集,平衡 AI 与图形性能。 |
3. 计算能力的作用
(1)区分硬件特性
- 不同
sm_xx
对应不同的硬件功能,例如:sm_90
(Hopper)支持 FP8 精度计算,适合大模型训练的低精度加速;sm_80
(Ampere)首次支持 TF32 格式,简化 FP32 计算流程;sm_89
(Ada)支持 双并发矩阵运算,提升 Tensor Core 利用率。
(2)指导 CUDA 开发
开发者需根据 GPU 的计算能力编译 CUDA 代码,确保兼容性:
- 例如,使用 PyTorch/TensorFlow 时,框架会检查
sm_xx
以启用对应优化(如sm_90
支持更高效的混合精度训练)。 - 低计算能力的 GPU(如
sm_80
)无法运行依赖sm_90
特性的代码。
(3)性能定位
- 主版本号越高,架构越新(如
9.0 > 8.0
),通常代表更强的计算能力和更先进的技术(但次版本号可能因型号定位调整,如sm_89
是 Ada 架构的高端版本,高于同代低端型号的sm_86
)。
4. 常见误区与说明
- 非 SM 数量:这里的
sm_xx
不是流多处理器(SM)的数量,而是计算能力版本(前文提到的Number of SM
才是 SM 数量,如 H100 有 132 个 SM)。 - 同架构不同型号的次版本:
- Ada Lovelace 架构下,RTX 4090(
sm_89
)和 RTX 4060(可能为sm_86
)主版本均为 8,但次版本不同,反映硬件规格差异(如 SM 数量、显存带宽)。
- Ada Lovelace 架构下,RTX 4090(
- 历史版本示例:
- Volta 架构(V100):
sm_70
(7.0) - Pascal 架构(GTX 1080):
sm_61
(6.1)
- Volta 架构(V100):
165 (f32 accum)`和 330 (f16 accum)
165 (f32 accum)
和 330 (f16 accum)
分别表示 Tensor Core 在 FP32 累加和 FP16 累加时的峰值计算能力,反映了 GPU 在不同精度需求下的性能上限。前者适合高精度任务,后者适合追求速度的场景,是 NVIDIA 混合精度计算技术的核心体现。
在 GPU 规格中,165 (f32 accum)
和 330 (f16 accum)
描述的是 Tensor Core(张量核心)的峰值计算性能,具体含义如下:
1. 核心术语解析
(1)Tensor Core
NVIDIA GPU 中专门加速矩阵运算(如矩阵乘法 + 累加,GEMM)的硬件单元,主要用于深度学习中的卷积神经网络(CNN)和Transformer模型计算,可大幅提升训练/推理速度。
(2)f32 accum / f16 accum
f32
:32位浮点数(FP32,单精度浮点数)。f16
:16位浮点数(FP16,半精度浮点数)。accum
:累加器(Accumulator)的精度,即矩阵运算结果累加时使用的数据精度(不是输入数据的精度)。- Tensor Core 通常支持混合精度计算,例如输入可能是更低精度(如 FP16/BF16),但累加结果用更高精度(如 FP32)以减少误差。
2. 数值含义
以 RTX 4090 为例:
-
165 (f32 accum)
:
Tensor Core 在 累加结果为 FP32 精度时的峰值性能,即每秒钟可完成 165 万亿次矩阵乘法 + 累加运算(TFLops/s)。- 场景:当需要高精度计算(如科学计算、部分需要稳定性的训练任务)时使用。
-
330 (f16 accum)
:
Tensor Core 在 累加结果为 FP16 精度时的峰值性能,即每秒钟可完成 330 万亿次矩阵乘法 + 累加运算(TFLops/s)。- 场景:当允许较低精度以换取更高速度时使用(如深度学习中的混合精度训练,可加速计算并减少显存占用)。
3. 为什么会有两种累加精度?
(1)精度与速度的平衡
- FP32 累加:结果更精确(减少数值误差),但计算吞吐量较低(因为每次累加需要处理更多位)。
- FP16 累加:结果精度较低,但吞吐量更高(适合对精度不敏感的任务,如大部分深度学习训练/推理)。
(2)硬件设计特性
Tensor Core 支持 混合精度计算(如输入为 FP16,累加结果为 FP32),但部分 GPU(如消费级显卡)为了平衡性能与成本,会针对不同累加精度提供不同的峰值性能指标。
- 例如:RTX 4090 的 Tensor Core 输入可能支持 FP16,但累加器可配置为 FP16 或 FP32,前者吞吐量翻倍(330 vs 165)。
Tensor Cores和 Non-Tensor Cores
在NVIDIA GPU架构中,Tensor Cores 和 Non-Tensor Cores(即传统CUDA核心) 是两类不同的计算单元
- Tensor Cores:为矩阵运算而生,是深度学习和高性能计算的“加速器”,牺牲通用性换取极致特定场景性能;
- Non-Tensor Cores:通用计算主力,覆盖图形渲染、标量运算等广泛任务,但在矩阵运算上效率远低于Tensor Cores。
1. 架构设计与定位
-
Tensor Cores
- 专用加速核心:从Volta架构(如V100)开始引入,专为矩阵运算(尤其是深度学习中的矩阵乘法和累加操作,即GEMM:General Matrix Multiplication)设计的专用硬件单元。
- 优化目标:聚焦于加速神经网络中的关键运算(如卷积层、全连接层),大幅提升训练和推理效率。
-
Non-Tensor Cores(传统CUDA核心)
- 通用计算单元:即GPU中传统的浮点运算单元(FP32/FP64核心),负责处理通用计算任务(如标量运算、图形渲染、科学计算等),不针对特定矩阵运算优化。
- 定位:处理非矩阵相关的通用计算,或作为Tensor Cores的补充(如处理无法向量化的复杂逻辑)。
2. 核心功能与运算类型
-
Tensor Cores
- 核心操作:支持 矩阵乘累加(MMA),即一次运算完成 M × N + N × K = M × K M \times N + N \times K = M \times K M×N+N×K=M×K 的矩阵运算,并累加结果(Accumulate)。
- 数据类型支持:
- 主要支持 混合精度计算,例如:
- FP16矩阵乘法 + FP32累加(FP16 Accum);
- BF16矩阵乘法 + FP32累加(BF16 Accum,如Hopper架构);
- 部分架构也支持FP32矩阵运算(如H100的FP32 Tensor Core)。
- 主要支持 混合精度计算,例如:
- 性能优势:相同时间内,Tensor Cores的矩阵运算吞吐量远高于传统CUDA核心(例如H100的Tensor Core性能是其Non-Tensor Cores FP32性能的14倍以上)。
-
Non-Tensor Cores(传统CUDA核心)
- 核心操作:处理单个标量的浮点运算(FP32/FP64)或整数运算(INT32),例如加减乘除、三角函数等。
- 数据类型支持:主要支持FP32、FP64、INT32等通用数据类型,不支持专用的矩阵运算优化。
3. 应用场景
-
Tensor Cores
- 深度学习:加速训练(如PyTorch/TensorFlow的自动混合精度训练)和推理(如大模型推理加速);
- 科学计算:加速矩阵分解、线性代数运算(如cuBLAS库中的GEMM优化)。
-
Non-Tensor Cores
- 图形渲染:处理图形管线中的顶点着色、像素着色等通用计算;
- 通用计算:如加密、数据处理、非矩阵相关的科学计算(如FFT、微分方程求解);
- 控制逻辑:处理条件判断、分支逻辑等难以向量化的任务。
4. 性能对比(以H100为例)
指标 | Tensor Cores | Non-Tensor Cores (FP32) |
---|---|---|
峰值性能 | 989 TFLops (FP16 Accum) | 67 TFLops |
每运算能耗 | 极低(专用硬件优化) | 较高(通用计算) |
矩阵运算吞吐量 | 极高(单次处理64x64矩阵) | 低(需调用大量标量运算) |