第1章:课程介绍与GPU基础
1.1 为什么我们要聊GPU?
先说说我自己的经历。大概20年前,我刚入行做图像处理。
那时候做一次Harmony校正,一张1080p的图要跑几十秒。
项目组几十个人,天天盯着进度条发呆。
为什么会这么慢?
因为当时全靠CPU硬扛。
CPU虽然聪明,能处理复杂逻辑,但一次只能干几件事。
校正算法里那种逐像素计算,说白了就是重复劳动。
让它干这个,简直就是让数学家去搬砖。
GPU不一样。
它天生就是为大规模并行计算设计的。
我至今记得第一次在GPU上跑通校正算法的那个下午——
处理时间从45秒降到了1.2秒。
整个团队都惊呆了。
你想想看,如果只是在笔记本上挥挥手,就能把一张4K图像的校正时间压到毫秒级,那意味着什么?
意味着实时校正不再是梦想。
意味着我们可以用软件方案替代昂贵的硬件校正盒。
意味着……嗯,这些就是我们这门课要讲的东西。
1.2 GPU的发展史——从游戏卡到计算卡
讲这部分,我得先承认一件事。
我最早接触GPU,也是因为打游戏。
1999年,NVIDIA发布了GeForce 256。
它第一次提出了GPU这个概念。
当时大家想的都是「这卡能跑多少帧」,没人在意它还能干嘛。
转折点发生在2007年。
NVIDIA推出了CUDA架构。
你可以把它理解成「教会GPU说人话」。
之前你想让GPU干活,得用图形学API——OpenGL、DirectX,
写个向量加法都要假装是在画三角形。
有了CUDA,直接用C语言就能写并行程序。
我个人的感觉是,那一年才是GPU计算的元年。
从那以后,GPU不再只是游戏卡,它变成了计算卡。
后面的发展就更快了:
- 2009年:Fermi架构,首次支持C++、双精度浮点
- 2012年:Kepler架构,能耗比大幅提升
- 2017年:Volta架构,引入Tensor Core,专门加速AI
- 2020年:Ampere架构,第三代Tensor Core + 光追核心
- 2022年:Hopper架构,Transformer专用引擎
你可能注意到了,这二十年GPU的核心数爆炸式增长。
从最早的几组流水线,到如今上万颗CUDA核心。
而我们的Harmony校正算法,正好可以把这个优势吃干榨净。
1.3 并行计算——为什么GPU能跑这么快
这里我直接给你画个对比。
CPU就像几个米其林大厨,做菜讲究工序复杂、色香味俱全。
GPU就像一千个帮厨,每人只切一根葱,一分钟切一千根。
校正算法里的大头是:
- 颜色查表:每个像素都要做一次3D LUT插值
- 网格变形:每个像素都要根据网格坐标做双线性插值
- 响应曲线映射:每个像素都要执行一次EOTF/PQ逆变换
这些操作有一个共同特征:
对像素A的处理,完全不影响像素B的结果。
这就是所谓的「数据并行」。
| 特性 | CPU | GPU |
|---|---|---|
| 核心数 | 4-16 | 1024-16384 |
| 频率 | 3-5 GHz | 1-2 GHz |
| 缓存 | 大(MB级) | 小(KB级) |
| 控制单元 | 复杂 | 简单 |
| 内存带宽 | 50-100 GB/s | 500-2000 GB/s |
| 适合场景 | 复杂逻辑、串行任务 | 简单运算、大规模并行 |
你看看内存带宽那一栏。
GPU的带宽是CPU的10倍以上。
这意味着什么?
意味着读取同样大小的图像数据,GPU只需要十分之一的时间。
对于需要逐像素读写的大尺寸校正来说,这就是质变。
我的小建议:
在设计GPU校正流水线时,一定要优先考虑「内存访问模式」。
我曾经花了两周优化一个核函数,发现瓶颈根本不在计算,
而在线程访问显存的模式是随机的——改成连续访问后,直接快了8倍。
1.4 课程目标与预备知识
这门课不是给你讲理论。
我们要的是「能跑、能优化、能上线」。
学完这门课后,你应该能做到:
- 理解Harmony校正的核心算法(3D LUT、网格变形、去伽马)
- 能用CUDA/C++把校正流水线跑在GPU上
- 能分析性能瓶颈并针对性优化(共享内存、内存合并、warp调度)
- 能处理4K@60fps的实时校正场景
至于预备知识,我不希望你卡在门槛上:
- C/C++基础:指针、数组、函数调用要熟练。如果你只会Python,你得先补补C++
- 图像处理基础:知道像素、通道、分辨率、色彩空间是怎么回事
- 一点线性代数:矩阵、向量、插值——高中数学水平就够了
- CUDA基础:我会在第一章快速回顾,但如果你完全零基础,建议先跑一遍NVIDIA的官方入门示例
⚠️ 避坑提醒:
我曾经收过一个学员,上来就问「我没写过C++,能不能直接学GPU校正」。
我当时的回答是:可以,但你会很痛苦。
因为你知道,GPU调试本身就很麻烦——一旦报错,有C++功底能帮你定位内存泄漏和Segmentation Fault。
所以,请务必先把C++搞熟。
1.5 本章知识结构
下面这张图,是我个人非常喜欢的一种总结方式。
它把本章的核心概念串在一起,方便你复习时快速回顾。
1.6 本章小结
说了这么多,我想用几句话收个尾:
- GPU发展了几十年,终于不再是那个只会画三角形的傻孩子了
- 并行计算的核心就一句话:把一个大任务拆成无数个小任务,同时执行
- GPU和CPU没有谁取代谁,它们是互补的——复杂逻辑给CPU,重复计算给GPU
- 这门课的目标很实在:让你拥有把校正算法跑在GPU上,并且跑得飞快的能力