◎ Operator Atlas / 端侧算子优化
自学模式
从读懂算子,到跑在芯片上

把 128K 的
算子优化拆成
一条能走的路。

给没有底层经验的开发者:先用参考实现建立正确性,再逐层进入 INT8、融合、规约和长上下文性能。每一步都有输入、产出和可验证的出口。

✦适配目标:光羽芯辰国产化端侧芯片
芯片 SDK / 编译器 / Profiler 以甲方资料为准
CURRENT FOCUS
INT8
KERNELS
from baseline
to benchmark
01正确性Golden ref
02量化INT8 path
03融合Memory
04深水区128K
A FIELD GUIDE FOR
EDGE INFERENCE
01 / 先看懂甲方在要什么

任务表看起来像 8 周,
实际是四种能力。

原表把所有任务都标成 1 人周。学习时不要按表格顺序硬啃,而要按依赖关系拆开:能否写出正确的 kernel,能否处理量化,能否让数据少搬一次,最后才是把 128K 跑快。

01
算子实现unary / binary / conv / norm
基础
02
INT8 量化scale · 反量化 · 精度守门
核心
03
内存与调度fusion · cache · paged layout
核心
04
长上下文online softmax · tiled attention
进阶
!

先确认三件事再写代码:芯片支持哪些 dtype 和指令?算子接入 API 是什么?Profiler 能看到什么指标?GPU / Triton 示例可以教你原理,但不能替代光羽芯辰的 SDK 文档。

02 / THE PATH

四阶段,边做边学。

你的进度0 / 12
PHASE 012–3 天

先让第一个 kernel 跑起来

从 unary / binary 开始,学会 Grid、Block、指针偏移和 INT8 对称量化。

出口能写 Golden Reference + Naive Kernel
PHASE 01练习 1

把量化公式变成测试

实现 q = clamp(round(x / scale), -128, 127),覆盖零 scale、尾块和 128K 索引。

出口误差阈值与越界检查写进测试
PHASE 01工具链

认识你的芯片工具链

找到编译、部署、运行和 profiling 的最小闭环,记录 dtype、layout、核函数入口。

出口一条命令可编译并跑通 demo
PHASE 024–5 天

少写一次显存,就快一截

理解 siluAndMul 的 fusion:把中间结果留在寄存器,比较融合前后的带宽和延迟。

出口能解释 memory-bound 与 kernel fusion
PHASE 02实战

读懂 Cache 的寻址

跟着 vLLM 的 slot mapping,看连续 token 如何写入 paged KV cache,再移植到 INT8。

出口画出 block table → physical page
PHASE 02实战

把 SSM Conv 变简单

用小 kernel 的 1D depthwise conv 练滑动窗口、边界处理和片上缓存复用。

出口非对齐长度不越界,结果对齐
PHASE 031 周

学会让线程合作

从 L2、RMSNorm、LayerNorm 入手,理解 reduction、warp shuffle 和数值稳定性。

出口能定位规约瓶颈与精度损失
PHASE 03关键前置

推导 Online Softmax

用局部最大值 m 和指数和 l 分块处理 128K,先在 Python 里验证,再落到 kernel。

出口不保存全量 score 也能算对
PHASE 03benchmark

建立性能基线

固定 shape、dtype、batch 和长度,记录 latency、带宽、占用与误差,版本化每次改动。

出口一张可复现的 benchmark 表
PHASE 042–4 周

Page Attention:先解决寻址

理解 paged KV、split-K 和跨 block 的 LogSumExp 合并,再考虑 INT8 cache scale。

出口长序列可扩展,尾块不崩
PHASE 043–5 周

Flash Attention:分块复用

从 tiled attention 入手,理解 QKᵀ / PV、online rescaling 和硬件矩阵乘。

出口性能与精度都能对照 baseline
PHASE 042–4 周

GDN:状态精度优先

学习 chunk-wise scan。投影可以 INT8,递归 state 先保留 FP16/FP32,再做真实芯片实验。

出口知道哪里能量化,哪里不能冒险
03 / TASK MAP

甲方任务,换一种看法。

难度不是工期。先跑通,再优化。

任务主要瓶颈学习阶段建议顺序风险信号
unary / binaryINT8 + 128K访存、broadcast基础① 先做低
norm / softmaxINT8 + 128K规约、精度规约③ 再做中
ssm convINT8 + 128K窗口、边界融合② 练手低
siluAndMul / cacheINT8 + 128K融合、寻址融合② 练手中
page attentionINT8 + 128K非连续访存、split-K深水区④ 最后高
flash attentionINT8 + 128Ktile、硬件矩阵乘深水区④ 最后高
GDNINT8 + 128K递归 state、误差累积深水区④ 最后最高
04 / RESOURCE LIBRARY

先读这些,少走弯路。

⌕
没有匹配的资源,试试 “attention” 或 “GDN”。
05 / YOUR FIRST WEEK

第一周只交付
一个可复现的结果。

不要同时追 8 个算子。把一个 unary op 在本地参考实现、芯片 kernel 和 benchmark 之间跑通,你就拥有了后面所有任务共用的工作模板。

回到学习路径 →
DAY 01装好工具链编译 · 部署 · profiler
DAY 02写 Golden ReferencePyTorch · 误差阈值
DAY 03实现 Naive Kernel先正确,再谈快
DAY 04跑 128K 边界tail · int64 · 对齐
DAY 05记录基线latency · bandwidth