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 拆分为两部分:
好处是在同一个时钟周期里,可以同时执行浮点和整数指令,进步计算速度。
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/
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |