GPU 英伟达GPU架构回顾
1999 年,英伟达发明了 GPU(graphics processing unit),本节将介绍英伟达 GPU 从 Fermi 到 Blackwell 共 9 代架构,时间跨度从 2010 年至 2024 年,具体包括费米(Feimi)、开普勒(Kepler)、麦克斯韦(Maxwell)、帕斯卡(Pashcal)、伏特(Volt)、图灵(Turing)、安培(Ampere)和赫柏(Hopper)和布莱克韦尔(Blackwell)架构。经过 15 年的发展,CUDA 已成为英伟达的技术“护城河”,Tensor Core5.0,NVLink5.0,NVswitch4.0,Transformer Engine2.0 等技术迭代更新,正如英伟达公司官方宣传语所言:“人工智能计算领域的领导者,推动了 AI、HPC、游戏、创意设计、自动驾驶汽车和机器人开发领域的进步。”
架构名称 | 中文名字 | 发布时间 | 核心参数 | 特点&优势 | 纳米制程 | 代表型号 |
---|---|---|---|---|---|---|
Fermi | 费米 | 2010 | 16 个 SM,每个 SM 包含 32 个 CUDA Cores,一共 512 CUDA Cores | 首个完整 GPU 计算架构,支持与共享存储结合的 Cache 层次 GPU 架构,支持 ECC GPU 架构 | 40/28nm, 30 亿晶体管 | Quadro 7000 |
Kepler | 开普勒 | 2012 | 15 个 SMX,每个 SMX 包括 192 个 FP32+64 个 FP64 CUDA Cores | 游戏性能大幅提升,首次支持 GPU Direct 技术 | 28nm, 71 亿晶体管 | K80, K40M |
Maxwell | 麦克斯韦 | 2014 | 16 个 SM,每个 SM 包括 4 个处理块,每个处理块包括 32 个 CUDA Cores+8 个 LD/ST Unit + 8 SFU | 每组 SM 单元从 192 个减少到每组 128 个,每个 SMM 单元拥有更多逻辑控制电路 | 28nm, 80 亿晶体管 | M5000, M4000GTX 9XX 系列 |
Pascal | 帕斯卡 | 2016 | GP100 有 60 个 SM,每个 SM 包括 64 个 CUDA Cores,32 个 DP Cores | NVLink 第一代,双向互联带宽 160GB/s,P100 拥有 56 个 SM HBM | 16nm, 153 亿晶体管 | P100, P6000, TTX1080 |
Volta | 伏特 | 2017 | 80 个 SM,每个 SM 包括 32 个 FP64+64 Int32+64 FP32+8 个 Tensor Cores | NVLink2.0,Tensor Cores 第一代,支持 AI 运算,NVSwitch1.0 | 12nm, 211 亿晶体管 | V100, TiTan V |
Turing | 图灵 | 2018 | 102 核心 92 个 SM,SM 重新设计,每个 SM 包含 64 个 Int32+64 个 FP32+8 个 Tensor Cores | Tensor Core2.0,RT Core 第一代 | 12nm, 186 亿晶体管 | T4,2080TI, RTX 5000 |
Ampere | 安培 | 2020 | 108 个 SM,每个 SM 包含 64 个 FP32+64 个 INT32+32 个 FP64+4 个 Tensor Cores | Tensor Core3.0,RT Core2.0,NVLink3.0,结构稀疏性矩阵 MIG1.0 | 7nm, 283 亿晶体管 | A100, A30 系列 |
Hopper | 赫柏 | 2022 | 132 个 SM,每个 SM 包含 128 个 FP32+64 个 INT32+64 个 FP64+4 个 Tensor Cores | Tensor Core4.0,NVLink4.0,结构稀疏性矩阵 MIG2.0 | 4nm, 800 亿晶体管 | H100 |
Blackwell | 布莱克韦尔 | 2024 | - | Tensor Core5.0,NVLink5.0, 第二代 Transformer 引擎,支持 RAS | 4NP, 2080 亿晶体管 | B200 |
Fermi 架构
2006 年英伟达提出 G80 架构,使开发者可以基于 C 语言在 GPU 上进行开发。2008 年基于 G80 架构提出 GT200,增加了流处理器核的数量,更高的精度和并行能力使 GPU 进行科学计算和高性能计算成为可能。
2010 年英伟达提出 Feimi 架构,最大可支持 16 个 SMs,每个 SM 有 32 个 CUDA Core,一共 512 个 CUDA Core,架构设计主要是以当时游戏用户的需求为主,因此整个 GPU 有多个 GPC(图形处理簇),单个 GPC 包含一个光栅引擎(Raster Engine)和 4 个 SM。
GPU 拥有 6 个 64 位内存分区,总共是 384 位内存,最多支持 6 GB GDDR5 DRAM 内存。主机接口通过 PCI-Express 连接 GPU 和 CPU。GigaThread 全局调度器将线程块分配给 SM 线程调度器。因为计算核心较多,因此将 L2 Cache 放在处理器中间位置,使得数据可以在 CUDA Core 之间快速传输。
恩里科·费米(Enrico Fermi)是意大利裔美国物理学家,20 世纪最重要的物理学家之一,被誉为“原子能时代之父”。他在核物理、量子力学和统计力学等领域做出了重要贡献。主要成就包括:
提出费米子统计,即著名的费米-狄拉克统计,描述了半整数自旋的粒子的统计性质。
领导了芝加哥大学的“费米堆”课程,成功实现了世界上第一座自持核链反应堆。
参与了曼哈顿计划,对原子弹的研发做出了重要贡献。
获得了 1938 年的诺贝尔物理学奖,以表彰他在人类利用新的放射性同位素所作出的贡献。
Fermi 架构采用第三代流处理器,每个 SM 有 16 个加载/存储单元(Load/Store, LD/ST),允许为每个时钟 16 个线程计算源地址和目标地址,支持将每个地址的数据加载并存储到缓存或 DRAM 中。特殊功能单元(Special Function Unit, SFU)执行超越函数,如 sin、cos、导数和平方根。每个 SFU 在每个线程、每个时钟执行一条指令,一次 warp(由 32 个线程组成的线程组)要经过 8 个时钟周期。SFU 管线与调度单元解耦,允许调度单元在占用 SFU 时向其他执行单元发出命令。双精度算法是高性能计算应用的核心,每个 SM、每个时钟可执行多达 16 个双精度融合乘加运算。
每个 SM 有两个 warp 调度器和两个指令调度单元,允许同时发出和执行两个 warp。并行计算主要在 CUDA 中进行处理,每个 CUDA 处理器都有一个完整的流水线整数算术逻辑单元(ALU)和浮点单元(FPU),可以选择 FP 32 或者 INT 8 执行计算,但是 FP Unit 和 INT Unit 的执行不是并行的。
Fermi 架构支持新的并行线程执行 PTX 2.0(Parallel Thread Execution)指令集架构。一个 CUDA 程序被称作并行的 Kernel,线程分为三级,包含线程(Threads)、块(Blocks)和网格(Grid),每个层次结构对应硬件,Thread 可以共享局部内存(Local memory),线程块使用共享内存(Shared Memory),Grid 共享全局内存(Global Memory),具有相应的每个线程专用、每个块共享和每个应用程序全局内存空间。
Kepler 架构
2012 年英伟达提出 Kepler 架构,由 7.1 亿个晶体管组成的 Kepler GK110 将提供超过 1 TFlop 的双精度吞吐量,采用台积电 28 nm 制程,每瓦的性能是费米架构的 3 倍。由 15 个 SMX 单元和 6 个 64 bit 内存控制器,内存子系统提供额外的缓存功能,在每个层次结构的存储器有更大的带宽,实现更快的 DRAM I/O,同时为编程模型提供硬件支持。
约翰内斯·开普勒(Johannes Kepler)是一位德国天文学家、数学家和占星术士,被誉为现代天文学的奠基人之一。他生活在 16 世纪末至 17 世纪初,是科学革命时期的重要人物,他的工作对天文学和物理学领域产生了深远的影响,为后来伽利略和牛顿等科学家的研究奠定了基础。主要成就包括:
- 提出了行星运动的三大定律,即开普勒定律:
第一定律:行星绕太阳运行的轨道是椭圆形的,太阳位于椭圆的一个焦点上。
第二定律:行星在其轨道上的矢量面积与时间的比率是常数。
第三定律:行星轨道的半长轴与公转周期的平方成正比。
通过观测和分析提出了行星运动的椭圆轨道理论,颠覆了当时的圆周运动观念。
对光学、天文学和数学领域都做出了重要贡献,为日后牛顿的引力理论奠定了基础。
开普勒架构相比上一代 Fermi 架构,SM(Streaming Multiprocessor)更名为 SMX,但是本身的概念没有改变,每个 SMX 具有四个 warp 调度器和八个指令调度单元,允许同时发出和执行四个 warp。Fermi 架构共有 32 核,Kepler 架构拥有 192 核,大大提升了 GPU 并行处理的能力。Fermi 支持最大线程数是 1536,Kepler 最大线程数达到 2048。64 个双精度(Double-Precision,DP)单元,32 特殊功能单元(SFU)和 32 个 LD/ST(load/store)单元,满足高性能计算场景的实际需求。
Kepler 架构支持动态并行(Dynnamic Parallelism),在不需要 CPU 支持的情况下自动同步,在程序执行过程中灵活动态地提供并行数量和形式。Hyper-Q 使多个 CPU 核使用单个 GPU 执行工作,提高 GPU 利用率并显着减少 CPU 空闲时间,允许 32 个同时进行的硬件管理连接,允许从多个 CUDA 流处理,多个消息传递进程中分离出单个进程。使用网格管理单元(Grid Management Unit,GMU)启用动态并行和调度控制,比如挂起或暂停网格和队列直到执行的环境准备好。
英伟达 GPUDirect 可以使单个计算机内的 GPU 或位于网络上不同服务器中的 GPU 直接交换数据,而无需转到 CPU 系统内存,RDMA 特性允许第三方设备直接访问同一系统内多个 GPU 上的内存,减少了对系统内存带宽的需求,释放 GPU DMA 引擎供其它 CUDA 任务使用。
Maxwell 架构
2014 年英伟达提出 Maxwell 架构,麦克斯韦架构相比上一代架构没有太大改进,其中 SM 又使用了原来的名称,整体的核心个数变为 128 个,因为核心数不需要太多,可以通过超配线程数来提升 GPU 并行计算的能力。
SMM 使用基于象限的设计,其中每个 SMM 有四个共 32 核处理块,每个处理块都有一个专用的 warp 调度器,能够在每个时钟调度两条指令。每个 SMM 提供 8 个纹理单元,一个图形的几何处理引擎,以及专用的寄存器文件(Register File)和共享内存(Shared Memory)。单核性能是 Kepler 架构的 1.35 倍,performance/watt(性能与功耗的比率)是 Kepler 架构的两倍,在相同功耗下能够提供更高的性能。
詹姆斯·克拉克·麦克斯韦(James Clerk Maxwell)是 19 世纪苏格兰物理学家,被誉为电磁理论之父。他在电磁学和热力学领域做出了重要贡献,开创了现代物理学的新时代。主要成就包括:
提出了麦克斯韦方程组,总结了电磁场的基本规律,揭示了电磁波的存在,并将电磁学和光学统一起来。
发展了统计力学,提出了分子速度分布的麦克斯韦-玻尔兹曼分布定律,为热力学的发展做出了重要贡献。
提出了色散理论,解释了光的色散现象,为光学研究提供了新的理论基础。
预言了电磁波的存在,并在后来的实验证实了这一理论,为无线电通信的发展奠定了基础。
对比 Kepler 和 Maxwell 架构,Maxwell 架构拥有更大的专用共享内存,通过将共享内存与 L1 缓存分离,在每个 SMM 中提供专用的 64KB 共享内存,GM204 Maxwell 每个 SMM 的专用共享内存提高到 96KB。和 Kepler 和 Fermi 架构一样,每个线程块的最大共享内存仍然是 48KB。GM204 Maxwell 具有更大的二级缓存(L2 Cache),GK104 Kepler 的四倍,带宽受限的应用程序可以获得更大的性能优势。每个 SM 有更多活动线程块(Thread Blocks),从 16 增加到 32 有助于提高运行在小线程块上的内核使用率。可以对 32 位整数的本机共享内存进行原子操作,使线程块上的列表和栈类型数据更高效,和 Kepler 一样支持动态并行。
GPU GeForce | GTX 680 (Kepler GK104) | GTX 980 (Maxwell GM204) |
---|---|---|
CUDA Cores | 1536 | 2048 |
Base Clock | 1006 MHz | 1126 MHz |
GPU Boost Clock | 1058 MHz | 1216 MHz |
GFLOPs | 3090 | 4612 |
Compute Capability | 3.0 | 5.2 |
SMs | 8 | 16 |
Shared Memory / SM | 48KB | 96KB |
Register File Size / SM | 256KB | 256KB |
Active Blocks / SM | 16 | 32 |
Texture Units | 128 | 128 |
Texel fill-rate | 128.8 Gigatexels/s | 144.1 Gigatexels/s |
Memory | 2048 MB | 4096 MB |
Memory Clock | 6008 MHz | 7010 MHz |
Memory Bandwidth | 192.3 GB/sec | 224.3 GB/sec |
ROPs | 32 | 64 |
L2 Cache Size | 512 KB | 2048 KB |
TDP | 195 Watts | 165 Watts |
Transistors | 3.54 billion | 5.2 billion |
Die Size | 294 mm² | 398 mm² |
Manufacturing Process | 28-nm | 28 nm |
Pascal 架构
2016 年英伟达提出 Pascal 架构,相比之前的架构,Pascal 帕斯卡架构在应用场景、内存带宽和制程工艺等多个方面做出了创新。将系统内存 GDDR5 换成 HBM2,能够在更高的带宽下处理更大的工作数据集,提高效率和计算吞吐量,并减少从系统内存传输的频率,而且 HBM2 原生支持数据纠错(Error correcting Code, ECC)。采用 16nm FinFET 工艺,拥有 15.3 亿个晶体管,相同功耗下算力提升提升一个数量级。同时提出第一代 NVLink,提升单机卡间通信之外扩展多机之间的带宽。支持统一内存,允许在 GPU 和 CPU 的完整虚拟地址空间之间透明迁移数据,降低了并行编程的门槛。支持计算抢占和针对 Pascal 架构优化的 AI 算法,可应用于高性能计算、深度学习和 GPU 计算密集型领域。
GP100 Pascal 由图形处理集群(GPCs)、纹理处理集群(TPCs)、流式多处理器(SMs)和内存控制器组成。一个完整的 GP100 由 6 个 GPCs、60 个 Pascal SMs、30 个 TPCs(每个都包括 2 个 SMs)和 8 个 512 位内存控制器(总共 4096 位)组成。每个 GPC 都有 10 个 SMs,每个 SM 有 64 个 CUDA 核和 4 个纹理单元,拥有 60 个 SMs,共有 3840 个单精度 CUDA Cores 和 240 个纹理单元。每个内存控制器都连接到 512 KB 的 L2 高速缓存上,每个 HBM2 DRAM 都由一对内存控制器控制,总共包含 4096 KB L2 高速缓存。
Pascal 架构在 SM 内部作了进一步精简,整体思路是 SM 内部包含的硬件单元类别减少,因为芯片制程工艺的进步,SM 数量每一代都在增加。单个 SM 只有 64 个 FP32 CUDA Cores,相比 Maxwell 的 128 核和 Kepler 的 192 核,数量少了很多,并且 64 个 CUDA Cores 分为了两个区块,每个处理块有 32 个单精度 CUDA Cores、一个指令缓冲区、一个 Warp 调度器和两个调度单元(Dispatch Unit)。分成两个区块之后,Register File 保持相同大小,每个线程可以使用更多的寄存器,单个 SM 可以并发更多的 thread/warp/block,进一步增加并行处理能力。
增加 32 个 FP64 CUDA Cores(DP Unit),FP32 CUDA Core 具备处理 FP16 的能力。此外,每个 SM 具有 32 个双精度(FP64)CUDA Cores,使得 GPU 更有效地处理双精度计算任务。与精度更高的 FP32 或 FP64 相比,存储 FP16 数据可以减少神经网络的内存使用,从而允许训练和部署更大的网络。为加速深度学习支持 FP16,与 FP32 相比可以提高 2 倍性能,同时数据传输需要的时间更少。
布莱斯·帕斯卡(Blaise Pascal)是 17 世纪法国数学家、物理学家、哲学家和神学家,视为文艺复兴时期最重要的思想家之一。他在多个领域都有重要的贡献,被认为是现代概率论和流体力学的奠基人之一。主要成就包括:
发明了帕斯卡三角形,这是一个数学工具,被广泛用于组合数学和概率论中。
提出了帕斯卡定律,描述了液体在容器中的压力传递规律,对流体力学的发展产生了重要影响。
发展了概率论,提出了帕斯卡概率论,为后来的概率统计学奠定了基础。
在哲学和神学领域,他提出了帕斯卡赌注,探讨了信仰与理性的关系,对基督教神学产生了深远的影响。
由于多机之间采用 InfiniBand 和 100 GB Ethernet 通信,单个机器内单 GPU 到单机 8 GPU,PCIe 带宽成为瓶颈,因此 Pascal 架构首次提出 NVLink,针对多 GPU 和 GPU-to-CPU 实现高带宽连接。NVLink 用以单机内多 GPU 内的点对点通信,带宽达到 160 GB/s,大约是 PCIe 3x16 的 5 倍,减少数据传输的延迟,避免大量数据通过 PCIe 回传到 CPU 的内存中,导致数据重复搬运,实现 GPU 整个网络的拓扑互联。在实际训练大模型的过程中,带宽会成为分布式训练系统的主要瓶颈,从而使得 NVLink 成为一项具有重要意义的创新。
Volta 架构
2017 年英伟达提出 Volta 架构,GV100 GPU 有 21.1 亿个晶体管,使用 TSMC 12 nm 工艺。伏特架构做了以下创新:
(1)CUDA Core 拆分,分离 FPU 和 ALU,取消 CUDA Core 整体的硬件概念,一条指令可以同时执行不同计算,同时对 CUDA 应用程序并行线程更进一步,提高了 CUDA 平台的灵活性、生产力和可移植性;
(2)提出独立线程调度,改进单指令多线程 SIMT 模型架构,使得每个线程都有独立的 PC(Program Counter)和 Stack,程序中并行线程之间更细粒度的同步和协作;
(3)专门为深度学习优化了 SM 架构,针对 AI 计算首次提出第一代张量核心 Tersor Core,提高深度学习计算中卷积运算进行加速;
(4)对 NVLink 进行改进,提出第二代 NVLink,一个 GPU 可以连接 6 个 NVLink,而不是 Pascal 时代的 4 个,16 GB HBM2 内存子系统提供了 900GB/秒的峰值内存带宽;
(5)提出 MPS 概念,在多个应用程序单独未充分利用 GPU 执行资源时,允许多个应用程序同时共享 GPU 执行资源,使得多进程服务可以更好的适配到云厂商进行多用户租赁,客户端数量从 Pascal 上的 16 个增加到 Volta 上的 48 个,支持多个单独的推理任务并发地提交给 GPU,提高 GPU 的总体利用率;
(6)结合 Volta 架构新特性优化 GPU 加速库版本,如 cuDNN、cuBLAS 和 TensorRT,为深度学习推理和高性能计算(HPC)应用程序提供更高的性能。英伟达 CUDA 9.0 版本提供了新的 API 支持 Volta 特性,更简单的可编程性。英伟达 TensorRT 是一款用于高性能深度学习推理的 SDK,包含深度学习推理优化器和运行时,可为推理应用程序提供低延迟和高吞吐量。
亚历山大·伏特(Alessandro Volta)是 18 世纪意大利物理学家,被誉为电池之父。他是电学领域的先驱之一,发明了第一种真正意义上的化学电池,被称为伏特电池,为电化学和现代电池技术的发展奠定了基础。主要成就包括:
发明了伏特电堆,这是由多个铜和锌片交替堆叠而成的装置,能够产生持续的电流,是第一个实用的化学电池。
提出了静电感应理论,探讨了静电现象的本质,对电学理论的发展产生了重要影响。
研究了气体的电学性质,发现了甲烷和氧气的反应可以产生火花,为后来的火花塞技术和火花点火系统的发展做出了贡献。
与上一代 Pascal GP100 GPU 一样,GV100 GPU 有 6 个 GPU 处理集群(GPCs),每个 GPC 有 7 个纹理处理集群(TPCs)、14 个流式多处理器(SMs),以及内存控制器。
Volta 伏特架构 SM 结构相比前几代架构,SM 的数目明显增多,SM 被划分为四个处理块,单个 SM 中包含 4 个 Warp Schedule,4 个 Dispatch Unit,64 个 FP32 Core(416),64 个 INT32 Core(416),32 个 FP64 Core(48),8 个 Tensor Core(42),32 个 LD/ST Unit(4*8),4 个 SFU,FP32 和 INT32 两组运算单元独立出现在流水线中,每个 Cycle 都可以同时执行 FP32 和 INT32 指令,因此每个时钟周期可以执行的计算量更大。Volt 架构新增了混合精度张量核心(Tensor Core)以及高性能 L1 数据缓存和新的 SIMT 线程模型。单个 SM 通过共享内存和 L1 资源的合并,相比 GP100 64 KB 的共享内存容量,Volta 架构增加到 96KB。
新的张量核心使 Volta 架构得以训练大型神经网络,GPU 并行模式可以实现深度学习功能的通用计算,最常见卷积/矩阵乘(Conv/GEMM)操作,依旧被编码成融合乘加运算 FMA(Fused Multiply Add),硬件层面还是需要把数据按照:寄存器-ALU-寄存器-ALU-寄存器方式来回来回搬运数据,因此专门设计 Tensor Core 实现矩阵乘计算。
英伟达计算硬件模型从 SIMT 发展成为了 SIMT+DSA 的混合,每个张量核心单时钟周期内执行 64 个浮点 FMA 操作,而 SM 中的 8 个张量核心单时钟周期总共执行 512 个 FMA 操作(或 1024 个单独的浮点操作)。每个张量核心在一个 4x4 矩阵上操作,并执行计算:D=A×B+CD=A×B+C,输入 A 和 B 矩阵是 FP16,而计算结果矩阵 C 和 D 可以是 FP16 或 FP32 矩阵,极大地减少了系统内存的开销,一个时钟周期内可以执行更多的矩阵运算,使得 GPU 在能耗上更有优势。CUDA 9 C++ API 有专门的矩阵乘和存储操作,有效地使用 CUDA-C++程序中的张量核心,同时 cuBLAS 和 cuDNN 库利用张量核进行深度学习研究。
英伟达伏特架构的 GPU 以 Tesla V100 Powered DGX Station 的形式对外出售工作站。此时不再使用 PCIe 连接 GPU,而是将多个 GPU 直接封装在同一块主板上,第二代 NVLink 每个连接提供双向各自 25 GB/s 的带宽,并且一个 GPU 可以接 6 个 NVLink,专门用于 GPU-GPU 通信,同时允许从 CPU 直接加载/存储/原子访问到每个 GPU 的 HBM2 内存。
此外,NVSwitch1.0 技术是 Volta 架构中的一项重要创新,旨在提高 GPU 之间的通信效率和性能。NVSwitch1.0 可以支持多达 16 个 GPU 之间的通信,可以实现 GPU 之间的高速数据传输,提高系统的整体性能和效率,适用于需要大规模并行计算的场景,比如人工智能训练和科学计算等领域。
英伟达 Tesla V100 将深度学习的新架构特性与 GPU 计算性能相结合,提供了更高的神经网络训练和推理性能。NVLink 使多 GPU 系统提供了性能可伸缩性,同时 CUDA 编程的灵活性允许新算法快速开发和部署,满足了人工智能、深度学习系统和算法的训练和推断的持续需求。
Turing 架构
2018 年 Turing 图灵架构发布,采用 TSMC 12 nm 工艺,总共 18.6 亿个晶体管。在 PC 游戏、专业图形应用程序和深度学习推理方面,效率和性能都取得了重大进步。相比上一代 Volta 架构主要更新了 Tensor Core(专门为执行张量/矩阵操作而设计的专门执行单元,深度学习计算核心)、CUDA 和 CuDNN 库的不断改进,更好地应用于深度学习推理。RT Core(Ray Tracing Core)提供实时的光线跟踪渲染,包括具有物理上精确的投影、反射和折射,更逼真的渲染物体和环境。支持 GDDR6 内存,与 GDDR5 内存相比,拥有 14 Gbps 传输速率,实现了 20%的的效率提升。NVLink2.0 支持 100 GB/s 双向带宽,使特定的工作负载能够有效地跨两个 GPU 进行分割并共享内存。
TU102 GPU 包括 6 个图形处理集群(GPCs)、36 个纹理处理集群(TPCs)和 72 个流式多处理器(SMs)。每个 GPC 包括一个专用光栅引擎和 6 个 TPC,每个 TPC 包括两个 SMs。每个 SM 包含 64 个 CUDA 核心、8 个张量核心、一个 256 KB 的寄存器文件、4 个纹理单元和 96 KB 的 L1/共享内存,这些内存可以根据计算或图形工作负载配置为不同的容量。因此总共有 4608 个 CUDA 核心、72 个 RT 核心、576 个张量核心、288 纹理单元和 12 个 32 位 GDDR6 内存控制器(总共 384 位)。
艾伦·图灵(Alan Turing)是 20 世纪英国数学家、逻辑学家和密码学家,被誉为计算机科学之父。他在计算理论和人工智能领域做出了开创性的工作,对现代计算机科学的发展产生了深远影响。主要成就包括:
发展了图灵机概念,这是一种抽象的数学模型,被认为是计算机的理论基础,为计算机科学奠定了基础。
在第二次世界大战期间,他领导了英国破解德国恩尼格玛密码的团队,对盟军在战争中的胜利做出了重要贡献。
提出了图灵测试,用来衡量机器是否具有智能,为人工智能领域的发展提供了重要思想。
在逻辑学领域,他提出了图灵判定问题,对计算机可解性和不可解性做出了重要贡献。
随着神经网络模型的量化部署逐渐成熟,Turing 架构中的 Tensor Core(张量核心)增加了对 INT8/INT4/Binary 的支持,加速神经网络训练和推理函数的矩阵乘法核心。一个 TU102 GPU 包含 576 个张量核心,每个张量核心可以使用 FP16 输入在每个时钟执行多达 64 个浮点融合乘法加法(FMA)操作。SM 中 8 个张量核心在每个时钟中总共执行 512 次 FP16 的乘法和累积运算,或者在每个时钟执行 1024 次 FP 运算,新的 INT8 精度模式以两倍的速率工作,即每个时钟进行 2048 个整数运算。Tensor Core 用于加速基于 AI 的英伟达 NGX 功能,增强图形、渲染和其它类型的客户端应用程序,包括 DLSS(深度学习超级采样)、 AI 绘画、AI Super Rez(图像/视频超分辨率)和 AI Slow-Mo(视频流插帧)。
每个 SMs 分别有 64 个 FP32 核和 64 个 INT32 核,还包括 8 个混合精度的张量核(Tensor Core),每个 SM 被分为四个块,每个块包括一个新的 L0 指令缓存和一个 64 KB 的寄存器文件。四个块共享一个 96 KB L1 数据缓存/共享内存。传统的图形工作负载将 96 KB 的 L1/共享内存划分为 64 KB 的专用图形着色器 RAM 和 32 KB 的用于纹理缓存和寄存器文件溢出区域。计算工作负载可以将 96 KB 划分为 32 KB 共享内存和 64 KB L1 缓存,或者 64 KB 共享内存和 32 KB L1 缓存。
RT Core 主要用于三角形与光线求交点,并通过 BVH(Bounding Volume Hierarchy)结构加速三角形的遍历,由于布置在 block 之外,相对于普通 ALU 计算来说是异步的,包括两个部分,一部分检测碰撞盒来剔除面片,另一部分做真正的相交测试。RT Core 的使用,使 SM 在很大程度上可以用来做图形计算之外的工作。
Bounding Volume Hierarchy(BVH)结构
光线追踪(Ray Tracing)中的 Bounding Volume Hierarchy(BVH)结构是一种用于加速光线追踪算法的数据结构。BVH 通过将场景中的物体分层组织成包围盒(Bounding Volume)的层次结构,从而减少光线与物体的相交测试次数,提高光线追踪的效率。
在 BVH 结构中,每个节点都代表一个包围盒,该包围盒可以包含多个物体或其他子包围盒。通过递归地构建 BVH 树,可以将场景中的物体分层组织成一个高效的数据结构,以便快速地确定光线与哪些物体相交,从而减少需要测试的物体数量,提高光线追踪的效率。
当增加 RT Core 之后实现硬件光线追踪,当 RTX 光线追踪技术打开时场景中人物和光线更加逼真,火焰可以在车身上清晰的看到。虽然光线追踪可以产生比栅格化更真实的图像,但是计算密集型使得混合渲染是更优的技术路线,光线追踪用在比栅格化更有效的地方,如渲染反射、折射和阴影。光线追踪可以运行在单个 Quadro RTX 6000 或 GeForce RTX 2080 Ti GPU 上,渲染质量几乎等同于电影实拍效果。
除了为高端游戏和专业图形带来革命性的新功能外,Turing 还提供了多精度计算,随着英伟达深度学习平台的持续推进,如 TensorRT 5.0 和 CUDA 10 技术的进步,基于英伟达 GPU 的推理解决方案显著降低了数据中心的成本、规模和功耗。
Ampere 架构
2020 年 Ampere 安培架构发布,Ampere 架构主要有以下特性:
1)超过 540 亿个晶体管,使其成为 2020 年世界上最大的 7 nm 处理器(英伟达 A100);
2)提出 Tensor Core3.0,新增 TF32(TensorFloat-32)包括针对 AI 的扩展,可使 FP32 精度的 AI 性能提高 20 倍;
3)多实例 GPU(Multi-Instance GPU,MIG)将单个 A100 GPU 划分为多达 7 个独立的 GPU,为不同任务提供不同算力,为云服务器厂商提供更好的算力切分方案;
4)提出 NVLink3.0 和 NV-Switch,NV-Switch 可以将多台机器进行互联,将 GPU 高速连接的速度加倍,可在服务器中提供有效的性能扩展;
5)利用 AI 数学计算中固有的稀疏特性将性能提升一倍。以上改进使 Ampere 成为新一代数据中心和云计算 GPU 架构,可用于 AI 和高性能计算场景。
安德烈-玛丽·安培(André-Marie Ampère)是 19 世纪法国物理学家和数学家,被誉为电磁学之父。他对电流和磁场之间的相互作用进行了深入研究,提出了安培定律,对电磁理论的发展做出了重要贡献。主要成就包括:
提出了安培定律,描述了电流元素之间的相互作用,为电磁感应和电磁场的研究奠定了基础。
发展了电动力学理论,将电流和磁场的关系系统化,并提出了电流环的磁场理论。
研究了电磁感应现象,揭示了磁场和电场之间的关系,为后来法拉第的电磁感应定律的提出奠定了基础。
对电磁学和热力学等领域都有重要贡献,被认为是 19 世纪最杰出的物理学家之一。
英伟达 A100 GPU 包括 8 个 GPC,每个 GPC 包含 8 个 TPC,每个 TPC 包含 2S 个 SMs/,每个 GPC 包含 16 个 SM/GPC,整个 GPU 拥有 128 个 SMs。每个 SM 有 64 个 FP32 CUDA 核心,总共 8192 FP32 CUDA 核心。Tensor Core3.0,总共 512 个。6 个 HBM2 存储栈,12 个 512 位内存控制器,内存可达到 40 GB。第三代 NVLink,GPU 和服务器双向带宽为 4.8 TB/s,GPU 之间的互联速度为 600 GB/s。A100 SM 拥有 192 KB 共享内存和 L1 数据缓存,比 V100 SM 大 1.5 倍。
A100 Tensor Core3.0 增强操作数共享并提高计算效率,引入了 TF32、BF16 和 FP64 数据类型的支持。平时训练模型的过程中使用更多的是 FP32 和 FP16,TF32 在指数位有 8 位,FP16 在指数为有 5 位,因此 FP32 的位宽比 FP16 更多,小数位决定精度,FP32 在小数位有 23 位,FP16 只有 10 位,在 AI 训练的过程中很多时候 FP16 是够用的,但是动态范围会有限制,因此提出 TF32,指数位保持和 FP32 相同,小数位和 FP16 保持相同,BF16 的指数位和 FP32、TF32 相同,但是小数位少了三位。数百个张量核并行运行,大幅提高吞吐量和计算效率。
A100 FP32 FFMA,INT8、INT4 和 Binary 分别提高了 32x、64x 和 256x,与 Volta 架构一样,自动混合精度(AMP)允许用户使用与 FP16 相结合的混合精度来进行 AI 训练,使用 AMP 之后 A100 提供了比 TF32 快 2 倍的张量核心性能。
Tensor Core 除了执行乘法和加法操作之外还可以支持稀疏化结构矩阵(Sparse Tensor),实现细粒度的结构化稀疏,支持一个 2:4 的结构化稀疏矩阵与另一个稠密矩阵直接相乘。一种常见的方法是利用稀疏矩阵的结构特点,只对非零元素进行计算,从而减少计算量。一个训练得到的稠密矩阵在推理阶段经过剪枝之后会变成一个稀疏化矩阵,然后英伟达架构对矩阵进行压缩后变成一个稠密的数据矩阵和一个 indices,索引压缩过的数据方便检索记录,最后进行矩阵乘。
A100 张量核心 GPU 可以被分为 7 个 GPU 实例并被不同任务使用,每个实例的处理器在整个内存系统中都有单独且相互隔离的路径,片上交叉端口、L2 缓存、内存控制器和 DRAM 地址总线都被唯一地分配给一个单独的实例,确保单个用户的工作负载可以在可预测的吞吐量和延迟下运行,同时具有相同的 L2 缓存分配和 DRAM 带宽,即使其他任务正在读写缓存或 DRAM 接口。用户可以将这些虚拟 GPU 实例当成真的 GPU 进行使用,为云计算厂商提供算力切分和多用户租赁服务。
DGX A100 是英伟达专门构建的第三代 AI 系统,在单个系统中可以提供 5 PFLOPS(petaflop)性能,通过一种新的基础设施结构,彻底改变了企业数据中心,旨在将所有 AI 工作负载统一在一个新的通用平台和架构上。A100 以整机的形式出售,最上面是散热器,中间的 A100 芯片不再通过 PCIe 进行连接,而是直接封装在主板上,这样便于在同一个节点上进行模型并行,但是跨节点跨机器之间训练大模型时带宽就会成为整个大模型训练的瓶颈。内存高达 1TB 或者 2TB,可以直接将数据全部加载到 CPU 里面,然后再不断回传到 GPU 中,加速大模型训练。
Hopper 架构
2022 年 Hopper 赫柏架构发布,英伟达 Grace Hopper Superchip 架构将英伟达 Hopper GPU 的突破性性能与英伟达 Grace CPU 的多功能性结合在一起,在单个超级芯片中与高带宽和内存一致的英伟达 NVLink Chip-2-Chip(C2C)互连,并且支持新的英伟达 NVLink 切换系统,CPU 和 GPU、GPU 和 GPU 之间通过 NVLink 进行连接,数据的传输速率高达 900 GB/s,解决了 CPU 和 GPU 之间数据的时延问题,跨机之间通过 PCIe5 进行连接。
Hopper 架构是第一个真正的异构加速平台,适用于高性能计算(HPC)和 AI 工作负载。英伟达 Grace CPU 和英伟达 Hopper GPU 实现英伟达 NVLink-C2C 互连,高达 900 GB/s 的总带宽的同时支持 CPU 内存寻址为 GPU 内存。NVLink4.0 连接多达 256 个英伟达 Grace Hopper 超级芯片,最高可达 150 TB 的 GPU 可寻址内存。
H100 | 参数 |
---|---|
NVIDIA Grace CPU | 72 个 Arm Neoverse V2 内核,每个内核 Armv9.0-A ISA 和 4 个 128 位 SIMD 单元 |
512 GB LPDDR5X 内存,提供高达 546 GB/s 的内存带宽 | |
117MB 的 L3 缓存,内存带宽高达 3.2 TB/s | |
64 个 PCIe Gen5 通道 | |
NVIDIA Hopper GPU | 144 个第四代 Tensor Core、Transformer Engine、DPX 和 3 倍高 FP32 的 FP64 的 SM |
96 GB HBM3 内存提供高达 3000 GB/s 的速度 | |
60 MB 二级缓存 | |
NVLink 4 和 PCIe 5 | |
NVIDIA NVLink-C2C | Grace CPU 和 Hopper GPU 之间硬件一致性互连 |
高达 900 GB/s 的总带宽、450 GB/s/dir | |
扩展 GPU 内存功能使 Hopper GPU 能够将所有 CPU 内存寻址为 GPU 内存。每个 Hopper CPU 可以在超级芯片内寻址多达 608 GB 内存 | |
NVIDIA NVLink 切换系统 | 使用 NVLink 4 连接多达 256 个 NVIDIA Grace Hopper 超级芯片 |
每个连接 NVLink 的 Hopper GPU 都可以寻址网络中所有超级芯片的所有 HBM3 和 LPDDR5X 内存,最高可达 150 TB 的 GPU 可寻址内存 |
H100 一共有 8 组 GPC、66 组 TPC、132 组 SM,总计有 16896 个 CUDA 核心、528 个 Tensor 核心、50MB 二级缓存。显存为新一代 HBM3,容量 80 GB,位宽 5120-bit,带宽高达 3 TB/s。
格蕾丝·赫希贝尔·赫柏(Grace Hopper)是 20 世纪美国计算机科学家和海军军官,被誉为计算机编程先驱和软件工程的奠基人之一。在 1934 年获得了耶鲁大学数学博士学位,成为该校历史上第一位女性获得博士学位的人。在计算机领域做出了重要贡献,尤其在编程语言和软件开发方面有突出成就,被尊称为“软件工程之母”和“编程女王”。主要成就包括:
开发了第一个编译器,将高级语言翻译成机器码,这项创新大大简化了编程过程,为软件开发奠定了基础。
提出了 COBOL(通用商业导向语言)编程语言的概念和设计,这是一种面向商业应用的高级语言,对商业和金融领域的计算机化起到了重要作用。
在计算机科学教育和推广方面做出了杰出贡献,她致力于将计算机科学普及到更广泛的人群中,并激励了许多人进入这一领域。
作为美国海军的一名军官,她参与了多个计算机课程,包括 UNIVAC 和 Mark 系列计算机的开发,为军事和民用领域的计算机化做出了贡献。
具体到 SM 结构,Hopper 赫柏架构 FP32 Core 和 FP64 Core 两倍于 Ampere 架构,同时采用 Tensor Core4.0 使用新的 8 位浮点精度(FP8),可为万亿参数模型训练提供比 FP16 高 6 倍的性能。FP8 用于 Transformer 引擎,能够应用 FP8 和 FP16 的混合精度模式,大幅加速 Transformer 训练,同时兼顾准确性。FP8 还可大幅提升大型语言模型推理的速度,性能较 Ampere 提升高达 30 倍。新增 Tensor Memory Accelerator,专门针对张量进行数据传输,更好地加速大模型。
Hopper 赫柏架构 SM 硬件单元 | Hopper 赫柏架构每个 Process Block | 相比 Ampere 架构 |
---|---|---|
4 个 Warp Scheduler,4 个 Dispatch Unit | 1 个 Warp Scheduler,1 个 Dispatch Unit | 相同 |
128 个 FP32 Core(4 * 32) | 32 个 FP32 Core | x2 |
64 个 INT32 Core(4 * 16) | 16 个 INT32 Core | 相同 |
64 个 FP64 Core(4 * 16) | 16 个 FP32 Core | x2 |
4 个 Tensor Core4.0(4 * 1) | 1 个 Tensor Core | Tensor Core3.0 |
32 个 LD/ST Unit(4 * 8) | 8 个 LD/ST Unit | 相同 |
16 个 SFU(4 * 4) | 4 个 SFU | 相同 |
Tensor Memory Accelerator | 新增 |
NVIDIA Quantum-2 Infiniband 是英伟达推出的一种高性能互连技术,用于数据中心和高性能计算环境中的互连网络,具有高性能、低延迟、高可靠性和支持异构计算等特点,主要用于连接计算节点、存储系统和其他关键设备,以实现高速数据传输和低延迟通信。
NVIDIA BlueField-3 DPU(Data Processing Unit)是一种数据处理单元,提供数据中心的网络、存储和安全加速功能。BlueField-3 DPU 结合了网络接口控制器(NIC)、存储控制器、加密引擎和智能加速器等功能于一体,为数据中心提供了高性能、低延迟的数据处理解决方案。
NVIDIA CUDA 平台针对 NVIDIA Grace CPU,NVIDIA Grace Hopper Superchip 和 NVIDIA NVLink Switch 系统进行了优化,使得 NVIDIA CUDA 发展成为一个全面、高效、高性能的加速计算平台,为开发人员在异构平台上加速应用程序提供了最佳的体验。
基于 Hopper 架构,英伟达推出 NVIDIA H100 高性能计算加速器,旨在为各种规模的计算工作负载提供出色的性能和效率。在单服务器规模下,结合主流服务器使用 H100 加速卡可以提供强大的计算能力,加速各种计算密集型工作负载。在多服务器规模下,组成 GPU 集群的多块 H100 加速卡可以构建高性能计算集群,支持分布式计算和并行计算,提高整体计算效率。而在超级计算规模下,大量 H100 加速卡组成的超级计算集群可以处理极端规模的计算任务,支持复杂的科学计算和研究。
从单服务器到多服务器再到超级计算规模(Mainstream Servers to DGX to DGX SuperPOD),NVIDIA H100 在不同层次和规模下展现出色的计算性能和效率,满足各种计算需求和业务目标。企业可以根据自身需求和预算选择适合的 NVIDIA H100 解决方案,加速其计算任务和推动 AI 领域的发展。
Blackwell 架构
2024 年 3 月,英伟达发布 Blackwell 架构,专门用于处理数据中心规模的生成式 AI 工作流,能效是 Hopper 的 25 倍,新一代架构在以下方面做了创新:
-
新型 AI 超级芯片:Blackwell 架构 GPU 具有 2080 亿个晶体管,采用专门定制的台积电 4NP 工艺制造。所有 Blackwell 产品均采用双倍光刻极限尺寸的裸片,通过 10 TB/s 的片间互联技术连接成一块统一的 GPU。
-
第二代 Transformer 引擎:将定制的 Blackwell Tensor Core 技术与英伟达 TensorRT-LLM 和 NeMo 框架创新相结合,加速大语言模型 (LLM) 和专家混合模型 (MoE) 的推理和训练。
-
第五代 NVLink:为了加速万亿参数和混合专家模型的性能,新一代 NVLink 为每个 GPU 提供 1.8TB/s 双向带宽,支持多达 576 个 GPU 间的无缝高速通信,适用于复杂大语言模型。
-
RAS 引擎:Blackwell 通过专用的可靠性、可用性和可服务性 (RAS) 引擎增加了智能恢复能力,以识别早期可能发生的潜在故障,从而更大限度地减少停机时间。
-
安全 AI:内置英伟达机密计算技术,可通过基于硬件的强大安全性保护敏感数据和 AI 模型,使其免遭未经授权的访问。
-
解压缩引擎:拥有解压缩引擎以及通过 900GB/s 双向带宽的高速链路访问英伟达 Grace CPU 中大量内存的能力,可加速整个数据库查询工作流,从而在数据分析和数据科学方面实现更高性能。
大卫·哈罗德·布莱克韦尔(David Harold Blackwell)是 20 世纪美国著名的数学家和统计学家,他在统计学领域做出了卓越的贡献,被誉为统计学的巨匠,第一个非裔美国人当选为美国国家科学院院士,也是第一个获得美国数学学会最高奖——Leroy P. Steele 奖章的非裔美国人。主要成就包括:
在贝叶斯统计学领域做出了开创性的工作,提出了许多重要的方法和理论,推动了贝叶斯分析在统计学中的发展。
在信息论方面的研究成果为该领域的发展做出了重要贡献,提供了许多重要的理论基础和方法。
英伟达 GB200 Grace Blackwell 超级芯片通过 900GB/s 超低功耗的片间互联,将两个英伟达 B200 Tensor Core GPU 与英伟达 Grace CPU 相连。在 90 天内训练一个 1.8 万亿参数的 MoE 架构 GPT 模型,需要 8000 个 Hopper 架构 GPU,15 兆瓦功率,Blackwell 架构只需要 2000 个 GPU,以及 1/4 的能源消耗。8 年时间,从 Pascal 架构到 Blackwell 架构,英伟达将 AI 计算性能提升了 1000 倍!
英伟达 GB200 NVL72 集群以机架形式设计连接 36 个 GB200 超级芯片(36 个 Grace cpu 和 72 个 Blackwell GPU)。GB200 NVL72 是一款液冷、机架型 72 GPU NVLink,可以作为单个大规模 GPU,提供比上一代 HGX H100 实现 30 倍的实时万亿参数 LLM 推理,加速下一代 AI 和加速计算。
GB200 NVL72 | GB200 Grace Blackwell Superchip | |
---|---|---|
Configuration | 36 Grace CPU : 72 Blackwell GPUs | 1 Grace CPU : 2 Blackwell GPU |
FP4 Tensor Core2 | 1,440 PFLOPS | 40 PFLOPS |
FP8/FP6 Tensor Core2 | 720 PFLOPS | 20 PFLOPS |
INT8 Tensor Core2 | 720 POPS | 20 POPS |
FP16/BF16 Tensor Core2 | 360 PFLOPS | 10 PFLOPS |
TF32 Tensor Core2 | 180 PFLOPS | 5 PFLOPS |
FP64 Tensor Core | 3,240 TFLOPS | 90 TFLOPS |
GPU Memory | Bandwidth | Up to 13.5 TB HBM3e | 576 TB/s | Up to 384 GB HBM3e | 16 TB/s |
NVLink Bandwidth | 130TB/s | 3.6TB/s |
CPU Core Count | 2,592 Arm Neoverse V2 cores | 72 Arm Neoverse V2 cores |
CPU Memory | Bandwidth | Up to 17 TB LPDDR5X | Up to 18.4 TB/s | Up to 480GB LPDDR5X | Up to 512 GB/s |
1. Preliminary specifications. May be subject to change. 1. With sparsity. |
随着大模型(LLM)参数量增长对算力的需求,英伟达在存储带宽和内存方面不断创新,P100 上首次使用 HBM2,A100 使用 HBM2e,H100 使用 HBM3,H200 和 B100 使用 HBM3e。
英伟达 Blackwell HGX B200 和 HGX B100 在生成式 AI 、数据分析和高性能计算方面具有相同的突破性进展。HGX B200 是基于 8 个 B200 x86 平台,提供 144 petaFLOPs 的 AI 性能,每个 GPU 最高可配置 1000 瓦。HGX B100 是基于 8 个 B100 x86 平台,提供 112 petaFLOPs 的 AI 性能,每个 GPU 最高可配置为 700 瓦。
HGX B200 | HGX B100 | |
---|---|---|
Blackwell GPUs | 8 | 8 |
FP4 Tensor Core | 144 PetaFLOPS | 112 PetaFLOPS |
FP8/FP6/INT872 | 72 PetaFLOPS | 56 PetaFLOPS |
Fast Memory | Up to 1.5 TB | Up to 1.5TB |
Aggregate Memory Bandwidth | Up to 64 TB/s | Up to 64 TB/s |
Aggregate NVLink Bandwidth | 14.4 TB/s | 14.4 TB/s |
Per GPU Specifications | ||
FP4 Tensor Core | 18 petaFLOPS | 14 petaFLOPS |
FP8/FP6 Tensor Core | 9 petaFLOPS | 7 petaFLOPS |
INT8 Tensor Core | 9 petaOPS | 7 petaOPS |
FP16/BF16 Tensor Core | 4.5 petaFLOPS | 3.5 petaFLOPS |
TF32 Tensor Core | 2.2 petaFLOPS | 1.8 petaFLOPS |
FP64 Tensor Core | 40 teraFLOPS | 30 teraFLOPS |
GPU memory | Bandwidth | Up to 192 GB HBM3e | Up to 8 TB/s | |
Max thermal design power (TDP) | 1,000W | 700W |
Interconnect | NVLink: 1.8TB/s, PCIe Gen6: 256GB/s | NVLink: 1.8TB/s, PCIe Gen6: 256GB/s |
Server options | NVIDIA HGX B200 partner and NVIDIA-Certified Systems with 8 GPUs | NVIDIA HGX B100 partner and NVIDIA-Certified Systems with 8 GPUs |
- Preliminary specifications subject to change.
- All petaFLOPS and petaOPS are with Sparsity except FP64 which is dense.
小结与思考
本节主要回顾了从 2010 年到 2024 年英伟达 GPU 架构的发展,其中有几个比较重要的时间节点和事件:
-
2010 年提出 Fermi 架构,开启了架构演进的进程,属于首个完整的 GPU 计算架构,里面提出的新概念一直沿用至今。
-
2016 年提出 Pascal 架构,首次提出 NVLink,双向互联带宽达到 160 GB/s 对 AI 领域产生重大影响,是具有历史性意义的里程碑架构。
-
2017 年提出 Volt 架构,首次提出张量核心(Tensor Core),专门针对神经网络矩阵卷积运算进行加速的第一代核心,同时提出 NVSwitch1.0,提高 GPU 之间的通信效率和性能。
-
2018 年提出 Turing 架构,在消费级显卡上提出 RT Core 以实现硬件光线追踪。
-
2020 年 Ampere 架构因多用户 GPU 实例在 AI 云应用厂商中广泛采用。
-
2022 年 Hopper 架构实现了 CPU 和 GPU 异构,CPU 与 GPU 实现英伟达 NVLink-C2C 互连。
-
2024 年 Blackwell 架构 GPU,英伟达将 AI 计算性能提升了 1000 倍,进一步为生成式 AI 与大模型提供算力支持。
CUDA Core & Tensor Core
Cuda Core 和 Tensor Core 都是运算单元,与硬件相关。随着科学计算迅速发展,为了使用 GPU 的高算力,需要将科学计算任务适配成图形图像任务,Cuda Core 属于全能通用型浮点运算单元,用于加、乘、乘加运算。随着 AI 迅速发展,对矩阵乘法的算力需求不断增大,Tensor Core 专门为深度学习矩阵运算设计,适用于在高精度矩阵运算。以 Hopper 架构为例,每个 SM 有 128 个 CUDA Core,4 个 Tensor Core,Tensor Core 相比较支持的精度更多,而且 Tensor Core 是可编程的,除了使用 CUDA API 调用 Tensor Core,如 cublas、cudnn 等,还可以使用 WMMA (Warp-level Matrix Multiply Accumulate) API、MMA (Matrix Multiply Accumulate) PTX 进行编程。
Blackwell | Hopper | Ampere | Turing | Volta | |
---|---|---|---|---|---|
支持的 Tensor Core 精度 | FP64, TF32, bfloat16, FP16, FP8, INT8, FP6, FP4 | FP64, TF32, bfloat16, FP16, FP8, INT8 | FP64, TF32, bfloat16, FP16, INT8, INT4, INT1 | FP16, INT8, INT4, INT1 | FP16 |
支持的 CUDA Core 精度 | FP64, FP32, FP16, bfloat16 | FP64, FP32, bfloat16, FP16, INT8 | FP64, TF32, bfloat16, FP16, INT8 | FP64, fp32, FP16, INT8 | FP64, fp32, FP16, INT8 |
Tensor Core 版本 | 5.0 | 4.0 | 3.0 | 2.0 | 1.0 |
NVLink
NVLink 是双向直接 GPU-GPU 互连,第五代 NVLink 连接主机和加速处理器的速度高达每秒 1800GB/s,这是传统 x86 服务器的互连通道——PCIe 5.0 带宽的 14 倍多。英伟达 NVLink-C2C 还将 Grace CPU 和 Hopper GPU 进行连接,加速异构系统可为数万亿和数万亿参数的 AI 模型提供加速性能。
NVLink Generation | 1.0 | 2.0 | 3.0 | 4.0 | 5.0 |
---|---|---|---|---|---|
NVLink bandwidth per GPU | 300GB/s | 300GB/s | 600GB/s | 900GB/s | 1,800GB/s |
Maximum Number of Links per GPU | 6 | 6 | 12 | 18 | 18 |
Architectures | Pascal | Volta | Ampere | Hopper | Blackwell |
Year | 2014 | 2017 | 2020 | 2022 | 2024 |
NVSwitch
NVSwitch 是 NVLink 交换机系统的关键使能器,它能够以 NVLink 速度实现 GPU 跨节点的连接。它包含与 400 Gbps 以太网和 InfiniBand 连接兼容的物理( PHY )电气接口。随附的管理控制器现在支持附加的八进制小尺寸可插拔( OSFP )模块 。
NVSwitch Generation | 1.0 | 2.0 | 3.0 | NVLink Switch |
---|---|---|---|---|
Number of GPUs with direct connection within a NVLink domain | Up to 8 | Up to 8 | Up to 8 | Up to 576 |
GPU-to-GPU bandwidth | 300GB/s | 600GB/s | 900GB/s | 1,800GB/s |
Total aggregate bandwidth | 2.4TB/s | 4.8TB/s | 7.2TB/s | 1PB/s |
Architectures | Volta | Ampere | Hopper | Blackwell |
Year | 2017 | 2020 | 2022 | 2024 |
小结与思考
-
英伟达 GPU 架构发展:英伟达 GPU 架构自 2010 年以来经历了从 Fermi 到 Blackwell 的多代演进,引入了 CUDA Core、Tensor Core、NVLink 和 NVSwitch 等关键技术,显著提升了 GPU 的计算能力和能效。
-
Tensor Core 的持续创新:Tensor Core 作为专为深度学习矩阵运算设计的加速器,从第一代发展到第五代,不断增加支持的精度类型和提升性能,以适应 AI 的快速发展。
-
NVLink 和 NVSwitch 的技术演进:NVLink 和 NVSwitch 作为 GPU 间和 GPU 与 CPU 间的高速互连技术,其带宽和连接能力随架构代数增加而显著提升,为大规模并行计算和异构计算提供了强大支持。
相关文章:
GPU 英伟达GPU架构回顾
1999 年,英伟达发明了 GPU(graphics processing unit),本节将介绍英伟达 GPU 从 Fermi 到 Blackwell 共 9 代架构,时间跨度从 2010 年至 2024 年,具体包括费米(Feimi)、开普勒&#…...
Git 分布式版本控制
Git 是分布式版本控制 文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据 总结 前言 git基本流程 本地git安装并将bin目录配置到环境变量path中,右键git bash后配置本地用户名与邮箱 git congig --global user.name "" || …...
【网络】协议与网络版计算器
协议与网络版计算器 文章目录 1.协议的概念 1.1序列化与反序列化 2.网络版计算器 2.1封装套接字2.2协议定制 2.2.1Jsoncpp2.2.2报文处理 2.3会话层:TcpServer2.4应用层:Calculate2.5表示层:Service2.6应用层、表示层和会话层->应用层 …...
AI语言模型的技术之争:DeepSeek与ChatGPT的架构与训练揭秘
云边有个稻草人-CSDN博客 目录 第一章:DeepSeek与ChatGPT的基础概述 1.1 DeepSeek简介 1.2 ChatGPT简介 第二章:模型架构对比 2.1 Transformer架构:核心相似性 2.2 模型规模与参数 第三章:训练方法与技术 3.1 预训练与微调…...
【Python爬虫(5)】HTTP协议:Python爬虫的基石
【Python爬虫】专栏简介:本专栏是 Python 爬虫领域的集大成之作,共 100 章节。从 Python 基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取ÿ…...
机器学习数学基础:24.随机事件与概率
一、教程目标 本教程致力于帮助零基础或基础薄弱的学习者,全面掌握概率论与数理统计的基础公式,透彻理解核心概念,熟练学会应用解题技巧,最终能够轻松应对期末或考研考试。 二、适用人群 特别适合那些对概率论与数理统计知识了…...
Mongodb数据管理
Mongodb数据管理 1.登录数据库,查看默认的库 [rootdb51~]# mongo> show databases; admin 0.000GB config 0.000GB local 0.000GB> use admin switched to db admin > show tables system.version > admin库:admin 是 MongoDB 的管理…...
vue3响应式丢失解决办法(三)
vue3的响应式的理解,与普通对象的区别(一) vue3 分析总结响应式丢失问题原因(二) 经过前面2篇文章,知道了响应式为什么丢失了,但是还是碰到了丢失情况,并且通过之前的内容还不能解…...
Django中数据库迁移命令
在 Django 中,数据库迁移是确保数据库结构与 Django 模型定义保持一致的重要过程。以下是 Django 中常用的数据库迁移命令: 1. python manage.py makemigrations 功能:此命令用于根据 Django 项目的模型文件(models.pyÿ…...
LLM之循环神经网络(RNN)
在人工智能的领域中,神经网络是推动技术发展的核心力量。今天,让我们深入探讨循环神经网络(RNN) 一、神经网络基础 (1)什么是神经网络 神经网络,又称人工神经网络,其设计灵感源于人…...
TDengine 客户端连接工具 taos-Cli
简介工具获取运行命令行参数 基础参数高级参数 数据导出/导入 数据导出数据导入 执行 SQL 脚本使用小技巧 TAB 键自动补全设置字符列显示宽度其它 错误代码表 简介 TDengine 命令行工具(以下简称 TDengine CLI)是用户操作 TDengine 实例并与之交互最简…...
Express 路由路径正则详解
在 Express 中,使用正则表达式可以定义更加灵活和复杂的路由。 1. 基本语法 在 Express 中,路由路径可以是一个字符串、字符串模式或者正则表达式。当使用正则表达式时,将其作为路由路径传入 app.METHOD() 方法(METHOD 可以是 g…...
快速设置 Docker 网络代理配置
Docker Client - 代理访问远程的 Docker Daemon 在 Client 端设置代理其实就是设置 Linux 系统的代理,从而让系统的命令行可以通过代理连接到外部的网络。一般只需要配置 HTTP_PROXY 与 HTTPS_PROXY 这两个即可。 临时生效: 在命令行中执行下面的命令&…...
JVM ②-双亲委派模型 || 垃圾回收GC
这里是Themberfue 在上节课对内存区域划分以及类加载的过程有了简单的了解后,我们再了解其他两个较为重要的机制,这些都是面试中常考的知识点,有必要的话建议背出来,当然不是死记硬背,而是要有理解的背~~~如果对 JVM …...
内容中台驱动企业数字化内容管理高效协同架构
内容概要 在数字化转型加速的背景下,企业对内容管理的需求从单一存储向全链路协同演进。内容中台作为核心支撑架构,通过统一的内容资源池与智能化管理工具,重塑了内容生产、存储、分发及迭代的流程。其核心价值在于打破部门壁垒,…...
人工智障的软件开发-自动流水线CI/CD篇-docker+jenkins部署之道
指令接收:「需要自动构建系统」 系统检测:目标开发一个软件已完成代码仓库-轻盈的gitea,开始添加自动流水线 启动应急冷却协议:准备承受Java系应用的资源冲击 核心组件锁定:构建老将军Jenkins(虽然年迈但依…...
数字人技术之LatentSync Win11本地部署
#LatentSync技术原理 字节跳动开源的基于音频条件潜在扩散模型的端到端唇同步框架,基于潜在扩散模型,以音频条件潜在扩散模型为基础,利用 Stable Diffusion 强大能力,直接建模复杂的音频与视觉之间的关系,实现高质量的唇形同步. 从而制作虚拟…...
Llama3.0论文学习笔记: The Llama 3 Herd of Models
1. 写在前面 今天分享Llama3.0的论文,2024.7月来自Meta的Llama团队,2025年1月DeepSeek R1出现之后,其风头显然已经盖住了Llama3,这时候整理Llama3感觉有点赶不上潮流了,但是我还是想整理下Llama3.0,原因是…...
C#学习之数据转换
目录 一、创作说明 二、数据类型之间的转换 1.数据类型之间的转换表格 2.代码示例 三、进制之间的转换 1.进制之间的转换表格 2.代码示例 四、ASCII 编码和字符之间的转换 1.ASCII 编码和字符之间的转换表格 2.代码示例 五、总结 一、创作说明 C#大多数时候都是和各…...
POI 和 EasyExcel
前言 将表格信息导出为Excel表格(导出数)将Excel表格信息录入到数据库(导入数据) 操作Excel目前比较流行的就是 Apache POI 和阿里巴巴的 EasyExcel Apache POI Apache POI 官网:https://poi.apache.org/ HSSF&am…...
分布式光纤传感:为生活编织“感知密网”
分布式光纤测温技术虽以工业场景为核心,但其衍生的安全效益已逐步渗透至日常生活。 分布式光纤测温技术(DTS)作为一种先进的线型温度监测手段,近年来在多个领域展现了其独特的优势。虽然其核心应用场景主要集中在工业、能源和基础…...
Web后端 - Maven管理工具
一 Maven简单介绍 Maven是apache旗下的一个开源项目,是一款用于管理和构建java项目的工具。 Maven的作用 二 Maven 安装配置 依赖配置 依赖传递 依赖范围 生命周期 注意事项:在同一套生命周期中,当运行后面的阶段时,前面的阶段都…...
聊一聊vue如何实现角色权限的控制的
大家好,我是G探险者。 关于角色与权限控制,通常是分为两大类:一种是菜单权限;一种是操作权限。 菜单权限是指,每个角色对应着可以看到哪些菜单,至于每个菜单里面的每个按钮,比如增删改查等等这类…...
Java中使用EasyExcel
Java中使用EasyExcel 文章目录 Java中使用EasyExcel一:EasyExcel介绍1.1、核心函数导入数据导出数据 1.2、项目实际应用导入数据导出数据 1.3、相关注解ExcelProperty作用示例 二:EasyExcel使用2.1、导入功能2.2、导出功能 三:EasyExcel完整代…...
LLM:GPT 系列
阅读原文: LLM:Qwen 系列 GPT(Generative Pre-trained Transformer)是生成式预训练语言模型,基于 Transformer 架构,专注于通过自回归的方式生成自然语言文本,即给定一个输入序列 x { x 1 , …...
【已解决】TypeError: AsyncConnectionPool.__init__(), new install bug, httpx==0.24.1
1,参考社区链接,首先降低gradio版本,降低到4以下,但是也不能降太低,也不能太高,要适中,推荐版本3.39.0 pip install gradio3.39.0 2,下载正确的httpx版本 参考社区链接࿰…...
Linux:深入了解进程信号(上)
目录 1. 什么是信号 1.1 引入 1.2 概念 1.3 特性 1.4 信号的三个方面 2. 信号的产生 2.1 键盘按键产生 2.2 signal捕捉信号函数 2.3 发送信号原理 2.4 硬件中断 2.5 指令和函数接口 2.5.1 kill指令 2.5.2 kill函数 2.5.3 raise与abort函数 2.6 软件条件 2.7 异…...
Java小白入门基础知识(二)
1.标识符 概念: 在程序中给类,方法,变量取的名称叫做标识符 规范: 字母,数字,下划线,$符号 注意: 不能以数字开头,也不能是关键字,严格区分大小写(一般定义常量就是大写) 软性建议: 1)类名:每个单词首字母大写(大驼峰) 2)方法名:首字母小写,后面每个单词首字母大写(小驼…...
Servlet中,WebServlet注解的使用方法
案例:声明abc接口,在接口内部获取配置信息 WebServlet(urlPatterns"/abc",loadOnStartup6,initParams {WebInitParam(name"username", value"mmm", description"this is username"),WebInitParam(name"a…...
重新出发的LLM本地部署——DeepSeek加持下的Ollama+OpenWebUI快速部署
DeepSeek 这真的是太惊艳了,发布出来的模型这么能打,在线的版本使用起来也是丝滑连招,感觉效果比起之前一直用智谱 chatglm4 更好用,想着本地化部署一下。 本来以为,会和之前在开发测试 transformers 的模型和代码一样…...
【Python爬虫(1)】专栏开篇:夯实Python基础
【Python爬虫】专栏简介:本专栏是 Python 爬虫领域的集大成之作,共 100 章节。从 Python 基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取ÿ…...
低代码组态软件-BY组态
引言 在工业4.0与智能制造浪潮的推动下,组态软件作为工业自动化的核心工具,正逐步从传统单机模式向Web化、智能化方向演进。BY组态作为一款基于Web的嵌入式组态插件工具,凭借其低代码、高灵活性和跨平台特性,成为工业物联网&#…...
【计算机网络】数据链路层数据帧(Frame)格式
在计算机网络中,数据帧(Frame) 是数据链路层的协议数据单元(PDU),用于在物理介质上传输数据。数据帧的格式取决于具体的链路层协议(如以太网、PPP、HDLC 等)。以下是常见数据帧格式的…...
[特殊字符] C语言中打开和关闭文件的两种方法:标准库 VS 系统调用
C语言中对文件打开关闭操作 前言方法一:标准输入输出库(stdio.h)—— 高级文件操作的利器打开文件💡 关闭文件:fclose示例代码📝 个人见解 方法一:系统调用(fcntl.h 和 unistd.h&…...
如何将ubuntu下的一个目录,保存目录结构为一个git仓库并上传
目录 1. 初始化本地Git仓库 2. 添加文件到仓库 3. 提交更改 4. 创建并关联远程仓库 5. 推送代码到远程仓库 完整流程总结 要将Ubuntu下的一个目录(例如rpc)保存为一个Git仓库并上传到远程仓库,您可以遵循以下步骤: 1. 初始…...
应用分层、三层架构和MVC架构
前言 在前面中,我们已经学习了Spring MVC 的一些基础操作,那么后面就用一些简单的案例来巩固一下。 在开始学习做案例之前,我们先来了解一下在软件开发中常见的设计模式和架构。 应用分层 含义 应用分层是一种软件开发设计思想࿰…...
前端实现防抖功能的详细解读
在前端开发中,防抖(Debounce) 是一种优化技术,用于限制某个函数在短时间内被频繁调用的次数。它的核心思想是:在一定时间内,无论触发多少次事件,只执行最后一次操作。防抖通常用于处理用户输入、…...
VUE3环境搭建
最近准备用Vue编写一点前端页面,我在前端一直是个小白,之前用的Vue2写了几个页面,现在已经是VUE3了,重新安装下环境开始。 1.npm安装 Vue需要用npm安装,npm是nodejs的package manager,这里我们安装下node…...
1-16 tortoiseGit分支与Git操作
1-1 创建分支 什么时候需要开分支? - 隔离线上版本和开发版本 - 大功能开发,不想影响到其他人,自己独立开个分支去开发 SVN经典目录结构: - trunk-------------------------开发中的文件 - bran…...
【VB语言】EXCEL中VB宏的应用
【VB语言】EXCEL中VB宏的应用 文章目录 [TOC](文章目录) 前言一、EXCEL-VB1.实验过程2.代码 二、EXCEL-VB 生成.c.h文件1.实验过程2.代码 四、参考资料总结 前言 1.WPS-VB扩展包 提示:以下是本篇文章正文内容,下面案例可供参考 一、EXCEL-VB 1.实验过…...
前端优化可以从哪些方面下手及优化方案
前端优化是提升网页性能、提升用户体验和降低服务器负担的重要手段。可以从多个角度入手,以下是一些常见的优化方向和方案: 1. 性能优化 减少请求数量:尽量减少页面加载时发起的 HTTP 请求,例如使用合并文件(CSS 和 …...
类和对象(5)——抽象类和接口
目录 1. 抽象类 1.1 抽象类的概念 1.2 抽象类语法:abstract关键字 1.3 抽象类的特性 1.4 抽象类的作用 2. 接口 2.1 接口的概念 2.2 接口语法:interface关键字 2.3 接口的实现:implements关键字 2.4 接口的特性 2.5 实现多个接口 …...
海康摄像头IPV6模式,手动,自动,路由公告
海康摄像头DS-2DC7220IW-A 网络设置中的IPv6配置选项。IPv6是互联网协议(IP)的第六版,用于替代IPv4,提供更多的IP地址和改进的网络功能。图片中的选项允许用户选择如何配置设备的IPv6网络连接: 手动:用户可…...
LabVIEW与USB设备开发
开发一台USB设备并使用LabVIEW进行上位机开发,涉及底层驱动的编写、USB通信协议的实现以及LabVIEW与设备的接口设计。本文将详细介绍如何开发USB设备驱动、实现LabVIEW与USB设备的通信以及优化数据传输,帮助用户顺利完成项目开发。下面是一个详细的说明&…...
BY组态:工业自动化的未来,触手可及
在工业4.0的浪潮下,智能化、数字化已成为制造业发展的核心驱动力。作为工业自动化领域的重要工具,组态软件在实现设备监控、数据采集、流程控制等方面发挥着不可替代的作用。然而,传统的组态软件往往存在开发周期长、学习成本高、灵活性不足等…...
深入理解Python多进程编程 multiprocessing
深入理解Python多进程编程 multiprocessing flyfish Python 的 multiprocessing 模块允许创建多个进程,从而可以利用多核处理器的能力来并行执行任务。这意味着程序的不同部分可以在不同的CPU核心上同时运行,极大地提高了处理效率,特别是在…...
使用DeepSeek建立一个智能聊天机器人0.12
为了确保这段代码能够在Windows和Linux系统上都能正常运行,我考虑以下几个方面: 路径分隔符:在Windows和Linux中,文件路径的分隔符不同。Windows使用反斜杠(\),而Linux使用正斜杠(/)。我们可以使用 os.path.join 来处理路径,以确保跨平台兼容性。 消息框:tkinter.…...
基于VLC的Unity视频播放器(三)
关于UMP插件 UMP插件不更新了,我测试在Ubuntu24.04上编辑器和运行时都无法正常播放,在替换lib之后编辑器可以播放,但打包后不行……很奇怪 继续更新了一下UnityVLC 添加了对Linux的支持,勉强都可以播放了…… Win截图 Ubuntu2…...
每日一题——把数字翻译成字符串
把数字翻译成字符串 题目描述示例示例1示例2 题解动态规划代码实现复杂度分析 总结 题目描述 有一种将字母编码成数字的方式:‘a’->1, ‘b’->2, … , ‘z’->26。 现在给一串数字,返回有多少种可能的译码结果。 数据范围:字符串…...
基于状态观测器和物联网基础设施的智能电网高速孤岛检测
论文标题 中文标题: 基于状态观测器和物联网基础设施的智能电网高速孤岛检测 英文标题: High-Speed Islanding Detection in Smart Grids Using a State Observer and IoT Infrastructure 作者信息 Shahid Karim<sup>1,2, *</sup>, Prajo…...