1. 引言本文旨在为没有任何背景知识的初学者提供对其核心组件的清晰简洁的理解。全文主要是从 H100 作为概述出发,将探讨其关键领域,包括流式多处理器(SM)架构、Tensor Cores、CUDA Cores、第四代 NVLink 和 NVLink 网络,以及 GPU 利用率、饱和度等概念。如真正感兴趣建议可阅读 NVIDIA H100 Tensor Core GPU Architecture 之后使用 perplexity 等工具进行答疑解惑,深入理解。
2. 理解流式多处理器 (SM)NVIDIA H100 GPU 的基本构建模块是流式多处理器(SM)架构 2。可以将 H100 想象成一台非常强大的计算机,它由许多称为 SM 的更小、更专业的处理单元组成。每个 SM 都经过优化,可以并行处理许多计算任务,这对于人工智能(AI)和机器学习(ML)等要求严苛的应用至关重要 3。在某些配置中,H100 拥有高达 144 个 SM 2,这使得它能够实现大规模的并行处理。如此多的 SM 表明 H100 专为并行计算而设计,这对于 GPU 计算至关重要,尤其是在处理人工智能和大型数据集时。这种设计趋势反映了行业对能够同时处理大量数据的硬件的需求日益增长。
每个 SM 内部都有几个关键组件,它们协同工作以实现高效的并行计算 3:
CUDA Cores:这些是 SM 内的基本计算单元。可以将它们想象成可以执行简单计算的独立工作者。H100 拥有大量的 CUDA Cores,使其能够同时执行许多指令。在人工智能/机器学习的背景下,这些核心执行训练和运行人工智能模型所需的众多矩阵乘法和其他计算。CUDA Cores 是通用并行任务的主力,构成了 GPU 计算的基础。它们数量众多,能够同时执行许多线程,这对于需要大量并行处理的应用非常有利。
Tensor Cores:这些是 SM 内的专用单元,旨在加速矩阵计算,这对于深度学习至关重要。可以将它们视为专门精通执行人工智能中常见的大型乘法任务的高效工作者。H100 配备了第四代 Tensor Cores 3,与前几代相比,性能显著提高。这些核心可以极大地加速神经网络的训练和推理。Tensor Cores 的出现标志着现代 GPU 中专门硬件的一个关键创新,专门用于提升人工智能工作负载的性能,通过高效处理矩阵乘法来满足人工智能的特定需求。第四代 Tensor Cores 的引入表明这项技术在不断进步,旨在提供更高的效率和更快的计算速度。
寄存器:每个 SM 都有一组称为寄存器的极快速内存。这些寄存器保存 CUDA Cores 和 Tensor Cores 正在积极处理的小块数据 3。从寄存器访问数据非常快,这有助于保持处理单元的忙碌和高效。寄存器为处理单元提供最快的数据访问,最大限度地减少延迟并提高效率。这种快速访问对于保持核心的持续工作和避免性能瓶颈至关重要。
L1 缓存:这是位于每个 SM 内的小型快速内存缓存。它充当频繁访问数据的临时存储空间。当核心需要一块数据时,它首先检查 L1 缓存。如果数据在那里(称为“命中”),则可以比从 SM 外部较大但较慢的内存中获取数据快得多地访问它 3。H100 增加了 L1 缓存的容量 5,进一步提高了数据检索速度。像 L1 缓存这样的缓存机制对于通过减少访问较慢的主内存的需求来提高性能至关重要。H100 中 L1 缓存容量的增加表明了对更快数据访问和更高整体吞吐量的重视。
共享内存:这是一个较大的快速内存块,可以在单个 SM 内的所有 CUDA Cores 和 Tensor Cores 之间共享。它允许在 SM 上运行的并行线程之间进行更灵活的数据共享和通信。程序员可以战略性地使用共享内存来优化数据访问并提高性能 3。H100 还具有分布式共享内存,用于 SM 之间的通信 7。共享内存支持 SM 内高效的线程间通信和数据共享,程序员可以利用这一点来优化数据访问模式并提高应用程序的整体性能。H100 中分布式共享内存的加入增强了 GPU 内多个 SM 之间的协作能力。
总之,SM 是一个为并行计算优化的自包含处理单元。H100 GPU 将许多这些 SM 组合在一起,以实现其令人难以置信的处理能力。对于人工智能/机器学习的初学者来说,关键在于每个 SM 内的 CUDA Cores,尤其是 Tensor Cores,是高效执行训练和部署人工智能模型所需的复杂计算的主力。诸如寄存器、L1 缓存和共享内存等其他组件通过提供对必要数据的快速访问来支持这些核心。
3. 深入了解 Tensor Core 架构Tensor Cores 是专门的硬件单元,经过优化,可以高速执行张量计算,特别是矩阵乘法和累加 8。这些运算是许多人工智能和深度学习任务的基础。NVIDIA 于 2017 年首次在其 Volta GPU 架构中引入了 Tensor Cores,此后它们已成为 NVIDIA GPU 的标准功能 9。H100 配备了第四代 Tensor Cores 3,代表了这项关键技术的持续发展。Tensor Cores 的出现标志着 GPU 架构中一个重要的演变,反映了对专门硬件的需求日益增长,以加速人工智能工作负载并满足现代人工智能应用不断增长的计算需求。
Tensor Cores 的工作原理是执行融合乘加(FMA)运算,该运算在一个步骤中将两个矩阵相乘并将结果加到第三个矩阵上 8。这种方法比传统的 CUDA Cores 快得多,后者需要多个时钟周期才能执行相同的操作。Tensor Cores 还支持自动混合精度(AMP)训练 7,它结合了较低精度算术(如 H100 中的 FP16 和 FP8)的速度与较高精度计算(如 FP32)的准确性。这种技术允许人工智能模型在不显着牺牲模型准确性的情况下更快地进行训练和推理。值得注意的是,H100 引入了对 FP8 精度的支持 8,这为大型语言模型的性能带来了显着的飞跃。在 H100 中,每个 Tensor Core 提供一个 4x4x4 矩阵处理阵列,执行 D = A * B + C 的运算,其中 A 和 B 是 FP16 矩阵,而 C 和 D 可以是 FP16 或 FP32 矩阵 11。这种混合精度计算能力代表了人工智能工作负载的关键优化,可以在不影响准确性的前提下实现更快的训练和推理时间。H100 中 FP8 的引入进一步强调了在追求更高效率和性能方面持续的进步。
4. CUDA Cores vs. Tensor Cores:有何区别?CUDA Cores 和 Tensor Cores 都是 NVIDIA GPU 中用于加速计算的关键组件,但它们具有不同的用途和功能 8。CUDA Cores 是通用的并行处理器,旨在处理各种任务,从图形渲染到通用计算操作。每个 CUDA Core 在每个时钟周期可以执行一个操作 8。相比之下,Tensor Cores 是专门的硬件单元,专门用于加速矩阵乘法,这是深度学习和人工智能的基础。它们使用 FMA 操作在一个时钟周期内执行多个计算 8。这种专业化使 Tensor Cores 在执行矩阵运算时比 CUDA Cores 的吞吐量高得多。
为了更好地理解它们的区别,可以考虑以下类比。CUDA Cores 就像工厂里的通用工人,擅长并行执行许多不同种类的任务,例如图形渲染、物理模拟和视频处理 10。另一方面,Tensor Cores 就像专门的工人,专注于一项特定的但非常重要的任务:非常快速地将大量的数字(矩阵)相乘,这对于人工智能(AI)和机器学习(ML),尤其是训练和运行神经网络至关重要 10。Tensor Cores 可以被认为是矩阵数学的“电子表格大师”14。虽然 CUDA Cores 在需要大量并行处理的通用任务中非常有效,但如果主要关注人工智能、机器学习或严重依赖矩阵乘法的任务,那么 Tensor Cores 可以提供显着的性能优势。这种架构上的专业化反映了现代 GPU 中日益增长的趋势,即包含专门的单元以加速特定的计算密集型工作负载。
以下表格总结了 CUDA Cores 和 Tensor Cores 之间的主要区别:
| CUDA Cores | Tensor Cores |
用途 | 通用并行处理 | 专门用于加速矩阵乘法 |
工作负载优化 | 广泛的任务,包括图形、模拟、视频处理、通用计算 | 深度学习、人工智能、高性能计算中涉及大规模矩阵运算的任务 |
精度与数据类型 | 支持单精度(FP32)和双精度(FP64)等多种精度 | 支持混合精度算术(FP16、BF16、INT8、INT4),并使用 FP32 累加 |
计算效率与速度 | 顺序并行执行操作,多个核心同时执行计算,但在更细粒度的级别上 | 利用融合乘加(FMA)运算,在单个时钟周期内执行多个计算,从而实现比 CUDA Cores 快数倍的矩阵乘法速度 |
典型用例 | 游戏图形、物理模拟、视频处理、通用 GPU 工作负载 | 人工智能、深度学习、科学计算,其中大规模矩阵运算至关重要;显着加速神经网络的训练和人工智能模型的推理 |
在 NVIDIA GPU 中的可用性 | 存在于所有 NVIDIA GPU 中,从入门级消费级显卡到高端数据中心 GPU | 存在于 RTX 系列 GPU(如 RTX 30、40 系列)、NVIDIA 数据中心 GPU(A100、H100)和工作站级 GPU 中,这些 GPU 优先考虑 AI 加速 |
5. NVLink 和 NVLink 网络
NVLink 是一种高速互连技术,旨在实现 GPU 和 CPU 之间更快的通信,以及服务器内部多个 GPU 之间的通信 16。它是一种基于导线的串行多通道近距离通信链路,由 NVIDIA 开发,旨在解决 PCIe 在服务器内 GPU 之间以及 CPU 和 GPU 之间通信方面的带宽限制 16。与传统的 PCIe 交换机不同,NVLink 实现了处理器之间的高速直接互连,允许它们以极快的速度从共享内存池发送和接收数据 16。这种方法绕过了 PCIe 系统的速度较慢的特性,这在需要处理器之间大量数据流的场景中可能会成为瓶颈。
第四代 NVLink 提供了显着的优势,包括更高的带宽和更高的能源效率 16。在 H100 中,第四代 NVLink 每个 GPU 提供高达 900 GB/s 的双向带宽 3,这是 PCIe Gen 5 带宽的七倍以上 3。这种巨大的带宽提升使 GPU 能够以更高的速度访问和共享数据,这对于人工智能和高性能计算等要求严苛的工作负载至关重要。此外,NVLink 的能效是 PCIe Gen 5 的五倍 16,这对于构建大规模加速计算系统至关重要,因为它有助于降低功耗和冷却需求。这种更高的带宽和效率直接转化为多 GPU 系统中更快的处理速度和更低的功耗,这对于处理大规模人工智能模型和高性能计算任务至关重要。
NVLink 网络(也称为 NVLink 多节点)进一步扩展了这个概念,允许多个 GPU 作为统一系统协同工作 16。它将多 GPU NVLink 对等(P2P)编程模型从单个计算节点扩展到包括多个计算节点,每个节点都在独立的操作系统下运行 24。NVLink 网络利用 NVSwitch 芯片和 NVLink 交换机将多个 GPU 和服务器连接到一个大型的互联网络中,解决了 GPU 之间高速通信带宽和效率的问题 3。这使得 GPU 能够以 NVLink 的速度访问彼此的内存,有效地创建了一个具有共享内存的巨型加速器 24。NVLink 网络通过在由高速、低延迟的互连结构连接的大量 GPU 中实现高效的对等内存访问,从而实现了 GPU 加速计算的空前可扩展性,从而能够构建强大的超级计算机和人工智能基础设施。
6. GPU 利用率 vs. 饱和度
GPU 利用率和饱和度是衡量 GPU 工作负载的两个重要指标,但它们代表了 GPU 繁忙程度的不同方面 25。GPU 利用率通常由诸如 nvidia-smi 之类的工具报告,它表示在一段采样时间内,GPU 上是否至少有一个处理单元(SM)处于活动状态并执行任务 25。从本质上讲,它衡量的是 GPU 在一段时间内是否处于活动状态。然而,高利用率并不一定意味着 GPU 正在努力工作或其全部容量都被使用。即使只有一小部分 GPU 资源处于活动状态,利用率也可能显示为 100%。
另一方面,GPU 饱和度更能表明 GPU 的真实繁忙程度和负载 25。它表示 GPU 是否有超出其当前处理能力的额外工作,这些工作通常会排队等待。饱和度指标着眼于诸如 SM 占用率、浮点运算(FP32、FP16、Tensor Cores)激活以及内存带宽使用情况等方面 25。这些指标提供了对 GPU 实际使用了多少处理能力以及是否存在工作积压的更清晰的了解。因此,饱和度指标(通常由 dcgm-exporter 等工具提供)可以更准确地反映 GPU 的工作负载 25。
理解利用率和饱和度之间的区别对于准确评估 GPU 性能至关重要。仅仅关注利用率可能会产生误导,因为即使 GPU 的大部分容量处于空闲状态,利用率也可能很高 25。饱和度指标提供了对 GPU 资源实际使用情况的更全面视图。对于性能优化,尤其是在要求严苛的人工智能和高性能计算工作负载中,监控饱和度指标比仅仅查看利用率更有价值。如果在高利用率的情况下饱和度较低,可能表明系统的其他地方存在瓶颈,例如 CPU 或数据加载。
| 定义 | 代表意义 | 推荐使用场景 |
GPU 利用率(Utilization) | 采样周期内GPU至少有一个内核执行的时间百分比 | GPU被激活的时间比例,非资源占用率 | 快速状态监控,非性能瓶颈分析 |
GPU 饱和度(Saturation) | 流多处理器占用率、浮点运算激活率、内存带宽使用率等 | 反映GPU计算资源实际使用情况 | 性能调优、瓶颈定位 |