[P2] StreamK 时延计账口径疑点:REDUCE 同时计入稳态 max() 与 drain;fixpipe 按 C dtype 与"部分和 4B"口径不一致 #9

Closed
opened 2026-09-03 10:56:39 +00:00 by admin · 1 comment
Owner

现象(需作者确认口径,报告列为疑点而非定论):

  1. branches/stream_k.py:161 drain = t_reduce(归约串行追加),而 timing.py:104-112 又把 REDUCE: t_reduce 放入稳态 max(stages) —— 归约同时被"取最大"与"串行追加",归约主导时近似双倍计账。若语义为"归约不可掩盖、串行追加",REDUCE 不应进稳态 max()。
  2. stream_k.py:152-153 fixpipe fix_bytes = tile_elems * case.dtype_out_bytes(按 C 矩阵 2B/1B),而其 plan(:116 out_dtype_bytes=4)与归约子模型(timing.py:77-93,部分和写读按 4B 且含最终写回)口径不一致 → t_fix 偏低且与 t_reduce 内"写回"存在重复计账嫌疑。
  3. StreamK evaluate 以"单 tile=65536 元素"近似并按 grid_K 缩放(stream_k.py:139-146),与 plan 中实际 m_cnt/n_cnt/b 切分(:89-98 计算了 M/N 切分与 workspace)未严格联动,大 B(每核多 tile)场景评估粗糙。

期望:明确归约在流水中的位置与计账约定(进 max 或进 drain 二选一并全分支统一),fixpipe/部分和/最终写回三者口径对齐,evaluate 与 make_plan 的切分联动。

参考:测评报告 §5.4。

**现象**(需作者确认口径,报告列为疑点而非定论): 1. `branches/stream_k.py:161` `drain = t_reduce`(归约串行追加),而 `timing.py:104-112` 又把 `REDUCE: t_reduce` 放入稳态 `max(stages)` —— 归约同时被"取最大"与"串行追加",**归约主导时近似双倍计账**。若语义为"归约不可掩盖、串行追加",REDUCE 不应进稳态 max()。 2. `stream_k.py:152-153` fixpipe `fix_bytes = tile_elems * case.dtype_out_bytes`(按 C 矩阵 2B/1B),而其 plan(:116 `out_dtype_bytes=4`)与归约子模型(`timing.py:77-93`,部分和写读按 4B 且含最终写回)口径不一致 → `t_fix` 偏低且与 `t_reduce` 内"写回"存在重复计账嫌疑。 3. StreamK evaluate 以"单 tile=65536 元素"近似并按 grid_K 缩放(stream_k.py:139-146),与 plan 中实际 m_cnt/n_cnt/b 切分(:89-98 计算了 M/N 切分与 workspace)未严格联动,大 B(每核多 tile)场景评估粗糙。 **期望**:明确归约在流水中的位置与计账约定(进 max 或进 drain 二选一并全分支统一),fixpipe/部分和/最终写回三者口径对齐,evaluate 与 make_plan 的切分联动。 **参考**:测评报告 §5.4。
Author
Owner

【修复说明 · 乱码重写】原评论提交时编码损坏、内容不可恢复, 以下按 git 记录 / issue 正文 / 残留文本重建 (要点级, 非逐字原稿):

[P2] StreamK 归约计账口径 (REDUCE 同时进稳态 max 与 drain) 已修复:

  • timing.assemble_timing 增加 reduce_serial 语义: REDUCE 默认串行追加进 drain
    不进稳态 max(), 消除"既取最大又串行追加"的双倍计账 (issue#9 标注);
  • 归约部分和(4B)与最终 C dtype 写出的口径分离说明同步;
  • 该口径在 #11 (commit 4bedf0a) 与 #17 (9afe6ee) 中最终收敛, streamk_demo 复测 ≈9.96us。
【修复说明 · 乱码重写】原评论提交时编码损坏、内容不可恢复, 以下按 git 记录 / issue 正文 / 残留文本重建 (要点级, 非逐字原稿): [P2] StreamK 归约计账口径 (REDUCE 同时进稳态 max 与 drain) 已修复: - timing.assemble_timing 增加 reduce_serial 语义: REDUCE 默认**串行追加进 drain**、 不进稳态 max(), 消除"既取最大又串行追加"的双倍计账 (issue#9 标注); - 归约部分和(4B)与最终 C dtype 写出的口径分离说明同步; - 该口径在 #11 (commit 4bedf0a) 与 #17 (9afe6ee) 中最终收敛, streamk_demo 复测 ≈9.96us。
admin closed this issue 2026-09-03 12:05:43 +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#9
No description provided.