张芷铭的个人博客

GPU 与 CPU 架构的根本差异决定了其在 AI 并行计算中的核心地位,数千计算核心 + 专用加速单元实现了百倍于 CPU 的吞吐量。

GPU 与 CPU 架构差异

维度CPUGPU
设计目标低延迟、复杂逻辑控制高吞吐、大规模并行
核心数量2-64 个复杂核心数千个简单核心
ALU 占比<30%>80%
适用场景分支密集、逻辑复杂任务数据并行、矩阵密集任务

SIMT 架构:GPU 采用单指令多线程(SIMT)模型,以 warp(32 线程)为单位调度执行,线程组织为 Grid→Block→Thread 三级层次。

AI 场景核心优势

大规模并行处理

AI 训练本质是大量矩阵运算,GPU 数千核心可同时处理不同数据元素。以 RTX 4090 为例:16384 个 CUDA 核心,83 TFLOPS 张量性能,原生支持 FP8/FP16/BF16 低精度计算。

专用硬件加速单元

Tensor Core:专为深度学习设计,单周期执行 4×4×4 GEMM 运算,相当于 64 个 FMA 操作。最新一代相比初代性能提升 60 倍。

硬件单元功能
CUDA Core标准浮点/整数运算
Tensor Core矩阵乘加加速
SFU超越函数(指数、对数、三角函数)
Warp 调度器线程调度分发

内存带宽匹配

HBM2 带宽达 256 GB/s,远超 GDDR6 的 64 GB/s。高带宽确保数据快速传输到计算单元,避免内存瓶颈。

PyTorch GPU 实现

CUDA 张量

1
2
3
4
5
6
7
8
9
import torch

# GPU 张量类型
x = torch.cuda.FloatTensor(3, 3)    # FP32
x = torch.cuda.HalfTensor(3, 3)     # FP16
x = torch.cuda.BFloat16Tensor(3, 3) # BF16

# 设备转移
x = x.to('cuda')

混合精度训练

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
from torch.cuda.amp import autocast, GradScaler

scaler = GradScaler()

with autocast():
    output = model(input)
    loss = loss_fn(output, target)

scaler.scale(loss).backward()
scaler.step(optimizer)
scaler.update()

分布式训练

1
2
3
4
5
6
# DDP 配置
torch.distributed.init_process_group(backend='nccl')
model = torch.nn.parallel.DistributedDataParallel(model)

# PyTorch Lightning
trainer = Trainer(accelerator="gpu", devices=8, strategy="ddp")

不同模型架构的 GPU 优化

模型类型优化技术
CNNim2col 转 GEMM、FFT 卷积
TransformerFlashAttention、KV 并行、张量并行
RNN/LSTM批量处理、向量化、时间步并行

发展趋势与挑战

技术突破

  • Blackwell 架构:双芯片设计,10 TB/s 带宽,2080 亿晶体管
  • HBM 容量扩展:80GB→141GB,带宽 2039 GB/s
  • 统一内存架构:CPU-GPU 共享地址空间,NVLink-C2C 900 GB/s

核心挑战

挑战现状
内存瓶颈LLaMA 4 109B 需 218GB 显存
功耗上升H100 达 700W,Blackwell 约 2000W
成本高企单模型月成本可达数百万美元

竞争格局

GPU + TPU + NPU + FPGA + ASIC 生态协作成为趋势。TPU 在特定场景效率更高,NPU 功耗更低(推理任务低 10 倍),但 GPU 通用性和生态优势显著。

Comments