一、GPU计算概述:GPU与CPU的区别、GPU的发展简史、GPU在科学计算中的角色
1.1 为什么我们需要GPU?
先问大家一个问题:你手头的CPU,核心数一般是多少?4核?8核?顶天了16核。但你知道一块普通的GPU有多少个核心吗?几千个。没错,是几千个。
我刚开始接触GPU计算时,也觉得这数字夸张。但后来在项目中处理一个图像渲染任务,CPU跑了整整两分钟,换成GPU后,0.5秒就出结果了。那一刻我才真正理解——CPU和GPU,根本就是两种思维。
核心区别一句话总结:
- CPU:像一位全能教授,什么题都能解,但一次只能解几道。
- GPU:像几千个小学生,每人只会做加减法,但可以同时算几万道题。
说白了,CPU擅长复杂、串行的任务,GPU擅长简单、并行的任务。你想想看,渲染一张4K图片,每个像素的计算其实都一样——无非是颜色、光照、坐标变换。这种场景,GPU就是天生的王者。
1.2 CPU vs GPU:一张表看懂
| 对比维度 | CPU | GPU |
|---|---|---|
| 核心数量 | 4~16核(高性能可达64核) | 数千核(如RTX 4090有16384个CUDA核心) |
| 设计目标 | 低延迟、高吞吐的串行处理 | 高吞吐、大规模并行处理 |
| 缓存结构 | 大缓存(L1/L2/L3) | 小缓存(主要靠共享内存) |
| 控制单元 | 复杂(分支预测、乱序执行) | 简单(SIMT模式) |
| 适用场景 | 操作系统、数据库、逻辑控制 | 图像处理、矩阵运算、深度学习 |
| 功耗 | 低(几十瓦) | 高(几百瓦) |
嗯,这里要注意:GPU并不是万能的。我见过不少新手,一上来就想把整个程序扔到GPU上跑,结果发现比CPU还慢。为什么?因为数据传输有开销。你把数据从内存拷到显存,算完再拷回来,这来回一趟可能就花掉几十毫秒。如果计算量不够大,这时间就白费了。
1.3 GPU发展简史:从游戏卡到计算卡
GPU的历史,其实挺有意思的。我把它分成三个阶段来讲:
第一阶段:萌芽期(1990s - 2000s)
最早的GPU,说白了就是显卡。1999年,NVIDIA发布了GeForce 256,第一次提出了"GPU"这个概念。那时候的GPU只干一件事——渲染图形。我记得当时玩《雷神之锤3》,一块TNT2显卡就能让画面流畅到飞起。但没人想过拿它做科学计算。
第二阶段:觉醒期(2006 - 2012)
转折点来了。2006年,NVIDIA推出了CUDA架构。这玩意儿的意义,怎么说呢——就像给一群只会画画的工人,突然发了一本《数学手册》。
CUDA让GPU可以执行通用的计算任务,不再局限于图形渲染。我当年第一次用CUDA写了一个矩阵乘法程序,看到加速比达到50倍时,整个人都愣住了。那感觉,就像你开惯了自行车,突然换上了火箭。
个人经验:我在2010年做过一个项目,用GPU加速分子动力学模拟。当时CPU版本跑一个纳秒需要3天,GPU版本只用了1.5小时。但代价是什么?调试CUDA代码花了我整整两周。嗯,并行计算的坑,后面我会慢慢讲。
第三阶段:爆发期(2012 - 至今)
2012年,AlexNet在ImageNet上大杀四方,用的就是GPU。从此,深度学习+GPU成了黄金搭档。NVIDIA的Tesla系列、V100、A100、H100,一块比一块猛。现在的H100,单卡就能达到2000 TFLOPS的算力——这数字,放在20年前简直是科幻小说。
1.4 GPU在科学计算中的角色
GPU现在到底在科学计算里干什么?我列几个典型场景:
- 深度学习:训练和推理,GPU是绝对主力。没有GPU,GPT-4这种模型根本不可能训练出来。
- 分子动力学:模拟蛋白质折叠、药物分子筛选。我有个朋友在制药公司,他们用GPU把筛选速度提升了100倍。
- 气象预报:数值天气预报需要解大量偏微分方程。GPU并行计算,让预报精度和速度都上了一个台阶。
- 金融风控:蒙特卡洛模拟、期权定价。华尔街早就用GPU来跑风险模型了。
- 生物信息学:基因序列比对、蛋白质结构预测。AlphaFold2就是跑在GPU上的。
避坑指南:我曾经犯过一个错误——以为GPU能加速所有计算。结果把一个逻辑密集型的排序算法扔到GPU上,跑出来的时间比CPU还慢3倍。后来才明白:GPU只适合数据并行、计算密集型的任务。如果你的程序里充满了if-else分支判断,那还是老老实实用CPU吧。
1.5 知识体系总览
下面这张图,是我自己梳理的GPU计算知识体系。你可以把它当作整个课程的地图:
1.6 本章小结
这一章,我们聊了三个核心问题:
- GPU和CPU到底有什么区别?——一个擅长串行复杂任务,一个擅长并行简单任务。
- GPU是怎么发展起来的?——从游戏卡到通用计算卡,CUDA是关键转折点。
- GPU在科学计算里扮演什么角色?——深度学习、分子模拟、气象预报、金融风控……几乎无处不在。
我个人觉得,理解GPU计算的核心,不在于记住那些技术参数,而在于建立一种并行思维。你看到一个问题时,能不能下意识地想:这个能不能拆成几千个小任务同时算?如果能,那GPU就是你的最佳选择。
下一章,我们会深入GPU的硬件架构,看看那些几千个核心到底是怎么组织起来的。嗯,到时候我会分享一个我踩过的坑——关于线程束(warp)的,保证让你印象深刻。