第一章: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的典型架构。几个关键点:
- GPC(图形处理簇):相当于GPU里的“大模块”,包含多个TPC
- TPC(纹理处理簇):包含多个SM
- SM(流式多处理器):最基本的计算单元,里面有CUDA核心、共享内存等
- HBM显存:高带宽内存,直接和GPU芯片封装在一起
每个SM里有几十到几百个CUDA核心。一个GPU有几十到上百个SM。所以总核心数能达到几千甚至上万。
这就是GPU能“一个人干几千人的活”的秘密。
1.7 从图形到计算的架构演进
GPU架构这些年经历了几个重要变化:
- 统一着色器架构(2006年):顶点着色器和像素着色器合并成统一的流处理器。不再区分图形和计算单元。
- 增加双精度计算单元(2008年):为了科学计算,GPU开始支持双精度浮点。
- 引入Tensor Core(2017年):专门为深度学习矩阵乘法设计的硬件单元。算力直接翻了几十倍。
- 增加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