土法炼钢兴趣小组的算法知识备份

GPU 高性能算子工程

文章导航

分类入口
gpuarchitecture
标签入口
#cuda#gpu#kernel#tensor-core#cutlass#triton#flash-attention#gemm#nsight#roofline#hpc

目录

深度学习框架把矩阵乘、注意力、归一化都包装成一行 Python,但真正决定训练吞吐和推理延迟的,是这些算子在 GPU 上跑得有多快。当默认算子不够快、形状不规则、需要融合、或要支持新精度时,工程师就得自己写或调 kernel。

这个领域的资料分布很零散:CUDA 官方文档讲 API 不讲怎么调优,论文(FlashAttention、CUTLASS)讲思想不讲完整工程,博客多停在”GEMM tiling 入门”。本系列试图把硬件模型、性能方法论、核心算子实现、编程框架与算子库工程连成一条可复现的学习路径,填补 transformer 系列(讲算法)、编译器与 MLIR 系列(讲编译)、大模型基础设施系列(讲框架与服务)之间”手写快算子”这一缺环。

推荐入口

一、这个系列要回答的五个问题

  1. 为什么同一个矩阵乘,朴素 kernel 和优化 kernel 能差几十倍? 差距来自访存而非算力:朴素实现反复读 global memory,优化实现用 shared memory tiling 与寄存器分块把数据复用起来。详见第二、三部分(内存层次、访存优化、GEMM)。

  2. 怎么知道一个算子还有多少优化空间,瓶颈到底在哪? 靠 Roofline 模型与 profiler,而不是直觉。先用 Nsight 测出算术强度、访存吞吐、occupancy,再决定优化方向。详见第二部分(Roofline、Nsight 调优)。

  3. Tensor Core 到底快在哪,为什么用上它反而经常更慢? Tensor Core 要求特定数据布局与精度,喂数据(访存与布局转换)跟不上算力就会空转。详见第三部分(Tensor Core 与 MMA、CUTLASS)。

  4. FlashAttention 为什么能在不近似的前提下省显存又提速? 它把注意力重写成分块的在线 softmax,避免落盘 \(N\times N\) 的注意力矩阵,用重算换访存。详见第三部分(FlashAttention)。

  5. 该手写 CUDA、用 Triton,还是调 CUTLASS / cuBLAS? 取决于形状规则性、融合需求、维护成本与目标硬件。本系列给出判断框架,而不是”哪个最好”的口号。详见第四、五部分(Triton、kernel fusion、算子库工程)。

二、篇目依赖关系与推荐阅读路径

全系列共五部分、21 篇。各篇按「问题—硬件/原理—代码—profiling 验证—边界」组织;动手实验集中在第 04、10、15 篇,调优工具箱集中在第 08 篇。

强依赖

flowchart TD
  A["01 全景:算子在 AI 栈的位置"] --> B["02 执行模型"]
  B --> C["03 内存层次"]
  C --> D["04 第一个 CUDA kernel"]
  D --> E["05 访存优化"]
  D --> F["06 occupancy 与延迟隐藏"]
  E --> G["07 Roofline"]
  F --> G
  G --> H["08 Nsight 调优"]
  H --> I["09 Reduction / Scan"]
  H --> J["10 GEMM 从朴素到 tiled"]
  J --> K["11 Tensor Core 与 MMA"]
  K --> L["12 CUTLASS / CuTe"]
  I --> M["13 softmax / layernorm 与融合"]
  J --> N["14 FlashAttention"]
  M --> N
  L --> O["15 Triton"]
  N --> O
  O --> P["16 kernel fusion"]
  P --> Q["17 量化与多精度算子"]
  Q --> R["18 通信与计算重叠"]
  R --> S["19 算子库工程"]
  S --> T["20 调试与数值正确性"]
  T --> U["21 趋势:TMA / Blackwell / 编译器协同"]

推荐阅读路径

三、目录与每篇一句话价值

第一部分:硬件模型与编程基础

第二部分:性能方法论

第三部分:核心算子实现

第四部分:编程框架与融合

第五部分:算子库工程与未来

四、读者定位与先修要求

维度 说明
主要读者 深度学习算子工程师、推理性能工程师、HPC 与 CUDA 开发者、AI 框架/算子库维护者
次要读者 想理解”为什么算子有快有慢”的训练/推理工程师、对 GPU 架构感兴趣的研究生
先修知识 熟悉 C/C++,了解基本并行概念;具备线性代数与深度学习基础;有 Python 与 PyTorch 使用经验更佳

五、写作方法与风格

六、关键参考资料

官方文档与规范(A 级)

论文(A 级)

开源项目(B 级)

七、与其他系列的关联

八、本系列的承诺与不承诺

承诺

不承诺


更新日期:2026-06-26
作者:ltl
系列相关:Transformer 与注意力机制 | 编译器与 MLIR | 大模型基础设施工程

同主题继续阅读

把当前热点继续串成多页阅读,而不是停在单篇消费。

2026-06-28 · gpu / architecture

【GPU 算子工程】CUTLASS 与 CuTe:模板化 GEMM 与布局代数

CUTLASS 用分层模板把 GEMM 拆成 device/kernel/threadblock/warp/instruction 五层,CuTe 用统一的 Layout 代数描述张量在各级存储的布局。讲清这套抽象如何在不手写 PTX 的前提下把 Tensor Core 喂到接近峰值。


By .