一、GPU概述与硬件架构

1.1 GPU发展简史:从图形卡到计算巨兽

GPU的发展史,说白了就是一部「被逼着进化」的历史。

1999年,NVIDIA发布了GeForce 256,第一次提出了「GPU」这个概念。那时候它就是个图形加速器,专门处理三角形和纹理。我刚开始接触GPU时,它还是个纯粹的「游戏卡」,没人想过拿它做计算。

转折点出现在2006年。NVIDIA推出了CUDA架构,GPU正式从「图形专用」走向「通用计算」。我记得当时有个同事兴奋地跟我说:「这玩意儿能跑浮点运算了!」说实话,当时我半信半疑——一个画图的芯片,能算科学计算?

结果呢?后来的故事大家都知道了。GPU成了AI时代的「算力发动机」。从Fermi到Hopper,每一代架构都在刷新计算密度的上限。

关键里程碑:

  • 1999年:GeForce 256,首个GPU
  • 2006年:CUDA发布,GPU通用计算元年
  • 2010年:Fermi架构,首个完整计算架构
  • 2017年:Volta架构,Tensor Core诞生
  • 2022年:Hopper架构,Transformer引擎

1.2 GPU vs CPU:为什么GPU更适合并行计算?

这个问题我经常被问到。你想想看,CPU和GPU的设计哲学完全不同。

CPU是「全能选手」。它要处理各种任务——操作系统调度、网络协议栈、数据库查询……所以它把大量晶体管用在了控制逻辑和缓存上。一个现代CPU核心,控制单元占了约40%的面积,缓存又占了30%,真正做计算的ALU只有一小块。

GPU呢?它是「专才」。它假设所有任务都是高度并行的,所以把90%以上的晶体管都做成了计算单元。一个GPU有几千个核心,每个核心都很简单,但数量多啊。

我做个比喻:CPU就像10个博士,什么难题都能解;GPU就像10000个小学生,只会做加减乘除,但人多力量大。遇到大规模矩阵乘法这种「简单但量大」的任务,GPU完胜。

对比维度 CPU GPU
核心数量 4-64个 数千个
控制逻辑占比 ~40% ~5%
缓存占比 ~30% ~5%
计算单元占比 ~30% ~90%
适用场景 串行、复杂逻辑 并行、数据密集

避坑指南:我曾经遇到一个项目,团队想把所有计算都扔到GPU上。结果发现数据搬运的开销比计算本身还大。记住:GPU擅长的是「计算密集型+数据并行」的任务,不是所有问题都适合上GPU。

1.3 NVIDIA GPU架构演进:从Tesla到Hopper

这一路走来,每一代架构都有它的「性格」。我挑几个印象深刻的说说。

Tesla架构(2007年)

这是CUDA的「开山之作」。说实话,当时的设计很粗糙——没有统一的缓存,线程调度也简单。但它证明了GPU可以跑通用计算。我记得第一次在Tesla上跑通一个矩阵乘法时,那种兴奋感至今难忘。

Fermi架构(2010年)

Fermi是第一个真正为计算设计的架构。它引入了ECC内存、统一的L2缓存、真正的C++支持。我有个朋友说:「Fermi让GPU从玩具变成了工具。」这话一点不夸张。

Kepler架构(2012年)

Kepler主打「能效比」。它引入了SMX单元,每个SMX有192个CUDA核心。但说实话,Kepler的调度器设计有点问题,导致实际利用率不高。我在做分子动力学模拟时,经常要手动调优才能跑满。

Maxwell架构(2014年)

Maxwell是「效率之王」。它把功耗控制得非常好,同时引入了动态并行技术。嗯,这里要注意:Maxwell的L1和共享内存是分离的,编程时得小心。

Pascal架构(2016年)

Pascal是「大显存时代」的开端。它支持NVLink和统一内存,显存容量也飙到了16GB以上。我做过一个基因组分析项目,Pascal的16GB显存刚好够用,再小一点就尴尬了。

Volta架构(2017年)

Volta是「AI专用」的里程碑。它引入了Tensor Core,专门做矩阵乘加运算。我记得第一次看到Tensor Core的算力数据时,简直不敢相信——比普通CUDA核心快了10倍以上。

Turing架构(2018年)

Turing加入了RT Core(光线追踪核心)和新的Tensor Core。对于图形渲染是革命性的,但对计算来说,Turing更像是一个「过渡产品」。我个人觉得,如果不是做光线追踪,Volta其实更划算。

Ampere架构(2020年)

Ampere是「全能选手」。它支持了第三代Tensor Core、稀疏计算、MIG(多实例GPU)。MIG这个功能我特别喜欢——可以把一块A100切成7个独立的GPU实例,做开发测试时非常方便。

Hopper架构(2022年)

Hopper是「大模型专用」。它引入了Transformer引擎、DPX指令集、第四代NVLink。说白了,就是为GPT这类大模型量身定做的。我最近在调一个千亿参数模型,Hopper的FP8计算能力确实给力。

架构演进核心逻辑:

  1. 计算单元越来越多:从128个到18432个CUDA核心
  2. 专用硬件越来越强:Tensor Core、RT Core、Transformer引擎
  3. 显存越来越大:从1GB到80GB HBM3
  4. 互联越来越快:从PCIe 2.0到NVLink 4.0

1.4 GPU核心规格解读:看懂参数背后的含义

很多新手拿到GPU规格表,看到一堆数字就懵了。我教你几个关键点。

CUDA核心数量:不是越多越好。核心多了,调度和内存带宽跟不上,反而会浪费。我见过有人买了RTX 4090做科学计算,结果因为内存带宽不够,性能还不如A100。

显存带宽:这个比显存容量更重要。带宽决定了数据搬运的速度。计算公式:带宽 = 显存频率 × 位宽 / 8。比如A100的HBM2e,带宽高达2TB/s,这才是真正的「高速公路」。

Tensor Core:如果你做AI训练,Tensor Core的数量比CUDA核心更重要。一个Tensor Core一次可以完成4×4矩阵乘加,效率极高。

NVLink:多卡互联时,NVLink的带宽决定了扩展效率。我建议:如果预算允许,尽量用NVLink而不是PCIe,延迟能低一个数量级。

注意:不要只看峰值算力。实际应用中,内存带宽、延迟、调度效率都会影响最终性能。我曾经被一张「纸面算力很高」的卡坑过——跑起来才发现,实际利用率不到30%。

知识体系结构图

GPU知识体系结构图 GPU概述与硬件架构 发展简史 1999-2022 从图形到计算 GPU vs CPU 并行 vs 串行 专才 vs 全能 架构演进 Tesla → Hopper 9代架构 核心规格 CUDA核心 显存带宽 Fermi Kepler Maxwell Pascal Volta Turing Ampere Hopper 核心:并行计算 + 专用硬件 + 高带宽内存 从通用计算走向AI专用加速

小结

GPU架构的演进,说白了就是「算力密度」和「专用化」两条主线。从Tesla到Hopper,每一代都在解决上一代的瓶颈。我个人觉得,理解这些架构背后的设计思想,比记住具体参数更重要。

你想想看,为什么Volta要引入Tensor Core?因为AI训练中矩阵乘法占了90%以上的计算量。为什么Hopper要加Transformer引擎?因为大模型时代,注意力机制成了瓶颈。每一代架构的改进,都是针对实际应用场景的「精准打击」。

嗯,这一章的内容就到这里。记住:GPU不是万能的,但在它擅长的领域,它是无可替代的。


专注资料整理