30. Fixpipe输出落点: 默认写L2, 整case容量不足才直写GM(输入优先驻留) #30

Closed
opened 2026-09-04 08:17:34 +00:00 by admin · 1 comment
Owner

Fixpipe 输出落点错误: 输出应默认写 L2, 容量不足才直写 GM

你的规则 (确认采纳)

  • 输出矩阵默认写入 L2;
  • 当 L2 >= 输入A+B总数据量 + 输出C总数据量 → 输出全部写入 L2 (L2 写口 5.2TB/s 独享, 不占 GM 总线);
  • 当 L2 < 输入A+B总 + 输出C总 → 输入(可能有重复读)优先保 L2 驻留, 输出此时才直写 GM (占 GM 读写共享总线, 与读累加计账, #23 口径)。

现状问题

  1. IterBatch/MergeBatch/特殊分支: l2_policy_out 恒 "direct_gm", 输出永远直写 GM —— 小 case 明明可以全驻留 L2 却付了 GM 写带宽;
  2. ASW 场景 A 按"单batch 输入+输出 <= L2"判定驻留: 单 batch 虽可驻留, 但整 case 输出跨 batch 累计 (例 B=64 M=N=4096 K=1024 bf16: 每 batch 输出 32MB 可驻留, 整 case C=2GB >> L2) → 逐 batch 累积必然逐出, "驻留L2异步回写"不成立, GM 写流量被漏计;
  3. StreamK 最终输出写回与 workspace 未按此容量规则分流。

修复 (随 #29 文档联动)

  • 输出落点统一: to_l2 ⟺ 整case(输入A+B + 输出C [+ StreamK workspace]) <= L2; 否则输出直写 GM 计入共享总线。
  • 输入侧场景保留 #24 单batch/分组工作集判定 (输入优先级高于输出)。
  • ASW 场景 A/B/C 文字与 note 同步改为"整case全驻留 / 单batch输入驻留 / 分组", l2_policy_out 相应标注。
  • 对 demo 中"整case可全驻留"的小 case: GM 写流量清零、输出走 L2 写口 → 时延下降; 其余 case: GM 写流量如实计入 → 时延上升 (修正漏计)。
## Fixpipe 输出落点错误: 输出应默认写 L2, 容量不足才直写 GM ### 你的规则 (确认采纳) - 输出矩阵**默认写入 L2**; - 当 L2 >= 输入A+B总数据量 + 输出C总数据量 → 输出**全部**写入 L2 (L2 写口 5.2TB/s 独享, 不占 GM 总线); - 当 L2 < 输入A+B总 + 输出C总 → 输入(可能有重复读)优先保 L2 驻留, 输出此时**才直写 GM** (占 GM 读写共享总线, 与读累加计账, #23 口径)。 ### 现状问题 1. IterBatch/MergeBatch/特殊分支: l2_policy_out 恒 "direct_gm", 输出永远直写 GM —— 小 case 明明可以全驻留 L2 却付了 GM 写带宽; 2. ASW 场景 A 按"**单batch** 输入+输出 <= L2"判定驻留: 单 batch 虽可驻留, 但整 case 输出跨 batch 累计 (例 B=64 M=N=4096 K=1024 bf16: 每 batch 输出 32MB 可驻留, 整 case C=2GB >> L2) → 逐 batch 累积必然逐出, "驻留L2异步回写"不成立, GM 写流量被漏计; 3. StreamK 最终输出写回与 workspace 未按此容量规则分流。 ### 修复 (随 #29 文档联动) - 输出落点统一: to_l2 ⟺ 整case(输入A+B + 输出C [+ StreamK workspace]) <= L2; 否则输出直写 GM 计入共享总线。 - 输入侧场景保留 #24 单batch/分组工作集判定 (输入优先级高于输出)。 - ASW 场景 A/B/C 文字与 note 同步改为"整case全驻留 / 单batch输入驻留 / 分组", l2_policy_out 相应标注。 - 对 demo 中"整case可全驻留"的小 case: GM 写流量清零、输出走 L2 写口 → 时延下降; 其余 case: GM 写流量如实计入 → 时延上升 (修正漏计)。
Author
Owner

修复 commit: b9e07ed

落地 (规则即 issue 正文, 输出落点决策函数 output_to_l2 全分支共用):

  • to_l2 ⟺ 整case V_in + V_out (+ StreamK workspace) <= L2 (S_A); 否则输出直写 GM (输入优先驻留 L2), GM 写计入读写共享总线 (#23 MTE2 链累加);
  • IterBatch/MergeBatch/特殊分支/转Matmul: 由"恒直写GM"改为 R4 判定 (l2_policy_out 动态标注);
  • ASW: 场景 A 判定由"单batch输入+输出"改为 S_A 整case (原判定在输出跨 batch 累积时必逐出, GM 写流量漏计) -> S_B 单batch输入驻留 / S_C 分组; make_plan 与 evaluate 共用 _l2_scene;
  • StreamK: 最终输出写回按 S_A(+workspace) 决定 L2/直写 GM (eval_streamk_reduce 增加 out_to_gm);
  • K=0/1 AIV 通路同规则。

demo 44 例影响 (t_total, 方向如预期):

  • 整case可驻留的小 case GM 写清零、输出走 L2 写口: special_k1_demo 10.57->3.23us, merge_demo_k_trunc 45.67->42.93us, b32_m1024_n1024_k512 135.07->92.44us (边界: V_in+V_out=128MB 恰 = L2) 等 12 行时延下降;
  • 整case溢出、原单batch驻留漏计 GM 写的 case 补计: b128_m2048_n2048_k1536 4.41->5.08ms, b4_m131072_n128_k128 102.7->186.6us (读134MB+L2重复读18.8+写134MB) 等 10 行时延上升;
  • 其余 22 行仅列口径/方案标注变化。

验证: 49/49 单测 (test_issue30_*: iter/asw/转Matmul 落点开关、S_A/S_B 标签与带宽核算); 压力回归 0 违规; examples 可复现 0 diff。

修复 commit: b9e07ed 落地 (规则即 issue 正文, 输出落点决策函数 output_to_l2 全分支共用): - to_l2 ⟺ 整case V_in + V_out (+ StreamK workspace) <= L2 (S_A); 否则输出直写 GM (输入优先驻留 L2), GM 写计入读写共享总线 (#23 MTE2 链累加); - IterBatch/MergeBatch/特殊分支/转Matmul: 由"恒直写GM"改为 R4 判定 (l2_policy_out 动态标注); - ASW: 场景 A 判定由"单batch输入+输出"改为 S_A 整case (原判定在输出跨 batch 累积时必逐出, GM 写流量漏计) -> S_B 单batch输入驻留 / S_C 分组; make_plan 与 evaluate 共用 _l2_scene; - StreamK: 最终输出写回按 S_A(+workspace) 决定 L2/直写 GM (eval_streamk_reduce 增加 out_to_gm); - K=0/1 AIV 通路同规则。 demo 44 例影响 (t_total, 方向如预期): - 整case可驻留的小 case GM 写清零、输出走 L2 写口: special_k1_demo 10.57->3.23us, merge_demo_k_trunc 45.67->42.93us, b32_m1024_n1024_k512 135.07->92.44us (边界: V_in+V_out=128MB 恰 = L2) 等 12 行时延下降; - 整case溢出、原单batch驻留漏计 GM 写的 case 补计: b128_m2048_n2048_k1536 4.41->5.08ms, b4_m131072_n128_k128 102.7->186.6us (读134MB+L2重复读18.8+写134MB) 等 10 行时延上升; - 其余 22 行仅列口径/方案标注变化。 验证: 49/49 单测 (test_issue30_*: iter/asw/转Matmul 落点开关、S_A/S_B 标签与带宽核算); 压力回归 0 违规; examples 可复现 0 diff。
admin closed this issue 2026-09-04 08:26:36 +00:00
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#30
No description provided.