Files
matmul-analysis/BMM/BMM_Theory/docs/02_分支理论/04_特殊分支.md

2.0 KiB
Raw Blame History

特殊分支理论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(有 biasC = 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
  • B < 128 时并不无解issue#12/#17退化为 AIV 单缓冲——无乒乓、逐 batch 串行搬入计算,仍远优于 Cube 通路K=1 时 Cube 16×16×16 浪费 15/16只是流水掩盖能力下降。软件 special.pyB ≥ 128 自动选择"UB乒乓 / AIV单缓冲"模式。

4. 软件处理

router.py 前置归约中,k ≤ 1 直接路由到特殊分支:

  • K=0 → 标注"纯 AIV 写值",评估时延 = 写出时延;
  • K=1 → 标注"AIV 逐元素乘",评估时延 = 搬入/搬出较大者plan 按 B ≥ 128 自动选择"UB乒乓 / AIV单缓冲"模式(l1_formnote 中可见)。

不进入 Cube 切分体系,无 ImplPlan 的 tile 字段(除 used_core_num = AIV 核数外均不适用)。