Skip to content

第 01 章:什么是 GPU 内核,为什么选 Triton ​

1. 什么是 GPU?什么是 GPU 内核? ​

  • GPU:一种处理器,擅长把同一个计算在大量数据上并行地重复执行。AI、游戏、科学计算之所以能大幅加速,靠的就是它。
  • GPU 内核(kernel):一段针对 GPU 结构量身定制的函数——它知道数据怎么切分、怎么搬进片上快内存、怎么并行算——目的是把 GPU 的算力榨干。

一句话:内核 = 算法 + 对硬件结构的利用。同样的数学(比如矩阵乘),写成内核和写成纯 Python 循环,速度可以差成千上万倍。

2. 为什么要学写内核?直接用 PyTorch 不行吗? ​

大多数时候 PyTorch(背后是 cuBLAS/cuDNN)够用了。但当出现以下情况,你就需要自己写内核:

  • 算子融合(fusion):把 softmax → dropout → matmul 这种链条揉进一个内核,省掉中间结果在 DRAM 上的反复读写。PyTorch 的 torch.compile 会尝试做,但定制内核能做得更极致。
  • 新算子:Flash Attention 当年就是没人提供高效实现,靠手写内核横空出世的。
  • 省显存:大词表的语言模型里,cross-entropy 的 logits 张量巨大,定制内核能避免物化整张 logits。

3. 为什么选 Triton 而不是 CUDA? ​

TritonCUDA
语言Python(像写 Python 函数)C/C++
平台Nvidia + AMD 都支持仅 Nvidia
开源开源闭源
生态较小众主流、资料多
速度接近 CUDA 性能(社区经验值)速度金标准
上手要学的少要学的多(线程、共享内存、同步都要手动管)
系统仅 LinuxLinux / Windows

关键卖点:Triton 用 Python 写,但能拿到接近 CUDA 的性能。它把"线程怎么分组、共享内存怎么分、怎么同步"这些 CUDA 里必须手动的脏活,编译器自动帮你干了——你只需关心"数据怎么切块、每个块做什么"。

⚠️ 注意:Triton 官方只在 Linux 上原生支持。Windows 上通常要装 WSL2,或租用云端 Linux GPU 实例。

4. 学这份教程需要什么基础? ​

必须:

  • Python 编程
  • 基本计算机常识:内存 vs 处理器、字节 vs 比特、浮点数
  • 线性代数(矩阵乘、点积)
  • 微积分(偏导、链式法则——反向传播要用)
  • 常见深度学习算子:matmul、softmax、attention、LayerNorm、dropout、cross-entropy
  • PyTorch 基本用法

最好有:

  • 大 O 记号(分析内存/计算开销时用得到)
  • 编译期 vs 运行期的概念(tl.constexpr 就涉及这个)
  • 一点数据结构与算法基础

不会也没关系,遇到不懂的先跳过,看完代码再回来看概念,会顺畅很多。

5. 这份指南和其它资料比有什么不一样? ​

原仓库作者踩过的坑(也是市面上多数 Triton 教程的通病):

  • 内核跑不过测试(有 bug)
  • 比 PyTorch 还慢
  • 默认你已经懂 CUDA
  • 不解释在干什么
  • 故意搞复杂
  • 只有文字或只有视频

本教程的目标恰好相反:从零讲、配大量图、每行代码讲为什么、确保你能跟着跑通。

6. 一条最重要的学习原则 ​

看懂 ≠ 会做。 观看和抄代码不算掌握。你必须自己从零动手写一个(最好多个)足够复杂的内核,才能说"我理解了"。


认知地基搭好了。下一章补一点 GPU 硬件常识,然后就开始写第一个内核。→ 第 02 章:GPU 架构基础