Add BMM_Theory: docs/02_分支理论/04_特殊分支.md

This commit is contained in:
2026-09-03 09:25:48 +00:00
parent df035598b4
commit a64fbd72a6

View File

@@ -0,0 +1,32 @@
# 特殊分支理论K=0 / K=1
> 整理自《BMM算子优化分析 v0.98》§九. 对应软件实现 `bmm_theory/branches/special.py`.
## 1. 为什么单列
K 维度是 CubeMMAD存在的意义——`C = Σ_k A[..,k]·B[k,..]` 的累加深度。K=0 / K=1 时累加深度为 0/1Cube 的 16×16×16 粒度完全浪费K=1 时浪费 15/16**走 AIV 向量通路GM→UB→逐元素算→GM远优于 Cube 通路**。这是与切分正交的前置判断。
## 2. K=0纯写值
无任何计算,`C = bias`(有 bias`C = 0`(无 bias。纯 AIV 写值:
- 数据流GM →(写)→ GM连输入都不用读
- 时延:仅 Fixpipe/AIV 写出,`T = B·M·N·outB / W_GM`(或 AIV 写吞吐上限),访存写出 Bound
- 无 tile 概念,按行均分到 AIV 核即可。
## 3. K=1逐元素乘
退化为逐元素乘 `C = A ⊙ B`(无累加深度):
- 数据流GM→UB读 A、B→ Mul → GM写 C全程 AIV
- 时延:`T = max(搬入, 搬出)`AIV 算力远剩,瓶颈在搬移:`T ≈ B·(MK + KN + MN)·dt / W_GM`
- **触发条件**`B ≥ 2×AIV核数 = 128`(开 UB 乒乓需要每核至少 2 个 batch 块)且单 batch 输入输出能驻留 UB。
## 4. 软件处理
`router.py` 前置归约中,`k ≤ 1` 直接路由到特殊分支:
- `K=0` → 标注"纯 AIV 写值",评估时延 = 写出时延;
- `K=1` → 标注"AIV 逐元素乘",评估时延 = 搬入/搬出较大者。
不进入 Cube 切分体系,无 ImplPlan 的 tile 字段(除 used_core_num = AIV 核数外均不适用)。