一、GPU计算概述:从游戏显卡到AI算力引擎

大家好,我是这门课的主讲人。今天咱们聊聊GPU计算的基础——说白了,就是搞清楚GPU这东西到底是怎么从“打游戏”变成“搞科研”的。

我最早接触GPU还是大学时期,那时候显卡就是用来玩《魔兽世界》的。谁能想到,十几年后,我每天的工作就是跟这些“游戏卡”打交道,让它们跑深度学习模型、做科学计算。嗯,这世界变化快。

1.1 GPU发展简史:三个关键节点

GPU的发展史,我习惯把它分成三个阶段。你想想看,每个阶段都对应着一次计算范式的跃迁。

  • 1999年,NVIDIA发布GeForce 256——这是业界第一款被称为“GPU”的芯片。当时它的卖点是硬件T&L(坐标变换与光照),说白了就是帮CPU分担图形渲染的脏活累活。我在翻老资料时看到,那时候的GPU连浮点运算都做不利索,但已经埋下了并行计算的种子。
  • 2006年,CUDA架构诞生——这是真正的转折点。NVIDIA把GPU从“专用图形处理器”变成了“通用并行计算平台”。我记得当时有个同事兴奋地说:“这玩意儿能跑C语言了!”没错,CUDA让开发者可以用熟悉的编程模型去调用GPU的算力,不用再跟图形API死磕。
  • 2012年,AlexNet引爆深度学习——这一年,Alex Krizhevsky用两块GTX 580显卡训练出了AlexNet,在ImageNet上碾压了传统方法。从此,GPU在AI领域的地位就再也无法撼动了。我后来在项目中复现过这个网络,说实话,用现在的卡跑起来快得离谱,但当时那两块卡可是烧了整整一周。

核心观点:GPU的发展史,本质上是“专用硬件”向“通用计算平台”演进的缩影。从图形加速到通用计算,再到AI专用加速,每一步都踩在了算力需求爆发的节点上。

1.2 GPU vs CPU架构对比:一个像工厂,一个像实验室

很多人问我:“GPU和CPU到底差在哪?”我通常用一个比喻来解释——CPU是几个顶尖科学家,GPU是一群流水线工人。

咱们来看一组数据:

对比维度 CPU GPU
核心数量 4-32个(高性能) 数千个(如A100有6912个CUDA核心)
控制单元占比 约40% 约5%
缓存大小 大(MB级) 小(KB级)
设计目标 低延迟、复杂逻辑 高吞吐、简单并行
典型功耗 65-150W 250-400W

为什么会这样?说白了,CPU要处理各种复杂的指令分支、中断、虚拟内存管理,所以它必须把大量晶体管用在控制逻辑和缓存上。而GPU呢?它假设所有线程都在做同样的事情——你想想看,渲染一帧画面时,每个像素的计算逻辑几乎一模一样。所以GPU把90%以上的晶体管都用来做计算单元,控制逻辑能省则省。

我在项目中遇到过一个典型场景:用CPU做矩阵乘法,1000x1000的矩阵,跑了十几秒。换成GPU,同样的计算,0.1秒就搞定了。但反过来,如果你让GPU去跑一个if-else分支特别多的逻辑,它的性能会急剧下降——因为那些“流水线工人”一旦遇到不同指令,就得排队等。

避坑指南:我曾经接手过一个项目,同事把整个业务逻辑都塞进GPU kernel里,结果性能还不如CPU。记住:GPU擅长的是“数据并行”,不是“任务并行”。如果你的计算有大量分支和依赖关系,老老实实用CPU。

1.3 GPU在AI/HPC中的应用场景

现在GPU的应用场景,我大致分成三类:

  • AI训练与推理——这是最火的方向。从BERT到GPT,从ResNet到Stable Diffusion,背后都是GPU在撑着。我个人习惯把训练比作“炼丹”,GPU就是那个炉子。炉子越猛,丹成得越快。
  • 科学计算(HPC)——分子动力学模拟、气象预报、石油勘探……这些领域对精度的要求极高,而且计算量动辄就是PetaFlops级别。我记得有一次帮一个气象团队优化代码,他们用CPU跑一个区域预报要3天,换成GPU+MPI,6小时就出结果了。
  • 图形渲染与实时处理——别忘了,这是GPU的老本行。现在游戏、影视特效、VR/AR都离不开GPU。不过随着光线追踪技术的普及,渲染的计算量又上了一个台阶。

一个值得注意的趋势:GPU正在从“通用计算”走向“专用加速”。比如NVIDIA的Tensor Core专门优化矩阵乘法,AMD的Matrix Core也类似。说白了,硬件设计越来越“偏科”了——但这恰恰是性能提升的关键。

1.4 主流GPU生态:三足鼎立

目前主流的GPU计算平台有三个,我简单说说它们的差异:

生态 代表硬件 编程模型 我的评价
NVIDIA CUDA A100, H100, RTX 4090 CUDA C/C++, cuDNN, TensorRT 生态最成熟,文档最全,但闭源
AMD ROCm MI250, MI300, RX 7900 HIP, rocBLAS, MIOpen 开源,兼容CUDA代码,但生态还在追赶
Intel oneAPI Data Center GPU Max SYCL, oneDNN, oneMKL 跨架构统一编程,但硬件起步晚

我个人习惯用CUDA做主力开发,毕竟生态摆在那里。但如果你做的是开源项目,或者需要跨平台部署,ROCm和oneAPI也是不错的选择。我曾经在一个项目中被迫从CUDA迁移到ROCm,因为客户用的是AMD的卡。说实话,迁移过程比想象中顺利——HIP的代码兼容性做得不错,大部分CUDA代码改个宏就能跑。

注意:不要盲目迷信某个生态。我见过太多团队因为“CUDA好用”就一股脑扎进去,结果客户要求AMD支持时傻眼了。我的建议是:核心算法层尽量用标准C++,把平台相关的代码封装好。这样换平台时,你只需要重写底层kernel,上层逻辑不用动。

知识体系总览

下面这张图是我自己画的,把本章的核心逻辑串起来了。你可以把它当作一张“地图”,后续章节都会围绕这些节点展开。

GPU计算概述 发展简史 CPU vs GPU架构 AI/HPC应用 主流GPU生态 GeForce 256 → CUDA → AI 工厂 vs 实验室 训练/推理/科学计算 CUDA / ROCm / oneAPI 图:本章知识体系结构

好了,第一章的内容就到这里。记住:理解GPU的“并行思维”比记住具体参数更重要。下一章我们会深入CUDA编程模型,到时候我会带大家写第一个kernel——嗯,那才是真正有意思的部分。

课后思考:如果你现在手头有一个需要加速的计算任务,你会怎么判断它适不适合用GPU?我的建议是:先看数据量,再看计算密度,最后看分支复杂度。三者都满足,大胆上GPU。

想要更多资料,联系可可