ASW_Basic 时延模型审查: A0 drain 量级 bug (evaluate 路径) + 周长型尾轮残余未建模 #37

Closed
opened 2026-09-09 02:01:12 +00:00 by admin · 1 comment
Owner

背景

用户审查 ASW_Basic evaluate 时延口径(整芯片稳态聚合 总量/(used×单核速率) + 三段 max + t_drain)时提出: 没有 ⌈N_blk/C⌉ 波次量化、没有"每核分到多少块、逐块流水、末块三段相加"的逻辑, 是否合理。经与《ASW_Basic分支分析 v1.91》§3.1/§5.1、《BMM尾轮处理策略对比分析 v1.5》§2.1/§3.3/§4.3/§5 全文交叉核对, 结论与修复方案如下(用户已审核通过)。

分析结论(主口径保留不改)

  1. 稳态聚合口径是理论正式口径: v1.91 §3.1 T = max(T_MTE2, T_MMAD, T_FIX) + T_drain; 数学上均匀分块下 N_blk/C ≡ n_wave−1+ρ, 恰等于 v1.5 §4.3 面积型 A1b/方案B 的严格相等式 T = (n_wave−1+ρ)·T_block —— 面积型主导下(主流 case)当前模型即理论最优口径。
  2. 三段取 max 依据充分: 稳态流水 + UnitFlag tile 内 16×16×16 细粒度流水(v1.91 §5.1); k_L1 稳态约掉只进约束(v1.5 §2.1)。
  3. 逐核 (w−1)·max+Σ 朴素流水式与尾轮重切机制(A1b/方案B 的存在目的就是消除 ⌈⌉ 惩罚)冲突, 且 w=1 时与 UnitFlag 假设冲突, 不采用。

发现的问题

  • P1 (bug, evaluate 路径): tail_strategy=="A0" and tail_block_cnt>0t_drain = max(t_mmad, t_gm+t_l2, t_fix) 用的是全 case 总量级时延 → t_total ≈ 2×稳态。recommend 路径打不到(_decide_tail 仅 r=0 返回 A0, 该分支为死代码), 但 evaluate 评估用户自供 A0 方案时触发 —— 而 A0 恰是线上 kernel 的真实行为(v1.91: UpdateBasicIndex 尾轮空转跳过)。正确残余 = (1−ρ)·T_block(块级): T_A0 = n_wave·T_block = 稳态(n_wave−1+ρ)·T_block + (1−ρ)·T_block
  • P2 (模型缺口, recommend 也存在): 周长型主导(块级 MTE2 最大)且 r>0 时尾轮残余未建模, 稳态低估: A1b 少 (√ρ−ρ)·T_load; 方案B 少 (√(n_wave·(n_wave−1+ρ))−(n_wave−1+ρ))·T_load(v1.5 §5)。面积型残余恒 0(严格相等), 不受影响。
  • P3 (口径省略): v1.91 §3.1 T_drain=O(T_comp+T_write) 首块填充/末块排空未计入。UnitFlag 细粒度流水下真实暴露为 16-granule 级小量, 量级未标定, 决议只写文档标注、不入模型
  • P4 (二阶, 仅记录): 方案B/A1b 尾轮重切的真实搬移量放大(√g / 1/√ρ)未进字节列, 仅影响周长型角区; 文档标注。

修复方案(方案甲, 用户审核通过)

evaluatet_drain 改闭式(块级时延与 _decide_tail 同源 _block_times, L2 命中口径):

策略 / 主导项 t_drain
r=0 0
A0, r>0 (1−ρ)·T_block
面积型 A1b/方案B 0 (v1.5 §4.3 严格相等)
周长型 A1b (√ρ−ρ)·T_load
周长型 方案B (√(n_wave·(n_wave−1+ρ))−(n_wave−1+ρ))·T_load
  • docs/02_分支理论/06_ASW_Basic分支.md §3 补 drain 闭式表 + P3/P4 边界标注。
  • tests 加 TestIssue37 锁数值; examples 重生成比对; 压力回归(stress_35 seed7/6000 + seed2024/4000)。

影响面: recommend 输出仅"周长型 + r>0"的 ASW case 的 t_drain/t_total 变化; evaluate 的 A0+r>0 方案 t_drain 从 ~2×稳态 修为 (1−ρ)·T_block; 其余行 0 diff。

## 背景 用户审查 ASW_Basic `evaluate` 时延口径(整芯片稳态聚合 总量/(used×单核速率) + 三段 max + t_drain)时提出: 没有 ⌈N_blk/C⌉ 波次量化、没有"每核分到多少块、逐块流水、末块三段相加"的逻辑, 是否合理。经与《ASW_Basic分支分析 v1.91》§3.1/§5.1、《BMM尾轮处理策略对比分析 v1.5》§2.1/§3.3/§4.3/§5 全文交叉核对, 结论与修复方案如下(用户已审核通过)。 ## 分析结论(主口径保留不改) 1. **稳态聚合口径是理论正式口径**: v1.91 §3.1 `T = max(T_MTE2, T_MMAD, T_FIX) + T_drain`; 数学上均匀分块下 `N_blk/C ≡ n_wave−1+ρ`, 恰等于 v1.5 §4.3 面积型 A1b/方案B 的严格相等式 `T = (n_wave−1+ρ)·T_block` —— 面积型主导下(主流 case)当前模型即理论最优口径。 2. **三段取 max 依据充分**: 稳态流水 + UnitFlag tile 内 16×16×16 细粒度流水(v1.91 §5.1); k_L1 稳态约掉只进约束(v1.5 §2.1)。 3. 逐核 `(w−1)·max+Σ` 朴素流水式与尾轮重切机制(A1b/方案B 的存在目的就是消除 ⌈⌉ 惩罚)冲突, 且 w=1 时与 UnitFlag 假设冲突, 不采用。 ## 发现的问题 - **P1 (bug, evaluate 路径)**: `tail_strategy=="A0" and tail_block_cnt>0` 时 `t_drain = max(t_mmad, t_gm+t_l2, t_fix)` 用的是**全 case 总量级**时延 → t_total ≈ 2×稳态。recommend 路径打不到(`_decide_tail` 仅 r=0 返回 A0, 该分支为死代码), 但 evaluate 评估用户自供 A0 方案时触发 —— 而 A0 恰是线上 kernel 的真实行为(v1.91: `UpdateBasicIndex` 尾轮空转跳过)。正确残余 = `(1−ρ)·T_block`(块级): `T_A0 = n_wave·T_block = 稳态(n_wave−1+ρ)·T_block + (1−ρ)·T_block`。 - **P2 (模型缺口, recommend 也存在)**: 周长型主导(块级 MTE2 最大)且 r>0 时尾轮残余未建模, 稳态低估: A1b 少 `(√ρ−ρ)·T_load`; 方案B 少 `(√(n_wave·(n_wave−1+ρ))−(n_wave−1+ρ))·T_load`(v1.5 §5)。面积型残余恒 0(严格相等), 不受影响。 - **P3 (口径省略)**: v1.91 §3.1 `T_drain=O(T_comp+T_write)` 首块填充/末块排空未计入。UnitFlag 细粒度流水下真实暴露为 16-granule 级小量, 量级未标定, **决议只写文档标注、不入模型**。 - **P4 (二阶, 仅记录)**: 方案B/A1b 尾轮重切的真实搬移量放大(√g / 1/√ρ)未进字节列, 仅影响周长型角区; 文档标注。 ## 修复方案(方案甲, 用户审核通过) `evaluate` 的 `t_drain` 改闭式(块级时延与 `_decide_tail` 同源 `_block_times`, L2 命中口径): | 策略 / 主导项 | t_drain | |---|---| | r=0 | 0 | | A0, r>0 | (1−ρ)·T_block | | 面积型 A1b/方案B | 0 (v1.5 §4.3 严格相等) | | 周长型 A1b | (√ρ−ρ)·T_load | | 周长型 方案B | (√(n_wave·(n_wave−1+ρ))−(n_wave−1+ρ))·T_load | - `docs/02_分支理论/06_ASW_Basic分支.md` §3 补 drain 闭式表 + P3/P4 边界标注。 - tests 加 TestIssue37 锁数值; examples 重生成比对; 压力回归(stress_35 seed7/6000 + seed2024/4000)。 **影响面**: recommend 输出仅"周长型 + r>0"的 ASW case 的 t_drain/t_total 变化; evaluate 的 A0+r>0 方案 t_drain 从 ~2×稳态 修为 (1−ρ)·T_block; 其余行 0 diff。
admin closed this issue 2026-09-09 02:11:52 +00:00
Author
Owner

已修复并推送 (commit f9d5da0, Fix #37)。

改动

  1. bmm_theory/branches/asw_basic.py
    • 新增 _block_times(case, sm, sn): 块级三段时延 (v1.5 §2.1 口径, L2 命中带宽), _decide_tail 主导项判定与 evaluate drain 同源共用;
    • evaluatet_drain 闭式化:
      • A0 且 r>0: (1−ρ)·T_block (修复 P1 —— 原实现误用全 case 三级 max, t_total≈2×稳态; 实测 demo: drain 17.543us→4.419us, 与 (1−ρ)·T_block 手算一致);
      • 周长型 A1b: (√ρ−ρ)·T_load; 周长型 方案B: (√(n_wave(n_wave−1+ρ))−(n_wave−1+ρ))·T_load (P2);
      • 面积型 A1b/方案B 与 r=0: 恒 0 (v1.5 §4.3 严格相等, 与原行为一致);
      • 未建模策略 (如 A1a) 维持原口径 0。
  2. docs/02_分支理论/06_ASW_Basic分支.md §3: 补 drain 闭式表 + P3/P4 边界标注 (首块填充/末块排空为 UnitFlag 16-granule 级小量不入模型; 尾轮重切流量放大 √g/1/√ρ 仅影响周长型角区)。
  3. tests/test_branches.py: 新增 TestIssue37 七例 —— 块级三段公式、A0 残余 (P1)、面积型残余 0、周长型 A1b/方案B 残余 (P2)、r=0、make_plan 端到端 (33,16,8192,7168) A1b 一致性。

验证

  • 单测: 81/81 通过 (74 原有 + 7 新增);
  • examples 44 例 (recommend + evaluate): 0 diff —— demo 集 ASW case 均为 r=0 或面积型, plans.csv 字节不变;
  • 压力回归 seed7/6000 + seed2024/4000: 10000 例, 0 崩溃/0 NaN/0 违规/0 GM<V_in;
  • 影响面实测: 压力空间 1931 例 ASW_Basic 中非零 drain 0 例 (周长型+r>0 属边角, 规划器搬入最小化倾向大 tile → 面积型为主), P2 修复由单测锁定。

闭环。

已修复并推送 (commit f9d5da0, `Fix #37`)。 ## 改动 1. **`bmm_theory/branches/asw_basic.py`** - 新增 `_block_times(case, sm, sn)`: 块级三段时延 (v1.5 §2.1 口径, L2 命中带宽), `_decide_tail` 主导项判定与 `evaluate` drain **同源共用**; - `evaluate` 的 `t_drain` 闭式化: - A0 且 r>0: `(1−ρ)·T_block` (修复 P1 —— 原实现误用全 case 三级 max, t_total≈2×稳态; 实测 demo: drain 17.543us→4.419us, 与 (1−ρ)·T_block 手算一致); - 周长型 A1b: `(√ρ−ρ)·T_load`; 周长型 方案B: `(√(n_wave(n_wave−1+ρ))−(n_wave−1+ρ))·T_load` (P2); - 面积型 A1b/方案B 与 r=0: 恒 0 (v1.5 §4.3 严格相等, 与原行为一致); - 未建模策略 (如 A1a) 维持原口径 0。 2. **`docs/02_分支理论/06_ASW_Basic分支.md` §3**: 补 drain 闭式表 + P3/P4 边界标注 (首块填充/末块排空为 UnitFlag 16-granule 级小量不入模型; 尾轮重切流量放大 √g/1/√ρ 仅影响周长型角区)。 3. **`tests/test_branches.py`**: 新增 `TestIssue37` 七例 —— 块级三段公式、A0 残余 (P1)、面积型残余 0、周长型 A1b/方案B 残余 (P2)、r=0、make_plan 端到端 (33,16,8192,7168) A1b 一致性。 ## 验证 - 单测: 81/81 通过 (74 原有 + 7 新增); - examples 44 例 (recommend + evaluate): **0 diff** —— demo 集 ASW case 均为 r=0 或面积型, plans.csv 字节不变; - 压力回归 seed7/6000 + seed2024/4000: 10000 例, 0 崩溃/0 NaN/0 违规/0 GM<V_in; - 影响面实测: 压力空间 1931 例 ASW_Basic 中非零 drain 0 例 (周长型+r>0 属边角, 规划器搬入最小化倾向大 tile → 面积型为主), P2 修复由单测锁定。 闭环。
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: admin/matmul-analysis#37
No description provided.