第一章:GPU的前世今生——从图形加速卡到通用计算巨兽

大家好,我是你们的讲师。今天咱们聊聊GPU的“发家史”。

很多人觉得GPU就是用来打游戏的。其实不然。我刚开始接触GPU时,它还是个“偏科生”——只会画图。谁能想到,十几年后它成了AI时代的算力引擎?

这中间到底发生了什么?

来,我带你们走一遍。

1.1 最初的GPU:图形加速卡

上世纪90年代,CPU要负责所有事情。包括画图。那时候的3D游戏,画面惨不忍睹。为什么?因为CPU根本忙不过来。

你想想看,CPU要处理逻辑、管理内存、响应中断……还得逐像素计算颜色。这就像让一个数学家同时当搬运工——效率能高吗?

于是,有人想了个办法:把图形计算单独拎出来

1999年,NVIDIA发布了GeForce 256。这是业界第一款自称“GPU”的芯片。它的核心任务就是加速图形渲染。说白了,就是帮CPU分担画图的活。

关键转折点:GPU从“辅助芯片”变成了“专用处理器”。它不再是个可有可无的配件,而是图形系统的核心。

我记得当时做项目,老板问我:“这GPU能跑通用计算吗?”我笑了笑说:“别想了,它连整数除法都做不了。”——那时候的GPU,确实只是个“画图工具”。

1.2 可编程管线的诞生

早期的GPU是固定管线的。什么意思?就是芯片里焊死了渲染流程。你只能调参数,不能改算法。

这就像给你一台傻瓜相机——只能按快门,不能调光圈、快门速度。

2001年,NVIDIA GeForce 3引入了可编程顶点着色器。2002年,ATI Radeon 9700加入了可编程像素着色器。

嗯,这里要注意:可编程着色器是GPU走向通用的第一步

为什么?因为着色器本质上就是个小型处理器。它能执行你写的代码。虽然指令集很有限,但至少“能编程”了。

我在项目中遇到过一个问题:用固定管线渲染水面效果,怎么调都不真实。后来换成可编程着色器,自己写了个菲涅尔效应算法——效果立竿见影。这就是“可编程”的力量。

1.3 从图形到通用:CUDA的诞生

2006年,NVIDIA发布了CUDA。这是GPU历史上最重大的事件之一。

CUDA是什么?简单说,它让GPU能跑C语言写的通用程序。不再是只能画图了。

为什么会这样?因为GPU的架构天然适合并行计算。一个GPU有几千个核心,每个核心都能独立执行任务。而CPU只有几个核心。

你想想看:CPU是法拉利——跑得快,但只能拉一个人。GPU是大巴车——跑得慢点,但能拉几十个人。

对于某些任务(比如矩阵乘法、图像处理),大巴车反而更快。

我的建议:理解GPU并行性的关键在于“数据并行”。同一段代码,在不同数据上同时执行。这是GPU的强项。

我曾经用CUDA加速过一个图像滤波算法。CPU版本跑了200毫秒,GPU版本只用了3毫秒。当时我盯着屏幕愣了好几秒——这差距也太夸张了。

1.4 通用计算GPU(GPGPU)时代

CUDA之后,GPU开始“跨界”。

2007年,NVIDIA发布了Tesla系列——专门用于计算的GPU。没有显示输出,纯算力卡。

2009年,AMD推出了Stream SDK(后来改名叫ROCm)。

2010年,OpenCL标准发布,试图统一异构计算编程模型。

这时候的GPU,已经不再是“图形加速卡”了。它变成了通用计算加速器

年代 事件 意义
1999 GeForce 256 首个GPU概念
2001 可编程着色器 GPU可编程化
2006 CUDA发布 通用计算起点
2007 Tesla计算卡 专用计算GPU
2012 AlexNet用GPU训练 AI时代开启

1.5 深度学习引爆的算力需求

2012年,AlexNet在ImageNet竞赛中夺冠。它用了两块GTX 580 GPU训练。

从那以后,AI社区彻底拥抱了GPU。

为什么深度学习需要GPU?因为神经网络的核心操作是矩阵乘法和卷积。这些操作天然适合并行计算。

一个典型的卷积层:输入几百张特征图,每张图用几十个卷积核扫描。这会产生几万甚至几十万个独立计算任务。CPU一个个算?得等到猴年马月。GPU几千个核心一起上?几毫秒搞定。

避坑指南:我曾经犯过一个错误——以为GPU能加速所有算法。后来发现,分支多、数据依赖强的算法,在GPU上反而更慢。GPU适合的是“数据并行”任务,不是“任务并行”。

1.6 现代GPU架构概览

现在的GPU长什么样?我画个图给你们看。

现代GPU架构概览 GPU 芯片 GPC 0 TPC 0 TPC 1 SM 0 SM 1 GPC 1 TPC 2 TPC 3 SM 2 SM 3 GPC 2 TPC 4 TPC 5 SM 4 SM 5 内存控制器 内存控制器 内存控制器 HBM 显存 HBM 显存 HBM 显存 GPC (图形处理簇) TPC (纹理处理簇) SM (流式多处理器) 内存控制器

这张图展示的是现代GPU的典型架构。几个关键点:

  • GPC(图形处理簇):相当于GPU里的“大模块”,包含多个TPC
  • TPC(纹理处理簇):包含多个SM
  • SM(流式多处理器):最基本的计算单元,里面有CUDA核心、共享内存等
  • HBM显存:高带宽内存,直接和GPU芯片封装在一起

每个SM里有几十到几百个CUDA核心。一个GPU有几十到上百个SM。所以总核心数能达到几千甚至上万。

这就是GPU能“一个人干几千人的活”的秘密。

1.7 从图形到计算的架构演进

GPU架构这些年经历了几个重要变化:

  1. 统一着色器架构(2006年):顶点着色器和像素着色器合并成统一的流处理器。不再区分图形和计算单元。
  2. 增加双精度计算单元(2008年):为了科学计算,GPU开始支持双精度浮点。
  3. 引入Tensor Core(2017年):专门为深度学习矩阵乘法设计的硬件单元。算力直接翻了几十倍。
  4. 增加RT Core(2018年):光线追踪专用硬件。虽然主要用于图形,但也展示了GPU的“专用化”趋势。

我个人觉得,Tensor Core是GPU历史上最重要的创新之一。它让AI训练速度提升了几个数量级。没有Tensor Core,现在的ChatGPT可能还在用CPU训练呢。

1.8 总结:GPU的进化逻辑

回顾GPU的发展史,你会发现一条清晰的逻辑线:

  • 第一阶段:固定功能图形加速 → 解决“画图慢”的问题
  • 第二阶段:可编程着色器 → 解决“不能自定义”的问题
  • 第三阶段:CUDA通用计算 → 解决“只能画图”的问题
  • 第四阶段:AI专用加速 → 解决“算力不够”的问题

每一步都是被需求推着走的。游戏需要更真实的画面 → 催生了可编程管线。科学计算需要并行算力 → 催生了CUDA。AI需要海量矩阵运算 → 催生了Tensor Core。

说白了,GPU的进化就是一部“被需求倒逼”的历史。

核心观点:GPU从图形加速卡变成通用计算巨兽,不是因为某个天才的灵光一现,而是因为“并行计算”这个需求一直在增长。GPU恰好站在了正确的赛道上。

好了,第一章就到这里。记住这个进化逻辑,后面讲架构细节时你会更容易理解——为什么GPU要这样设计?答案往往在历史里。


公众号:蓝海资料掘金营,微信deep3321