34. ASW_Basic 兜底必须恒出方案: 搬移效率下限不满足应降级标注(warning), 不是违规/不可行 #34
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?
背景
两个问题(用户复核 b32_m16_n8192_k7168 引出):
(⌊524288/(2·(16+1024)·2)⌋16 = 112); 严格枚举因 dValue 256B 偏好不可满足
(Base 整数倍粒度下 k_l1·dt 最高 224B) 而落空, 经放开约束 4 的 128B 硬下限兜底选出;
当前把"搬移效率下限不满足"当成违规/不可行(feasible=False)处理是不对的:
dValue/minTile 是效率下限(DMA 仍能工作, 只是突发效率低), 不是硬件不可行;
真正不可行的只有容量/核数类硬约束 (L0C/L0A/L0B/L1 超容, used_core_num 超核数)。
修复
(IterBatch/MergeBatch/StreamK 等有替代分支的分支仍按违规处理——不满足条件不该进);
note 标注 效率降级 (效率低于模型假设, 时延可能低估, 建议调 dtype/布局);
128B 硬下限也不满足的极端形状 (如 N=8 int8: B 侧 dValue = sN·dt = 8B 物理不可满足)
仍给方案 + 标注效率降级 (搬移效率崩塌), 不再是"违规/不可行";
压力 10000 例 0 崩溃/0 NaN/0 硬违规。
修复 commit:
0cd47f9先答第 1 问 (分解推导链): b32_m16_n8192_k7168 的 k_l1=112 分解过程
N=8192, L0B 单边上限 64KB/(2·16·2)=1024) = 1024; BaseK=16 (L0B 双边 64KB 恰满);
32B < 256B 偏好 ✗; 有界枚举 (mCnt=1, nCnt<=8): 候选 (1,8) 即 sN=1024 -> k_l1 =
min(7168, ⌊L1/(2·(16+1024)·2)⌋16 = ⌊126⌋16 = 112) = 224B —— 未达 256B 偏好
(Base 整数倍粒度下达不到), 但 ≥ 128B 硬下限 -> 按放开约束 4 的兜底路径选出;
A 行带 [16×7168]=229KB + B 列带 [7168×1024]=14.7MB。
第 2 问 (语义分层修正):
不是硬件不可行; 真正不可行的只有容量/核数硬约束 (L0C/L0A/L0B/L1 超容, 核数超限);
advice/仲裁文案同步提示), feasible=True, 时延照常给出;
落地:
后两级 note 均标注"效率降级";
验证: 63/63 全过 (新增分解推导回归 b32_m16_n8192_k7168 -> k_l1=112, 极端形状 feasible
demo 集仅 b32_m16_n8192_k7168 带效率降级标注 (符合预期)。