Skip to content

算子优化(Operator Optimization)

专题类型:主学习路线 主服务目标:Kernel 性能与端到端收益

页面导语

本专题面向希望把一个数学算子实现成可测量、可调优 kernel 的学习者。你会从算子语义和输入输出开始,逐步理解 tile、访存、融合、硬件执行和 autotune,最后把局部 kernel 结果接回模型 Block 与端到端 workload。想按性能现象选方向时,可使用算子优化判断手册;想沿一个 kernel 项目连续推进时,可阅读算子优化问题链

路线以 Part 03 的 Triton 实现为主线,Part 01 提供硬件与执行模型,Part 04 补充 CUDA 和系统机制。学习重点不是记住某个“最快配置”,而是建立一条可复查的判断链:语义正确 → 数值对齐 → kernel 可执行 → microbenchmark 有证据 → 端到端收益成立。

算子优化:从数学语义到端到端收益

算子优化先保证语义和数值正确,再通过 kernel、访存和执行证据判断局部改进是否真正传递到端到端 workload。

如何开始

推荐先具备 Part 02 的 Tensor、Attention 和 Block 基础,再按 Task0–6 推进。第一次学习时先完成 Task0–2,建立“输入输出—访存—布局”的共同口径;再进入 Task3–5,理解融合、硬件执行和搜索;最后用 Task6 完成项目验证。

没有 GPU 时,可以先完成算子语义、边界处理、CPU 正确性和成本模型;GPU 阶段再验证真实 kernel 时间、编译成本、autotune、显存和端到端收益。CPU 结果是机制与正确性证据,不应写成 GPU 加速结论。

  • Part01:解释硬件、并行层次、访存和性能约束;
  • Part03:实现和调试 Triton kernel,是本路线的主要实践入口;
  • Part04:补充 CUDA、异步执行、共享内存、Tensor Core 和系统级优化;
  • 原有编译与图优化:负责 graph rewrite、IR、lowering 和编译器决策,不与本专题合并。

如果只是想定位瓶颈,先看性能分析;如果问题首先表现为请求延迟或 KV Cache,再转到推理优化

Part 01–04 的支撑关系

Part 01、Part 03 和 Part 04 不是三条并列路线,而是分别承担“解释机制、实现 kernel、下探执行”的职责;Part 02 作为模型组件桥接层,把 RMSNorm、SwiGLU、Attention 和 Block 放回 Transformer 结构。学习时先用 Part 01 建立判断语言,再以 Part 03 完成主要实践,遇到模型组件时回看 Part 02,遇到硬件执行或系统级问题时进入 Part 04。

来源在算子优化路线中的职责主要回答的问题进入时机
Part 01硬件与执行机制基础数据经过哪些存储层、线程层次和指令路径?Task0–4 作为机制前置或回补
Part 02模型组件桥接一个算子在 Transformer Block 的哪一段,哪些组件适合融合或分块?Task0、Task1、Task3、Task6 按需回补
Part 03Triton 主实践线如何把语义写成 kernel、进行融合、调试和 autotune?Task1–6 作为主要实现入口
Part 04CUDA 与系统深化如何控制更底层的执行、异步搬运、共享内存和系统代价?Task4–6 作为执行深化

因此,Part 01 和 Part 02 的理论、模拟或 CPU 结果不能直接替代 GPU 实测;Part 03 的 Triton kernel 是主实践证据,负责写出和调优 Kernel;Part 04 的 CUDA 实验负责解释 Kernel 如何在硬件上执行,并扩大适用范围。

主学习线与验证出口

Task0–6 是路线节点;表中的 Part 01 是机制支撑,Part 02 是模型组件桥接,Part 03 是主要实现入口,Part 04 是底层执行和系统扩展入口。下表按“要回答的问题 → 学习入口 → 验证出口”组织;专题正文负责解释机制和判断条件,不替代 Notebook 中的实现与 benchmark。

算子优化学习路线:从语义正确到端到端验证

上图先给出 Task0–6 的学习顺序;下表再提供每个任务的具体 Notebook、项目入口和正文索引。

Task学习内容主学习线 / 项目入口学习顺序专题正文
Task0算子语义、GPU 执行与性能边界Part 02 · 00 PyTorch WarmupPart 01 · 08 编程模型Part 01 · 15 CUDA 执行模型数学语义 → 并行执行 → 性能指标01 为什么需要算子优化
Task1Triton Kernel 基础Part 02 · 01 RMSNormPart 01 · 18 Triton Block 模型Part 03 · 01 Triton 向量加法Part 03 · 04 Triton GEMMtile → load/store → kernel → 正确性02 Kernel 语义与内存访问
Task2访存、布局与片上存储Part 01 · 16 Warp / Block / Shared MemoryPart 01 · 24 SRAM 优化Part 03 · 12 Triton 内存模型global memory → SRAM → layout → occupancy02 Kernel 语义与内存访问
Task3算子融合与模型组件 KernelPart 02 · 02 SwiGLUPart 02 · 04 AttentionPart 01 · 19 算子融合基础Part 03 · 03 融合 RMSNormPart 03 · 06 融合 Softmax;扩展 Part 02 · 20 FlashAttention 模拟Part 03 · 08 FlashAttention组件结构 → 依赖 → 中间张量 → fusion → 端到端03 融合与 Kernel 组合
Task4Tensor Core、CUDA 与异步执行Part 01 · 23 Tensor Core 深入Part 04 · 03 Tensor Core MMAPart 04 · 04 Warp Level PrimitivesPart 04 · 16 CUDA Shared Memoryinstruction → warp / block → shared memory → kernel04 CUDA 执行与硬件约束
Task5Autotune、Profiling 与 Kernel 选择Part 02 · 44 自动调优框架Part 03 · 05 Triton 自动调优Part 04 · 17 CUDA StreamPart 04 · 18 CUDA Graph;扩展 Part 01 · 13 性能分析与瓶颈定位候选参数 → 搜索 → trace → 异步执行05 成本模型与性能分析
Task6Block 与端到端项目验证Part 02 · 05 LLaMA3 BlockPart 03 · 13 Triton Llama3 Block 项目Part 04 · 21 CUDA / Triton / PyTorch 对照Part 02 · 74 Profiling 驱动的端到端优化算子 → Block → 实现路径 → workload → 决策06 基准测试与项目验证

算子优化知识地图:语义、数据路径、硬件执行与验证证据

如何使用专题正文

正文页不是 Task 的逐页复述,而是把多个 Notebook 中的机制串成一条判断链。第一次学习时按 01→06 阅读;遇到具体问题时,直接进入对应正文页,再回到 Task 表中的 Notebook 完成验证。

正文职责主要回答的问题对应路线位置
01–02 建立共同口径算子要保持什么语义,数据如何经过 kernel 和存储层?Task0–2
03–04 解释优化机制为什么 fusion、Tensor Core、shared memory 或 stream 可能有效?Task3–4
05 解释证据与成本如何选择配置,并把 trace 解释成瓶颈证据?Task5
06 收束项目结论如何在固定 workload 下比较、复现并决定 accept / tune / reject?Task6

核心与扩展分级

核心路径以 Part 03 的 Triton 实现为主,先验证算子语义和数值正确性,再比较固定 shape 下的 kernel;扩展路径引入 Part 01 的硬件解释和 Part 04 的 CUDA、动态 shape、Tensor Core、异步执行与端到端 workload。节点变少、单个 kernel 变快或编译成功,都不能单独证明系统收益。

Task核心路径扩展路径学习顺序运行环境
Task0Part 01 · 08、15 与指标定义不同 GPU 执行模型对照语义 → 执行CPU · PyTorch
Task1Triton 01、04 与 Part 01 · 18CUDA kernel、Tensor Coretile → kernelCPU 语义验证;可选单 GPU · Triton
Task2Part 01 · 16、24 与 Triton 12layout、occupancy、异步搬运memory → layoutCPU 逻辑验证;单 GPU · Triton
Task3Part 01 · 19、Triton 03/06FlashAttention、复杂 fusion依赖 → fusion单 GPU · Triton / CUDA
Task4Part 01 · 23、Part 04 · 03/04/16Tensor Core、warp、shared memorykernel → execution单 GPU · CUDA
Task5Triton autotune 与 Part 04 · 17/18多 shape、Stream、CUDA Graph、Profiling搜索 → 异步执行 → 归因单 GPU · Triton / CUDA
Task6Triton Block 项目与 Part 04 · 21 对照Triton / CUDA / PyTorch 实现路径与端到端比较局部 → 系统 → 路径选择单 GPU · Triton / CUDA / Profiler

按需回补:Part 01 共享前置

这些 Part 01 小节在本专题中只承担共享基础角色;Part 02 的模型组件页面和 Part 03 / Part 04 的主线入口已经列在上面的 Task 表中。它们可以服务于推理、显存和编译路线,不能把其中的理论或模拟直接写成某个 GPU 的实测结论。

P1 前置本路线使用它回答什么不能直接推出什么
Part 01 · 08 编程模型Part 01 · 15 CUDA 执行模型Triton、CUDA、PyTorch 和 GPU 执行边界某个实现一定更快
Part 01 · 16 Warp / Shared MemoryPart 01 · 23 Tensor Core并行层次、同步和矩阵指令一个 tile 配置适合所有 GPU
Part 01 · 19 算子融合Part 01 · 24 SRAM 优化中间张量、数据驻留和读写代价fusion 一定降低端到端延迟
Part 01 · 13 性能分析与瓶颈定位建立 kernel 和系统热点证据单次 trace 能代表所有 workload

Part 03 和 Part 04 的主线入口已经列在上面的 Task 表中;不需要为了进入专题而先完成两个 Part 的全部内容。只有当当前 Task 的机制或实验出现知识缺口时,再回补对应页面。

跨专题入口

大模型架构负责 Attention、MoE、MLA 等结构本身;本专题在结构落到 kernel、fusion、layout 或执行计划时介入。编译与图优化负责图变换、IR、lowering 和 backend 选择;本专题负责具体 kernel 的语义、访存和执行证据。推理和显存优化负责服务指标与资源预算,Task6 再把局部 kernel 结果接回端到端验证。

如果问题首先表现为请求延迟或 KV Cache,转到推理优化;如果重点是峰值显存、重算或卸载,转到显存优化;如果需要系统化定位热点,先看性能分析;如果问题涉及图变换、IR 或 lowering,转到编译与图优化

项目产出

先完成 CPU-first 的参考实现、数值对齐和边界测试,再进行 GPU microbenchmark;确认 kernel 有收益后,再用固定 workload 检查端到端延迟、吞吐、显存和编译成本。每次实验至少记录输入 shape、dtype、基线实现、候选实现、GPU、后端版本、warmup、迭代次数和证据等级。

最小项目产物包括:正确性对照、kernel 测试表、配置与编译信息、GPU microbenchmark、端到端对照、失败条件和最终 accept / tune / reject 结论。

算子优化证据流:从候选实现到项目决策

环境与验证

按实验层级选择环境,不需要为了阅读 Part 01 或 CPU 机制验证提前安装完整 CUDA 工具链。

实验层级环境组合适合验证的内容不能直接推出的结论
CPU 机制base.txt + torch-cpu.txt参考实现、shape、mask、数值误差、成本模型GPU 带宽、真实 kernel 时间和 Tensor Core 收益
GPU Tritongpu.txtTriton kernel、显存、CUDA 时间、固定 shape 对照其他 GPU 或所有 workload 都更快
CUDA 深化gpu.txt + Part 04 CUDA 工具链Stream、异步搬运、Shared Memory、Tensor Core 路径单个 microbenchmark 必然带来端到端收益
Profilingprofiling.txt + GPU 环境trace、kernel 热点、occupancy、访存和等待一次 trace 可以代表所有输入分布

Part 03 的 Triton 实践通常需要 GPU;Part 04 的 CUDA 页面还需要匹配的 CUDA 编译器和驱动。每次更换 GPU、PyTorch、CUDA、Triton 或编译选项,都应重新完成 smoke test,并在报告中记录版本。

CPU 可以验证数学语义、边界处理、输出对齐和部分成本模型;真实 Triton/CUDA kernel、autotune、Tensor Core、CUDA Graph 和性能结论需要 GPU。没有匹配 workload 或真实 trace 时,只能记录为优化假设,不能写成通用结论。

图像资产与维护规则见算子优化图册

Released under the MIT License.