先让第一个 kernel 跑起来
从 unary / binary 开始,学会 Grid、Block、指针偏移和 INT8 对称量化。
给没有底层经验的开发者:先用参考实现建立正确性,再逐层进入 INT8、融合、规约和长上下文性能。每一步都有输入、产出和可验证的出口。
原表把所有任务都标成 1 人周。学习时不要按表格顺序硬啃,而要按依赖关系拆开:能否写出正确的 kernel,能否处理量化,能否让数据少搬一次,最后才是把 128K 跑快。
先确认三件事再写代码:芯片支持哪些 dtype 和指令?算子接入 API 是什么?Profiler 能看到什么指标?GPU / Triton 示例可以教你原理,但不能替代光羽芯辰的 SDK 文档。
从 unary / binary 开始,学会 Grid、Block、指针偏移和 INT8 对称量化。
实现 q = clamp(round(x / scale), -128, 127),覆盖零 scale、尾块和 128K 索引。
找到编译、部署、运行和 profiling 的最小闭环,记录 dtype、layout、核函数入口。
理解 siluAndMul 的 fusion:把中间结果留在寄存器,比较融合前后的带宽和延迟。
跟着 vLLM 的 slot mapping,看连续 token 如何写入 paged KV cache,再移植到 INT8。
用小 kernel 的 1D depthwise conv 练滑动窗口、边界处理和片上缓存复用。
从 L2、RMSNorm、LayerNorm 入手,理解 reduction、warp shuffle 和数值稳定性。
用局部最大值 m 和指数和 l 分块处理 128K,先在 Python 里验证,再落到 kernel。
固定 shape、dtype、batch 和长度,记录 latency、带宽、占用与误差,版本化每次改动。
理解 paged KV、split-K 和跨 block 的 LogSumExp 合并,再考虑 INT8 cache scale。
从 tiled attention 入手,理解 QKᵀ / PV、online rescaling 和硬件矩阵乘。
学习 chunk-wise scan。投影可以 INT8,递归 state 先保留 FP16/FP32,再做真实芯片实验。
难度不是工期。先跑通,再优化。
| 任务 | 主要瓶颈 | 学习阶段 | 建议顺序 | 风险信号 |
|---|---|---|---|---|
| unary / binaryINT8 + 128K | 访存、broadcast | 基础 | ① 先做 | 低 |
| norm / softmaxINT8 + 128K | 规约、精度 | 规约 | ③ 再做 | 中 |
| ssm convINT8 + 128K | 窗口、边界 | 融合 | ② 练手 | 低 |
| siluAndMul / cacheINT8 + 128K | 融合、寻址 | 融合 | ② 练手 | 中 |
| page attentionINT8 + 128K | 非连续访存、split-K | 深水区 | ④ 最后 | 高 |
| flash attentionINT8 + 128K | tile、硬件矩阵乘 | 深水区 | ④ 最后 | 高 |
| GDNINT8 + 128K | 递归 state、误差累积 | 深水区 | ④ 最后 | 最高 |
Vector Add、Fused Softmax、LayerNorm、Fused Attention。先学 block 编程模型。
看 csrc 与 attention ops:paged KV cache、activation、paged attention 的真实接口。
专注 LLM serving kernel,适合研究 attention、KV cache 和长序列调度。
Gated DeltaNet 和线性注意力的 Triton 实现,理解 chunk scan 与 state。
看一个开源硬件后端如何接入 vLLM;接口思路可帮助梳理甲方适配边界。
面向多 AI 芯片后端的 Triton 分支,帮助理解算子 DSL 到硬件后端的路径。
从 C++/CUDA 算子注册、Python 调用到测试,适合建立 Golden Reference 闭环。
用来补 Grid、Block、线程协作、内存层次等基础概念;原理可迁移,API 需换成芯片 SDK。
不要同时追 8 个算子。把一个 unary op 在本地参考实现、芯片 kernel 和 benchmark 之间跑通,你就拥有了后面所有任务共用的工作模板。
回到学习路径 →