1. GPU计算概述:GPU与CPU架构对比、GPU在并行计算中的优势、GPU应用领域

各位同学好,我是这门课的主讲。今天咱们聊聊GPU计算的基础。说实话,我入行那会儿,GPU还只是用来打游戏的。谁能想到,十几年后它成了AI和科学计算的香饽饽?

先问大家一个问题:为什么CPU和GPU长得不一样?你拆开电脑看看,CPU那边散热器小,GPU那边散热器大。这不是巧合,背后是两种完全不同的设计哲学。

1.1 CPU与GPU架构对比

CPU,全称中央处理器。它像个全能冠军,什么活都能干。但GPU,全称图形处理器,它是个偏科生——只擅长并行计算。

我画个简单的对比表,大家一看就明白:

对比维度 CPU GPU
核心数量 4-16个(高性能) 数千个
核心复杂度 复杂(乱序执行、分支预测) 简单(顺序执行)
缓存大小 大(L1/L2/L3) 小(L1/L2为主)
内存带宽 50-100 GB/s 500-2000 GB/s
适用场景 串行任务、操作系统 大规模并行计算

为什么会这样?说白了,CPU的设计目标是「快」——让单个任务跑得飞快。它把大量晶体管用在了控制逻辑和缓存上。GPU的设计目标是「多」——同时处理成千上万个任务。它把晶体管几乎全用在了计算单元上。

我记得刚做GPU架构时,有个老工程师跟我说:「CPU是法拉利,GPU是公交车。法拉利能拉一个人跑得飞快,公交车能拉一车人慢慢走。」这个比喻虽然糙了点,但道理是对的。

1.2 GPU在并行计算中的优势

GPU的优势,说白了就三个字:并行度

你想想看,一个图像有1920×1080个像素。如果让CPU一个一个处理,得等到猴年马月?GPU的做法是:把每个像素分配给一个线程,几千个线程同时干活。这就是所谓的SIMT(单指令多线程)架构。

我在项目中遇到过这样一个案例:一个矩阵乘法运算,CPU跑了2.3秒,GPU只用了12毫秒。加速比接近200倍。当然,不是所有任务都能达到这个效果。GPU擅长的是「数据并行」——同样的操作,应用到大量数据上。

GPU加速的核心条件:

  • 计算密集度高(算术运算多,访存少)
  • 数据并行度高(可以拆成独立子任务)
  • 控制逻辑简单(少分支、少依赖)

这里有个坑,我得提醒大家。我曾经接手过一个项目,团队把一段串行代码直接扔到GPU上跑,结果比CPU还慢。为什么?因为数据传输开销太大了。你把数据从CPU内存搬到GPU显存,算完再搬回来,这来回一趟可能就要几毫秒。如果计算量不够大,这时间就白花了。

避坑指南:我曾经见过一个新手,把循环里每次迭代都做一次cudaMemcpy。结果GPU利用率不到5%,大部分时间都在等数据。记住:减少数据传输,尽量批量处理

1.3 GPU应用领域

GPU的应用,现在可以说是「三足鼎立」:图形渲染、科学计算、AI。

图形渲染

这是GPU的老本行。从早期的固定管线到现在的可编程着色器,GPU一直在进化。我刚开始做图形时,用的是DirectX 9,那时候的着色器只能用汇编写。现在好了,CUDA、OpenCL、Vulkan,选择多得很。

图形渲染的核心是光栅化——把3D模型变成2D像素。每个像素的计算是独立的,天然适合GPU。再加上纹理映射、光照计算、阴影生成,这些全是并行计算的活。

科学计算

这个领域我参与过不少项目。比如气象模拟、分子动力学、流体力学。这些计算有个共同点:用网格把空间离散化,每个网格点的计算是独立的。

我记得有个做地震波模拟的项目,原来用CPU集群要跑3天。我们用GPU加速后,缩短到6小时。客户当时就震惊了。嗯,这种成就感,做技术的都懂。

AI

说到AI,GPU简直是「天选之子」。深度学习的两大核心操作——卷积和矩阵乘法,全是GPU的强项。你想想看,一个卷积层要对输入图像的每个位置做同样的操作,这不就是数据并行吗?

个人经验:我建议初学者先从图形渲染入手,因为它的数据流更直观。等你理解了GPU的「线程-块-网格」层次结构,再去做AI和科学计算,会顺手很多。

最后说一句:GPU不是万能的。它擅长的是「吞吐量优先」的任务,而不是「延迟优先」的任务。如果你要做实时控制、操作系统调度,还是老老实实用CPU。选对工具,比什么都重要。

下一章,咱们聊聊CUDA编程模型。我会带大家写第一个GPU程序,感受一下「万核齐发」的快感。