Skip to content

算子优化(Operator Optimization) ​

专题类型:主学习路线 副标题:从计算图、Triton Kernel 到 CUDA 下探与端到端证据

页面导语 ​

算子优化的目标不是孤立地让某个 kernel 更复杂,而是在输入输出语义不变的前提下,减少不必要的数据移动、kernel launch 或硬件空转,并证明收益能传递到真实 workload。它承接性能优化已经定位出的局部瓶颈:性能优化回答“慢在哪里”,本专题回答“图、kernel 或执行路径怎样改,为什么值得改”。

路线从硬件成本与图变换进入 Triton 实现,再经过经典算子与 Attention,最后按需要下探到 CUDA。Part01 提供硬件、执行与编译前置;Part03 是 Triton 主实践;Part04 提供 CUDA、Tensor Core、warp、shared memory 与 runtime 的深层实现。Part00 与 Part02 只承担张量/调试基础和模型组件场景,不构成主路线。

算子优化学习路线

如何开始 ​

  • 希望理解“为什么慢”: Task0 → Task1,先用计算/访存和图结构判断候选。
  • 希望动手写 Triton: Task0 → Task2 → Task3,再进入 Task5 调优。
  • 希望优化 Attention 或推理路径: 回补 Task0/1 后进入 Task4;不要直接把服务级缓存或调度问题写成 kernel 问题。
  • 希望下探 CUDA: 完成 Task2/3/5 后进入 Task6,在有明确实现瓶颈时比较 PyTorch、torch.compile、Triton 与 CUDA。

CPU 可验证语义、边界、reference 与成本估算;真实 kernel 时间、autotune、Tensor Core、occupancy 和 backend 差异需要匹配 GPU。每次对照均固定 shape、layout、dtype、精度阈值、warmup、重复次数、软件版本与 baseline。

Task0–6 主学习路线 ​

Task / 主题要回答的问题主实践与验证出口专题正文入口
Task0 · 算子语义与硬件成本一个算子的时间主要花在计算、访存还是 launch/调度?Part01 · 01 dtype → 02 参数与 FLOPs → 03 GPU 架构;输出 FLOPs、bytes 与 roofline 假设01 算子性能心智模型
Task1 · 图级优化与融合判断哪些图节点能消除、重排或融合,何时会因寄存器压力或动态形状失效?Part01 · 09 编译与图优化 → 19 算子融合 → Part04 · 18 CUDA Graph / JIT;输出 graph rewrite、lowering 假设与融合候选03 图级优化、融合与 Kernel 组合
Task2 · Triton 编程模型与正确性如何将 reference 语义写成正确的 block-level kernel?Part01 · 08 CUDA / Triton 模型 → 18 Triton Block → Part03 · 01 Vector Add → 02 Fused SwiGLU → 03 RMSNorm02 Kernel 语义与内存
Task3 · 经典 Kernel 与数据路径GEMM、Softmax、Norm 如何通过 tile、归约、片上复用与向量化减少访存?Part03 · 04 GEMM → 06 Softmax → 06.5 设计模式;输出 reference / Triton 对照03 融合与 Kernel 组合
Task4 · Attention 与模型关键算子RoPE、Attention、分页状态和分块算法怎样改变读写路径?Part01 · 14 FlashAttention 显存模型 → Part02 · 20 FlashAttention 模拟 → Part03 · 07 RoPE → 08 FlashAttention → 09 PagedAttention04 执行与硬件约束
Task5 · Profiling、autotune 与 CUDA 下探如何用指标区分计算、访存、occupancy 与 launch 瓶颈,并选择下一个改动?Part00 · 17 Profiling → Part01 · 13 瓶颈分析 → 23 Tensor Core → 24 SRAM 优化 → Part03 · 05 Autotune → 12 内存模型与调试05 成本模型与 Profiling
Task6 · 综合项目与实现路径决策何时选 PyTorch、torch.compile、Triton 或 CUDA,如何证明局部收益进入模型 workload?Part03 · 10 Quantization → 11 Multi-LoRA → 13 LLaMA3 Block 项目 → Part04 · 15 CUDA Kernel → 16 Shared Memory → 21 CUDA / Triton / PyTorch06 基准测试与项目验证

Part00–04 对应关系 ​

来源 Part在算子优化中的定位主要小节 / 资产对应 Task
Part00 · 前置知识最小张量、reference、调试与 profiling 习惯05 Tensor、17 Profiling、19 调试、20 性能账本支撑 Task0 / 2 / 5,不单独形成 kernel 路线
Part01 · 硬件、数学与系统性能模型、存储层次、执行模型、编译与融合的机制前置01–03、08–09、12–19、23–24、30–32Task0–5 的原理底座
Part02 · PyTorch 算法实战模型组件和真实 workload 场景04 Attention、05 Block、20 FlashAttention 模拟、40–41 低比特、66–67/73–74 结果证据主要支撑 Task4 / 6;不替代 kernel 实现
Part03 · Triton 算子开发主实践线:从正确 kernel 到项目01–13、设计模式、内存调试、FAQTask2–6 的主要实现资产
Part04 · CUDA 与系统优化CUDA 下探与实现路径比较15–16、02.1 Bank Conflict、03 MMA、04 Warp、17–18、21Task1 / 5 / 6 的深层实现与选型

算子优化知识地图

正文与项目证据 ​

专题正文负责从语义、图变换、数据路径、硬件执行到证据的判断链;不逐页复述 Part03 的实现代码。Task1 在正文 01、03–06 中依次处理 graph rewrite、lowering、legalization、schedule 与 backend 约束,不再把它们维护成另一条并列路线。

证据层必须回答的问题典型记录
正确性输出是否与 reference 在阈值内一致?输入分布、shape、dtype、误差与边界样本
微基准kernel 是否在相同输入下更快或更省?latency、bandwidth、FLOPs、peak memory、autotune 配置
profiler收益或退化来自什么执行路径?kernel 调用、occupancy、访存、launch、trace
workload模型或服务是否真正受益?baseline/candidate、质量、端到端指标、环境与失败记录

按需回补与跨专题入口 ​

当你遇到的问题应进入的专题算子优化在其中的角色
不知道整体慢在哪里性能优化、性能分析接收已定位的局部 compute / memory 瓶颈
请求、KV 或服务调度导致变慢推理优化优化明确暴露的 Attention、RoPE、量化或模型组件 kernel
多卡通信、all-to-all 或扩展效率问题通信与并行仅处理确认位于关键路径的本地计算/通信 kernel
低比特表示、artifact 与质量问题量化与压缩实现或分析 quantization kernel,不替代量化策略与部署决策

阅读入口 ​

Released under the MIT License.