挖掘新风口:面向 GPU 编程

在软件领域不断内卷的今天,一个新的领域正在蓬勃发展,那就是 AI 加持下的 GPU 编程,它可能是未来 IT 从业人员的又一个风口。

工信部《人工智能产业人才发展报告》:在中国,GPU 加速计算领域的人才供需比接近 1:10,尤其是高性能计算和 AI 推理优化方向,国内 GPU 相关岗位平均招聘周期长达 6 个月,远超其他技术岗位。

可能你有所不知,现在全球市值最大的公司,正是 GPU 的生产厂家——英伟达,市值 32 万亿人民币。

1999 年,英伟达上市,市值仅 10 亿美元。

2023 年,ChatGPT 引爆生成式 AI,H100 芯片供不应求,英伟达市值突破 1 万亿美元,市值增长 1000 倍。

2025 年,英伟达市值达 4.45 万亿美元,折合人民币约 32 万亿。

2025 年 1 月,DeepSeek 横空出世,打破了美西方对中国大模型的封锁,如今对方又开始对算力进行封锁,国内厂商也正在寻求国产替代的方案。

不过,诸如 DeepSeek 等国内大模型公司,主要使用的是 NVIDIA GPU 作为核心平台,而英伟达的计算平台又完全依赖 CUDA 生态,所以要想完全突破封锁,需要从零构建底层的 GPU 硬件架构和其配套的软件生态。

1. 初识 GPU

GPU 全名为 Graphics Processing Unit,又称视觉处理器、图形显示卡。GPU 负责渲染出 2D、3D、VR 效果,主要专注于计算机图形图像领域。后来人们发现,GPU 非常适合并行计算,可以加速现代科学计算,GPU 也因此不再局限于游戏和视频领域。

GPU 图形渲染效果示意动图

随着自动驾驶、智能机器人、脑科学、金融科技、工业检测、国防军事等大量应用深度学习、大模型等 AI 技术,对于算力的依赖就越来越明显了。

简单来说,传统的 CPU 就像一个大学生处理一个任务,GPU 就像几千个小学生同时处理这个任务的一部分,再最终把各自的结果合并起来,所以 GPU 在特定领域,尤其是纯数字计算方面的性能尤为突出

CPU 串行处理与 GPU 并行处理对比示意

2. GPU 进阶

传统的代码程序在 CPU 执行时,数据存放在内存之中,执行时通过 Bus 数据总线传输至 CPU 寄存器中,再进行位运算。

传统 CPU 程序的执行流程示意

而加入 GPU 程序的代码,其执行方式却大大不同了。GPU 程序执行前,需要将数据从内存拷贝到 GPU 的内存,即显存中,执行完成后还需要将数据再拷贝回内存中,如下图所示:

GPU 程序数据在内存与显存间的拷贝流程

3. 快速入门

假设你的电脑上已经准备好了 GPU 相关设备与运行环境,暂时没有也没关系,后续会有详细教程。我们来看这一段代码:

from numba import cuda

def cpu_demo(): 
    print("execute by cpu")

@cuda.jit
def gpu_demo(): 
    # GPU核函数
    print("execute by gpu")

def main(): 
    gpu_demo[1, 3]()
    cuda.synchronize()
    cpu_demo()

if __name__ == "__main__": 
    main()

执行结果如下:

execute by gpu
execute by gpu
execute by gpu
execute by cpu
  • 第 1 行,引入 cuda 库
  • 第 6 行,表示该函数 gpu_demo 是一个核函数,即运行在 GPU 设备上
  • 第 12 行,表示同时开启 3 个线程执行 gpu_demo 函数
  • 第 13 行,同步通知,告诉 CPU 等 GPU 执行完成之后,再执行后面的代码

下一节,我们将系统性地介绍 GPU 底层的软硬件相关知识:

  • CPU 工作原理
  • GPU 硬件知识
  • GPU 软件知识

推荐阅读

  • 数据库内存分页设计 | 从零开发数据库
  • 教你从零实现一门编程语言
  • 一个纯汇编语言写的操作系统—MenuetOS
  • 一款隐私安全的开源手机操作系统—LineageOS
  • 函数的帧栈调用过程 | 从零实现一门语言
  • hello world | 从零实现操作系统
  • 加载内核 ELF 文件 | 从零实现操作系统
  • 推荐一款从零搭建计算机的游戏—图灵完备
  • 计算机的另一种实现—生命细胞的游戏
  • 推荐几个有趣的开源项目
  • 一分钟带你了解 SQLite 数据库