GPU 性能的关键参数
-
CUDA 核心数量(个):决定了 GPU 并行处理能力,在 AI 等并行计算类业务下,CUDA 核心越多性能越好。
-
显存容量(GB):决定了 GPU 加载数据量的大小,在 AI 训练场景中,显存的大小决定了一次能够加载训练数据的量,在大模型训练时,显存容量很重要。
-
显存带宽(GB/s):是 GPU 芯片和显存之间的数据传输速率,作为决定性能最重要的因素之一,由显存频率和位宽决定。
-
显存位宽(bit):显存在一个时钟周期内所能传送数据的位数,位数越大则瞬间所能传输的数据量越大。
-
显存频率(MHz):反映了显存的速度。
-
-
浮点数算力(FLOPS):用来估算 GPU 的处理能力。
-
半精度(FP16):使用 2 个字节(16 位)进行存储。用于需要节省内存和加快计算速度的场景,如深度学习中的混合精度训练。在这些应用中,通过结合使用半精度和单精度浮点数,可以在保持模型精度的同时,减少内存占用和加快训练速度。
-
单精度(FP32):使用 4 个字节(32 位)进行存储。被广泛用于各种计算密集型应用,包括科学计算、图形渲染、深度学习等。在这些应用中,单精度浮点数提供了足够的精度和数值范围,以满足大多数计算需求。
-
双精度(FP64):使用 8 个字节(64 位)进行存储。用于需要高精度计算的场景,如复杂的科学模拟、计算化学、分子建模、流体动力学等。
-
NVIDIA GPU 系列型号分类
1. 消费级 GeForce 系列
-
RTX 50XX 系列(Blackwell)
-
RTX 40XX 系列(Ada Lovelace)
-
RTX 30XX 系列(Ampere)
-
RTX 20XX 系列(Turing)
-
GTX 16/10 系列(Turing/Pascal)
2. 专业工作站级
-
RTX A50XX 系列(Ada/Ampere)
-
RTX A60XX 系列(Ada/Ampere)
3. 数据中心级
-
Tesla H100 系列(Hopper)
-
Tesla A100 系列(Ampere)
-
Tesla L40 系列(Ada Lovelace)
NVIDIA GPU 架构发展简史
NVIDIA Tesla 系列服务器 GPGPU 用于大规模的分布式 AI 训练。
-
https://zh.wikipedia.org/wiki/NVIDIA_Tesla
2008 - Tesla(特斯拉)
Tesla 架构是 NVIDIA 第一个实现了统一着色器模型的芯片架构,具有完整的 Transform(坐标转换)、Lighting(光源处理)、Setup(三角形设置)和 Rendering(渲染引擎) 功能。针对 HPC 和 AI 场景,应用于早期的 CUDA 系列显卡中,但并非真正意义上的 GPGPU 芯片。
-
1 个 NVIDIA Tesla GPU 包含 7 个 TPC(Texture Processor Cluster,纹理处理集群)。
-
1 个 TPC 包含 2 个 SM(Stream Multi-processor,流多处理器)。
-
1 个 SM 包含:
-
6 个 SP(Streaming Processor,流处理器)。SP 是 GPU 最基本处理单元,指令和任务最终都是在 SP 上处理的。GPU 所谓的并行计算,也就是有很多个 SP 在同时进行计算。
-
2 个 SFU(Special Function Unit,特殊函数的计算单元)
-
1 个 I-Cache(指令缓存)
-
1 个 C-Cache(常量缓存)
-
1 个 MT Issue(多线程指令获取)
-
1 个 Shared Memory(共享内存)
-
-
1 个共享的 L1 Cache(一级缓存)
-
1 个共享的 Fetch/Dispatch(取指/分发)部件。
-
Load/Store Queues(访问存储单元),在 SM 和 Main Memory 之间快速传输数据;
-
Warp Scheduler(线程调度器),每个 Warp(线程束)包含了 32 个并行的 Threads,它们使用不同的数据执行相同的命令,Scheduler 会负责这些 Threads 的调度;
再细化每个 SP,包含了:
-
1 个共享的 Fetch/Decode(取指/译码)部件。
-
8 个 ALU(逻辑运算单元)。
-
4 组 Execution contexts(执行环境),可 Concurrent but interleaved(并发交叉)执行 4 条 Instruction Streams(指令流)。
-
每组 Execution contexts 有 8 个 Context,共计 32 个 Fragments(并发程序片元),即 32 个 CUDA threads。
2010 - Fermi(费米)
Fermi 是第一个真正意义上的 GPGPU 架构芯片,拥有 30 亿个晶体管,共计 512 个 CUDA core。并提高了以下关键特性:
-
提高 FP64 双精度性能
-
支持 ECC:ECC 支持在 DC 场景中安全地部署大量 GPU,并确保数据敏感型 Application 免受内存错误的影响。
-
True Cache Hierarchy:一些并行算法无法使用 GPU 的 SM(Share Memory),用户需要一个真正的缓存架构来帮助他们。
-
更多的共享内存:许多 CUDA 程序员要求超过 16 KB 的 SM 来加速他们的应用程序。
-
更快的上下文切换:用户要求在应用程序和更快的图形和计算互操作之间进行更快的上下文切换。
-
更快的 Atomic Operations(原子操作):用户要求为他们的并行算法提供更快的读-修改-写原子操作。
-
一个 Fermi GPU 拥有 16 个 SM。
-
每个 SM:
-
2 个 Warp(线程束)
-
2 组,共 32 个 CUDA Core
-
16 组加载存储单元(LD/ST)
-
4 个特殊函数单元(SFU)
-
-
每个 Warp:
-
1 个 Warp 调度器(Warp Scheduler)
-
16 个 Core
-
分发单元(Dispatch Unit)
-
-
每个 Core:
-
1 个 FPU(浮点数单元)
-
1 个 ALU(逻辑运算单元)
-
2012 - Kepler(开普勒)
Kepler 的架构设计思路是减少 SM 单元数(在这一代中叫 SMX 单元),增加每组 SM 单元中的 CUDA core 数,每个 SM 单元的 CUDA core 数由 Fermi 架构的 32 个增至 192 个。相较于 Fermi,Kepler 更快,效率更高,性能更好。
Kepler 将 SM 升级到了 SMX,支持动态创建渲染线程(下图),以降低 CPU 和 GPU 之间的数据传输延迟。
每个 SMX:
-
4 个 Warp Scheduler,8 个 Dispatch Unit。
-
绿色:192 个 CUDA 内核,分在 12 条 lane 上,每条分别是 16 个。
-
黄色:64 个 DP 双精度运算单元,分在 4 条 lane 上,每条 lane 上 16 个。
-
32 个 LD/ST Unit。
-
32 个 SFU。
2014 - Maxwell(麦克斯韦)
Maxwell 的 SM 单元和 Kepler 相比又有很大变化,这一代的 SM 单元更像是把 4 个 Fermi 的 SM 单元,按照 2x2 的方式排列在一起,这一代称之为 SMM 单元。
SMM 使用基于象限的设计,具有四个 32 CUDA core 的 Processing blocks(处理块),每个处理块都有一个专用的 Warp 调度程序,能够在每个时钟分派两条指令。
-
每个 Maxwell GPU 有 4 个 GPC,每个 GPC 有 4 个 SMM。
-
每个 SMM 单元:
-
八个纹理单元(texture units)。
-
一个多态引擎(Polymorph engine)的图形几何处理。
-
专用寄存器文件和共享内存。
-
每个处理块:
-
1 个 Warp Scheduler,2 个 Dispatch Unit。
-
绿色:32 个 CUDA core。
-
8个 LD/ST Unit。
-
8个 SFU。
2016 - Pascal(帕斯卡)
Pascal 将处理器和数据集成在同一个程序包内,以实现更高的计算效率。
Pascal 的 CUDA core 总数从 Maxwell 的每组 SM 单元 128 个减少到了每组 64 个,这一代最大的特点是又把 DP 双精度运算单元加回来了。制程工艺升级到了 16nm,性能大幅提升,功耗却不增加。1080 系列、1060 系列基于 Pascal 架构。
Pascal 拥有 GP100、GP102 两种大核心,核心是一个完整的 GPU 模组。
-
GP100:3840 个 CUDA core,60 组 SM 单元;
-
GP102:3584 个 CUDA core,28 组 SM 单元;
GP100 核心的 SM 单元:
-
每个 SM 单元中,分为 2 个 Process Block,每个 Process Block 中:
-
1 个 Warp Scheduler,2 个 Dispatch Unit。
-
绿色:32 个 CUDA core。
-
黄色:16 个 DP 双精度运算单元,分在 2 条 lane 上,每条 lane 上 8 个。
-
8 个 LD/ST Unit。
-
8 个 SFU。
-
2017 - Volta(伏特)
Volta 配备了 640 个 Tensor 核心,每秒可提供超过 100 兆次浮点运算(TFLOPS)的深度学习效能,用于深度学习、AI 运算等,比前一代的 Pascal 架构快 5 倍以上。
Tesla V100(Volta 架构)
-
CUDA 核心:5120 个
-
显存容量:16GB/32GB HBM2
-
显存带宽:900 GB/s
-
浮点算力:
-
FP32:约 15.7 TFLOPS
-
FP64:约 7.8 TFLOPS(双精度为单精度的一半)
-
-
价格:约 10,000 美元
从 Volta 开始,将一个 CUDA core 拆分为两部分:
-
FP32
-
INT32
好处是在同一个时钟周期里,可以同时执行浮点和整数指令,提高计算速度。
Volta 架构的 GV100 核心。每个 SM 单元中,分为 4 个 Process Block,每个 Process Block 中:
-
1 个 Warp Scheduler,1 个 Dispatch Unit。
-
8 个 FP64 Core。
-
16 个 INT32 Core。
-
16 个 FP32 Core。
-
2 个 Tensor Core。
-
8 个 LD/ST Unit。
-
4 个 SFU。
2018 - Turing(图灵)
Turing 架构配备了名为 RT Core 的专用光线追踪处理器,能够以高达每秒 10 Giga Rays 的速度对光线和声音在 3D 环境中的传播进行加速计算。
Turing 架构将实时光线追踪运算加速至上一代 NVIDIA Pascal™ 架构的 25 倍,并能以高出 CPU 30 多倍的速度进行电影效果的最终帧渲染。2060 系列、2080 系列显卡也是跳过了 Volta 直接选择了 Turing 架构。
Turing架构目前一共有 3 种核心:
-
TU102 核心
-
TU104 核心
-
TU106 核心
Turing 架构的 TU102 GPU,它的特点如下:
-
6 GPC(图形处理簇)
-
36 TPC(纹理处理簇)
-
72 SM(流多处理器)
-
每个 GPC 有 6 个 TPC,每个 TPC 有 2 个 SM
-
4,608 CUDA core
-
72 RT core
-
576 Tensor core
-
288 纹理单元
-
12x32 bit GDDR6 内存控制器(共 384 位)
TU102 核心的单个 SM 的结构图如下:
-
每个 SM 包含 4 个处理块,每个处理块中:
-
1 个 Warp Scheduler,1 个 Dispath Unit。
-
16 个 INT32 Core。
-
16 个 FP32 Core。
-
2 个 Tensor Core。
-
4 个 LD/ST Unit。
-
4 个 SFU。
-
256 KB 寄存器文件。
-
2020 - Ampere(安培)
2020 年 5 月 14 日,NVIDIA 发布了最新一代的 A100 GPU 产品(简称 GA100),采用 Ampere 架构。
Tesla A100(Ampere 架构)
-
CUDA 核心:6912 个
-
显存容量:40GB/80GB HBM2
-
显存带宽:1,555 GB/s(80GB 版本)
-
浮点算力:
-
FP32:约 19.5 TFLOPS
-
TF32(AI 优化):156 TFLOPS
-
-
价格:约 10,000 美元
下面我们通过 Ampere 架构为例,介绍 GPU 的组成部分。
Ampere 架构沿用了成熟的 GPC-TPC-SM 多级架构,包含了:
-
8 组 GPC(Graphics Processor Cluster,图形处理簇)。
-
每组 TPC 包含 8 组 SM(Stream Multiprocessor,流多处理器)。
-
每组 GPC 包含 8 组 TPC(Texture Processor Cluster,纹理处理簇)。
-
-
2 组 L2 Cache,避免计算单元访问远端 L2 Cache 时出现高延迟。每组 L2 Cache 为 40MB,在一定程度上减轻计算单元对显存带宽的依赖。
-
PCI Express 4.0
-
NVLink 3.0
再将 A100 核心的 SM 展开,可以看到 Ampere 的 SM 单元设计沿用了从 Volta 开始的分精度计算思路,将计算核心分成了:
-
针对整数计算的 INT32 单元
-
针对浮点计算的 FP32、FP64 单元
-
针对 FP16、INT8 等 AI 计算中常见的数据类型的 Tensor Cores
每个 SM 包含了:
-
1 个共享的 L1 Ins-Cache(一级指令缓存)
-
1 个共享的 L1 Data-Cache(一级数据缓存)
-
1 个共享的 Shared Memory(共享内存)
-
4 个子模块
其中 RT Cores 是游戏卡才有的,面对纯计算用途的 GA100 并不需要。
每个子模块包含了:
-
1 个 L0 I-Cache(指令缓存)
-
1 个 Warp Scheduler(线程调度器),每个 Warp(线程束)包含了 32 个并行的 Threads,它们使用不同的数据执行相同的命令,Scheduler 会负责这些 Threads 的调度。Warp Scheduler 的指令通过 Dispatch Units 发送到 Core 执行。
-
1 个 Dispatch Unit(取指/分发)部件。
-
1 个 Register File(寄存器文件)。
-
16 个针对浮点计算的 FP32 CUDA Core。
-
16 个针对整数计算的 INT32 CUDA Core。
-
8 个针对浮点计算的 FP64 CUDA Core。
-
1 个针对 FP16、INT8 等 AI 计算的 Tensor Core 3.0,几乎可以加速所有的常见数据类型,包括:FP16、BF16、TF32、FP64、INT8、INT4 和二进制。
-
8 个 LD/ST(Load/Store Queues,访问存储单元),在 SM 和 Main Memory 之间快速传输数据;
-
1 个 SFU(Special Function Unit,特殊函数的计算单元),执行特殊数学运算,例如:Sin、Cos、Log 等。
而 GA102 核心的 SM 单元,分成 4 个处理块,每个处理块中:
-
1 个 Warp Scheduler,1 个 Dispatch Unit。
-
8 个 FP64 Core。
-
16 个 FP32 Core。
-
16 个 INT32 Core。
-
1 个 Tensor Core。
-
8 个 LD/ST Unit。
-
4 个 SFU。
2022 - Hopper(霍珀)
Hopper 架构的 H100 GPU 是 NVIDIA 划时代的产品,其 CUDA 核心数量达到了惊人的 14,592~16,896 颗,转为 AI 大模型训练开发。
Tesla H100(Hopper 架构)
-
CUDA 核心:14,592~16,896
-
显存容量:80GB HBM3
-
显存带宽:3 TB/s(理论值)
-
浮点算力:
-
FP8(AI 优化):4,000 TFLOPS(稀疏模型)
-
-
价格:约 30,000 美元(含企业支持服务38)
-
应用:万亿参数语言模型训练、超大规模数据中心
H100 相对于 A100 有了质的飞跃。配备 InfiniBand interconnect 的 H100 的性能是 A100 的 30 倍。新的 NVLink 交换系统互连针对一些最大且最具挑战性的计算工作负载,这些工作负载需要跨多个 GPU 加速节点的模型并行性来适应。这些工作负载带来了新一代的性能飞跃,在某些情况下, InfiniBand 的性能比 H100 再次提高了三倍。
H100 架构详解推荐浏览官方文档:https://developer.nvidia.com/zh-cn/blog/nvidia-hopper-architecture-in-depth/