GPU
什么是GPU
GPU(图形处理器) 是专门设计用于加速图形渲染和高性能并行计算的处理器。它与CPU(中央处理器)在设计目标和应用场景上有显著区别
CPU vs GPU
区别
特性 | CPU | GPU |
---|---|---|
核心数量 | 少 | 多 |
核心复杂度 | 复杂(单核性能强) | 简单(单核功能精简) |
并行能力 | 弱(适合顺序处理) | 极强(适合大规模并行) |
延迟敏感度 | 低延迟优先 | 高吞吐优先 |
典型用途 | 操作系统、日常应用 | 游戏、AI训练、3D渲染 |
架构图
什么是SM、CUDA Core、Tensor Core?
以GH100为例
GH100 架构图
SM架构图
定义
-
GPC(Graphics Processing Cluster)
- 定义:GPC是NVIDIA GPU架构中的一个较大的计算单元。一个GPU通常由多个GPC组成。GPC是图形处理核心的集合,负责图形渲染的多种任务。
- 作用:GPC负责大范围的图形渲染任务,支持多个流处理单元的并行计算。它包含了许多资源来处理并行工作负载,提供了强大的图形处理能力。
-
TPC(Texture Processing Cluster)
-
定义:TPC是GPU中的一个子模块,它负责纹理处理和其他相关计算工作。每个GPC包含多个TPC。
-
作用:TPC用于管理着色器和纹理相关的计算操作,尤其在处理复杂的图像渲染时起着关键作用。它负责通过纹理单元对数据进行操作。
-
-
SM(Streaming Multiprocessor)
- 定义:SM是NVIDIA GPU架构中的核心计算单元,负责处理CUDA线程。一个GPC包含多个SM。作用:每个SM拥有一组CUDA核心,能够处理并行计算任务。SM是GPU执行并行计算的基本单位,控制着程序的执行,管理线程调度和内存访问。
-
Tensor Core
- 定义:Tensor Core是NVIDIA GPU中用于加速矩阵运算(特别是在深度学习和AI计算中)的硬件单元。
- 作用:Tensor Core专门用于加速深度学习中的矩阵乘法、卷积操作等,特别适用于训练和推理中的高效计算,支持混合精度计算(如FP16和INT8)。它大幅度提高了神经网络等算法的计算效率。
-
CUDA Core
- 定义:CUDA Core是GPU中的基本计算单元。每个CUDA Core执行一个线程,可以进行简单的计算任务(例如加法、乘法等)。
- 作用:CUDA Core主要用于处理并行计算任务,它们是GPU的核心计算单元,能够执行图形渲染和通用计算(GPGPU)。每个SM内部都有多个CUDA Core,SM的数量直接影响GPU的并行计算能力。
层级关系
- GPU:最顶层,是整个图形处理单元,负责图形渲染和计算任务。
- GPC:GPU由多个GPC组成,每个GPC处理图形渲染的大部分任务。
- TPC:每个GPC包含多个TPC,负责纹理处理等更细化的任务。
- SM:每个TPC包含多个SM,SM是实际执行计算的单元。
- CUDA Core:每个SM包含多个CUDA Core,CUDA Core是最基础的计算单元。
- Tensor Core:Tensor Core不是每个CUDA Core的一部分,而是存在于SM内部,专门用于加速深度学习任务。
为什么AI训练会选择GPU?
1. 并行计算架构:SIMD vs. 多线程
- CPU架构(多线程 + 复杂控制逻辑)
- 核心设计:CPU核心数量少(通常4-16核),但每个核心高度复杂,支持分支预测、乱序执行等逻辑,适合处理串行任务和复杂控制流。
- 延迟优化:通过多级缓存(L1/L2/L3)降低单线程延迟,但对大规模并行任务效率低。
- GPU架构(SIMD + 高吞吐)
- 核心设计:GPU包含数千个精简核心(如NVIDIA A100有6912 CUDA核心),采用单指令多数据(SIMD)模式,所有核心同步执行相同指令,但处理不同数据。
- 吞吐优化:通过牺牲单线程性能换取高吞吐量,适合处理海量同质化任务(如矩阵乘法)。
AI训练需求:神经网络训练的核心是大规模矩阵运算(如卷积、矩阵乘法),这些运算可分解为大量独立的并行子任务,GPU的SIMD架构能同时处理数万个并行操作,效率远超CPU。
2. 内存带宽与数据吞吐
- CPU内存瓶颈
- CPU依赖DDR内存(带宽约50-100 GB/s),且需要频繁通过总线与外部设备(如显卡)交换数据,延迟高。
- 复杂的缓存机制在数据密集型任务中易导致缓存未命中(Cache Miss)。
- GPU显存优势
- GPU配备高带宽显存(如HBM2e,带宽达1.5-3 TB/s),是CPU的30倍以上,能快速读写神经网络参数和输入数据。
- 数据本地性:显存直接与计算核心相连,减少数据传输延迟。
AI训练需求:训练深度网络需要加载数GB的数据集,并在每次迭代中更新数百万至数十亿参数,GPU的高带宽显存显著减少了数据搬运时间。
3. 专用计算单元:Tensor Core与混合精度
- CPU通用性限制 CPU的浮点运算单元(FPU)虽然精度高,但缺乏针对AI计算的优化,难以高效执行低精度(FP16/INT8)运算。
- GPU专用加速器
- Tensor Core(NVIDIA)或Matrix Core(AMD):专为矩阵乘法设计的硬件单元,支持混合精度(FP16/FP32)和稀疏计算,加速速度可达传统CUDA核心的10倍。
- 低精度计算:AI训练可通过降低数值精度(如FP16)减少计算量,同时GPU能保持高吞吐。
AI训练需求:混合精度训练(如FP16+FP32)已成为主流,Tensor Core可大幅提升训练速度(如ResNet-50训练时间从几天缩短到几小时)。
4. 大规模并行与批处理(Batch Processing)
- CPU的串行瓶颈 即使使用多线程,CPU也难以同时处理超过物理核心数量(如16核)的任务,而AI训练需要同时处理数百至数千个样本(Batch)。
- GPU的批处理优化
- GPU可通过数据并行(Data Parallelism)同时处理大批量样本(如Batch Size=1024),每个核心处理不同样本的子任务。
- 结合模型并行(Model Parallelism),可将大型网络拆分到多个GPU上运行。
AI训练需求:批量梯度下降(Batch Gradient Descent)要求同时计算大批量数据的梯度,GPU的并行架构天然适配此需求。
5. 软件生态支持
- CUDA与计算库 NVIDIA的CUDA平台和cuDNN、cuBLAS等加速库,为AI框架(如PyTorch、TensorFlow)提供了底层优化,直接调用GPU硬件资源。
- 自动并行化 现代AI框架能自动将计算图分解为并行任务,无需开发者手动管理线程。
矩阵乘法代码对比示例
import time
import numpy as np
import torch
# 设置矩阵大小 (增大矩阵尺寸以突出GPU优势)
size = 10000 # 10,000 x 10,000 矩阵
device = 'cuda' if torch.cuda.is_available() else 'cpu'
# 使用NumPy生成CPU数据 (CPU版本)
def cpu_calculation():
a = np.random.rand(size, size)
b = np.random.rand(size, size)
start = time.time()
np.dot(a, b)
cpu_time = time.time() - start
return cpu_time
# 使用PyTorch生成GPU数据 (GPU版本)
def gpu_calculation():
a = torch.rand(size, size, device=device)
b = torch.rand(size, size, device=device)
# 同步确保准确计时
if device == 'cuda':
torch.cuda.synchronize()
start = time.time()
torch.matmul(a, b)
if device == 'cuda':
torch.cuda.synchronize()
gpu_time = time.time() - start
return gpu_time
# 运行测试
cpu_time = cpu_calculation()
print(f'CPU 计算时间: {cpu_time:.4f} 秒')
gpu_time = gpu_calculation()
print(f'GPU 计算时间: {gpu_time:.4f} 秒')
# 性能对比
speedup = cpu_time / gpu_time
print(f'GPU 比 CPU 快 {speedup:.1f} 倍')
在Google的colab 免费T4实例下运行:
CPU 计算时间: 39.8329 秒
GPU 计算时间: 0.6391 秒
GPU 比 CPU 快 62.3 倍
为什么大模型预训练更青睐H100集群?
4090 VS H100
明显4090性价比更高嘛
参数项 | RTX 4090 | H100 | 关键差异说明 |
---|---|---|---|
架构 | Ada Lovelace | Hopper | H100采用新一代计算优化架构 |
制程工艺 | TSMC 4N | TSMC 4N | 相同制程节点 |
CUDA Core数量 | 16,384 | 14,592 | 4090物理核心更多 |
Tensor Core数量 | 512(第四代) | 456(第四代) | 支持稀疏计算加速 |
SM数量 | 128 | 114 | 直接影响并行计算单元密度 |
GPC数量 | 11 | 8 | 架构分组策略不同 |
FP32峰值算力 | 82.6 TFLOPs | 67.9 TFLOPs | 4090基础浮点性能更高 |
FP16 Tensor算力 | 1,321 TFLOPs | 1,979 TFLOPS | H100专用AI计算优势显著 |
TF32 Tensor算力 | 660 TFLOPs | 989 TFLOPs | H100稀疏计算优化 |
显存容量 | 24GB GDDR6X | 80GB HBM3 | H100显存容量翻3倍以上 |
显存带宽 | 1,008 GB/s | 3,350 GB/s | H100带宽超3倍 |
互联带宽 | PCIe 4.0 x16 / 可选NVLink双卡 | NVLink 4.0(900 GB/s) | H100多卡扩展性更强 |
解释
- 专为AI和深度学习优化
- H100 采用 Hopper 架构,专为 高效的AI训练和推理 设计,集成了 Tensor Core 和 Transformer Engine,这些专用硬件单元极大地加速了大规模深度学习模型的训练,特别是在矩阵运算和高效处理大规模神经网络时,表现远超过
- RTX 4090。Tensor Core 和 Transformer Engine 在H100中进行了深度优化,能高效地执行 混合精度运算(如FP16和TF32)和 大规模矩阵乘法,这些是大模型训练中至关重要的操作。 2.更大的显存与带宽
- H100 配备了 80GB HBM3显存,并拥有极高的内存带宽(2,000 GB/s)。对于大模型训练,尤其是 NLP模型 和 计算密集型任务,GPU的显存容量和带宽是非常关键的。大规模训练任务需要处理 巨量数据,这些数据必须能在GPU内存中高效存取和处理。
- RTX 4090 配备了 24GB GDDR6X显存,显存虽然大,但与H100相比仍然存在差距,尤其在需要大批量数据的深度学习训练中,显存和带宽的限制会影响整体性能。
- 高并发与数据中心优化
- H100 支持 高并发任务处理,并且非常适合与多个 H100集群 搭配使用,以进行 分布式训练。大规模的AI训练往往需要多个GPU协同工作,H100在多个GPU之间的调度和协同工作方面进行了优化,适合企业级的数据中心。
- RTX 4090 更适合个人使用或者中小规模的计算任务,它虽然有强大的图形和AI加速能力,但在 大规模集群 上的扩展性和协调性不如H100。
- 计算密集型工作负载的优化
- H100 采用了最新的 HBM3显存技术 和 支持高效AI推理,使其在训练 超大规模深度学习模型(如 GPT、BERT 等模型)时表现出色。其高带宽内存、大量的 Tensor Cores、以及 改进的矩阵乘法加速,都能显著提升模型训练效率。
- RTX 4090 虽然在某些单机负载下表现非常强劲,但相比H100,其 AI训练能力 仍然受限于显存大小、内存带宽和优化算法等方面。
- 功耗与散热
- H100 的功耗(约700W)虽然较高,但它是为大规模AI训练任务设计的,能够通过多GPU集群扩展处理能力,适合数据中心和高性能计算需求。
- RTX 4090 虽然功耗相对较低(450W),但它更多是为 游戏 和 创作者 等使用场景优化,不能在大规模并行计算和集群计算中发挥最佳效能。
- 数据中心和分布式训练
- H100 支持 NVIDIA NVLink 和 PCIe 5.0,适合在数据中心的 集群环境中使用,并且能够支持更复杂的分布式训练架构。
- 大模型的训练往往需要 多卡并行训练,并且需要 高带宽、低延迟的通信 来确保数据在多个GPU之间的快速交换,而 H100 的设计更加适合这种场景。
GPU通信技术
标准冯诺依曼架构,需要经过PCIE SWITCH、 CPU 、内存
P2P技术
定义
P2P(Peer-to-Peer)技术是指一种网络架构,其中每个设备(或节点)都可以直接与其他设备进行通信,而无需经过中心化的服务器或中介。这种技术的核心特点是去中心化,所有参与者在网络中都具有对等的地位,可以互相交换资源或信息
应用
文件共享:BitTorrent:是最著名的P2P文件共享协议之一。用户可以通过P2P技术直接从其他用户的设备上下载文件,而不是从一个中心化的服务器下载。这使得大文件的分发更加高效。
加密货币(如比特币):比特币和其他加密货币使用P2P技术来验证交易和管理账本。用户之间可以直接进行交易,而不需要依赖中央银行或金融机构。
视频通话和语音通信:Skype、Zoom等视频通话应用在早期使用了P2P技术来建立直接的通信链路,减少延迟并提高通话质量。虽然现在许多平台已经转向更复杂的服务器架构,但P2P依然在一些应用中使用。
去中心化存储:一些基于P2P的存储平台,如IPFS(InterPlanetary File System),通过将文件分散存储在多个节点上,而不是集中在一个数据中心,提供更加去中心化、安全的存储方式。
共享经济:共享单车、共享住宿等共享经济平台,在某种程度上也使用P2P技术,使得物品或服务直接在用户之间交换,减少了中介的费用和复杂性。
流媒体和在线游戏:一些在线游戏和流媒体平台,特别是那些需要高效资源分配的应用,利用P2P技术来分担服务器的负担,实现更平稳的用户体验。例如,某些在线多人游戏会采用P2P方式来减少延迟和提高数据传输速度。
PCIe设备拓扑图
lstopo命令(hwloc包)
GPU 的p2p应用
GPUDirect Peer-to-Peer(P2P) 技术主要用于单机GPU间的高速通信,它使得GPU可以通过PCI Express直接访问目标GPU的显存,避免了通过拷贝到CPU host memory作为中转,大大降低了数据交换的延迟。
gpu p2p测试
什么是NvLink?
通过GPUDirect P2P技术可以大大提升GPU服务器单机的GPU通信性能,但是受限于PCI Expresss总线协议以及拓扑结构的一些限制,无法做到更高的带宽,为了解决这个问题,NVIDIA提出了NVLink总线协议
发展
NVLink控制器由3层组成,即物理层(PHY)、数据链路层(DL)以及交易层(TL)。下图展示了P100(16年发布) NVLink 1.0的各层和链路:

下图是HGX-1/DGX-1使用的8个V100(17年发布)的混合立方网格拓扑结构,我们看到虽然V100有6个NVlink通道,但是实际上因为无法做到全连接,2个GPU间最多只能有2个NVLink通道100G/s的双向带宽,而GPU与CPU间通信仍然使用PCIe总线,CPU间通信使用QPI总线。仍存在一定局限性。

什么是NVSwitch?
为了解决混合立方网格拓扑结构的问题,NVIDIA在今GTC 2018上发布了NVSwitch。类似于PCIe使用PCIe Switch用于拓扑的扩展,NVIDIA使用NVSwitch实现了NVLink的全连接。NVSwitch作为首款节点交换架构,可支持单个服务器节点中 16 个全互联的 GPU,并可使全部 8 个 GPU 对分别以 300 GB/s 的惊人速度进行同时通信。这 16 个全互联的 GPU (32G显存V100)还可作为单个大型加速器,拥有 0.5 TB 统一显存空间和 2 PetaFLOPS 计算性能。
PCIE版
两块GPU相连的黑色方块板子,初级的NVlink桥接器
SXM接口版
最下方六个绿色基板的就是nvswtich芯片
发展

H100 全互联

GPUDirect RDMA
历史背景
GPUDirect P2P和NVLink技术可以大大提升GPU服务器单机的GPU通信性能,当前深度学习模型越来越复杂,计算数据量暴增,对于大规模深度学习训练任务,单机已经无法满足计算要求,多机多卡的分布式训练成为了必要的需求,这个时候多机间的通信成为了分布式训练性能的重要指标。
什么是DMA
DMA(Direct Memory Access,直接内存访问) 是直接内存访问(DMA)方式,是一种完全由硬件执行I/O交换的工作方式。在这种方式中, DMA控制器从CPU完全接管对总线的控制,数据交换不经过CPU,而直接在内存和IO设备之间进行。DMA工作时,由DMA 控制器向内存发出地址和控制信号,进行地址修改,对传送字的个数计数,并且以中断方式向CPU 报告传送操作的结束。使用DMA方式的目的是减少大批量数据传输时CPU 的开销。采用专用DMA控制器(DMAC) 生成访存地址并控制访存过程。优点有操作均由硬件电路实现,传输速度快;CPU 基本不干预,仅在初始化和结束时参与,CPU与外设并行工作,效率高
日常应用
硬盘和SSD:硬盘和固态硬盘通常使用DMA来高效地读写数据,避免CPU参与每次读写操作,从而提高磁盘的访问速度。
网络卡和网卡驱动:在网络数据传输时,网络适配器通过DMA技术将网络数据直接传输到内存,减少了CPU的处理负担,提升了网络吞吐量。
音频和视频设备:音频和视频处理器使用DMA将音频和视频数据直接传输到内存,或从内存中传输到输出设备,保证实时性和流畅性。
FPGA游戏外挂
RDMA
RDMA则是在计算机之间网络数据传输时Offload CPU负载的高吞吐、低延时通信技术。

RDMA可以简单理解为利用相关的硬件和网络技术,服务器1的网卡可以直接读写服务器2的内存,最终达到高带宽、低延迟和低资源利用率的效果
常见模块
RDMA实现

目前RDMA的实现方式主要分为InfiniBand和Ethernet两种传输网络。而在以太网上,又可以根据与以太网融合的协议栈的差异分为iWARP和RoCE(包括RoCEv1和RoCEv2)
RDMA在GPU多机互联的应用
