MergeBatch 合并搬移效率收益建模 (tile=nValue*dValue*dt 放大 b0 倍) + t_cmd_ns 置 0 #36
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
用户物理澄清 (建模依据)
MergeBatch 与 IterBatch 的本质区别不只是 DMA 命令数 (T_cmd): MergeBatch 把多个 batch 的左/右矩阵合并一起搬移和计算, 使单块 tile (= nValue × dValue × input_dtype) 放大 b0 倍, 搬移效率更高 —— 即便 T_cmd=0 也有收益。
合并堆叠方向视转置/排布而定, 例: 左矩阵 A 为 ND 排布且不转置时, dValue 对应 K 维 (连续), nValue 对应 M 维; 各 batch 的 A 在 M 维 (nValue) 上堆叠合并 -> 单块 tile = (b0·M) × (k_l1·dt) 放大 b0 倍。B 矩阵 ND 非转置 ([K,N], N 连续) 时合并沿 N (dValue 维) 堆叠。两侧乘积口径一致: A 侧 tile = b0·M·k_l1^m·dt, B 侧 tile = b0·N·k_l1^m·dt。
现状缺陷
当前模型两分支 GM→L1 数据时延都按 V_in/BW_gm 满带宽计, 差异只有 T_cmd 项 —— 合并的搬移效率收益完全未建模; T_cmd 又是未标定估计值 (50ns), 以此为主要收益依据不牢靠。
改动方案
影响面
已实现, commit
b0b48b9已推送 main。落地内容
models.move_eff/gm_move_time): eff(tile) = min(1, tile/min_TileSize), 单命令 tile = nValue×dValue×input_dtype 达 16KB (进入条件 4 的效率下限常数) 饱和, 之下线性退化。GM→L1 数据时延按 A/B 两侧字节加权 t = (V_A/eff_A + V_B/eff_B)/W_gm; GM 字节量不变 (仍 = V_in, issue#31 口径由 TestIssue36 锁死)。用户 case 家族最终行为 (B=128, N=128, K=512, bf16, t_cmd=0)
语义: iter A 侧 tile 随 M 线性增长, m=16 恰达 16KB 饱和点, 效率差归零后 drain 惩罚决定胜负 —— 交叉点物理自洽。
验证