兜忆轩
我是 Cedric,做 compiler / GPU / backend systems。
这里记录我拆 AI 编译器、Triton/TVM/MLIR、CUDA kernel 和工程工具的过程。
文章分为 lab notes、concept notes 和 essays;lab notes 优先给出可复现代码。
从 Killed by Google 出发,拆解 Reader、Wave、Google+、Allo、Inbox、Stadia、Podcasts 和 Domains。关停不等于需求消失:从用户价值、迁移成本、商业模式、战略取舍与退出设计,寻找做产品前值得验证的问题。
从 CUDA 软件栈测试全貌出发,给出一套面向 Triton/GPU compiler 的 fuzz 测试选型、架构、CI 分层和落地方案。
从 SIMD 寄存器理解 TVM TIR 的 lanes,结合 Ramp、Broadcast、Shuffle 与 GPU warp lane 说明向量表达和访存。
TVM TIR 中 ramp 向量表达与向量化地址生成笔记
梳理 NVIDIA GPU 的 CUDA Core、Warp、Thread Block 与 SM,介绍线程调度、分支发散、寄存器及共享内存管理。
按结构化操作、矩阵运算、归约与变换分类,梳理 MLIR Linalg 经 Bufferization 和循环表示降级到 LLVM IR 的过程。
结合 Triton 矩阵乘法示例,解析 K 维分块累加、指针广播、内存访问以及 program 与 grid 的分工。
拆解缩放点积注意力的 Q、K、V 与矩阵维度,并用 Python 示例说明 Embedding、Prefill、逐 token 推理和 KV Cache。
从仿射变换的直观含义出发,介绍 MLIR Affine 方言如何表达循环与访存,以及其在循环优化中的作用。
通过宏、反射、元类、装饰器、模板和 AST 等示例,介绍代码生成与元编程的常见方式及其维护成本。