reduction Group 模板(reduce_std_v2_update、data_compare)Phase1 用 rPerCore = CeilDiv(rOuter, rGroupCnt); rStart = rChunkIdx * rPerCore 截断分配 R chunk。CeilDiv 量化会造出空组(rStart >= rOuter 的核早退、不写 workspace 对应行),而 Phase 2 以 blockCount=rGroupCnt 全行 Reduce,把未写入的脏 GM 数据当 partial sum 读入,产生静默数值错误(已在 euclidean_norm 同类模板上实测复现:shape (11396,150) fp32 axes=[0],修复前 FAIL 修复后 PASS)。
rPerCore = CeilDiv(rOuter, rGroupCnt); rStart = rChunkIdx * rPerCore
将截断分配替换为大小核式均匀分配(tiling 保证 rGroupCnt <= rOuter,每组 >=1 chunk,无空组):
两个算子 kernel 均已编译验证通过(ascend950)。
/assign @andong_hw
问题
reduction Group 模板(reduce_std_v2_update、data_compare)Phase1 用
rPerCore = CeilDiv(rOuter, rGroupCnt); rStart = rChunkIdx * rPerCore截断分配 R chunk。CeilDiv 量化会造出空组(rStart >= rOuter 的核早退、不写 workspace 对应行),而 Phase 2 以 blockCount=rGroupCnt 全行 Reduce,把未写入的脏 GM 数据当 partial sum 读入,产生静默数值错误(已在 euclidean_norm 同类模板上实测复现:shape (11396,150) fp32 axes=[0],修复前 FAIL 修复后 PASS)。修复
将截断分配替换为大小核式均匀分配(tiling 保证 rGroupCnt <= rOuter,每组 >=1 chunk,无空组):
两个算子 kernel 均已编译验证通过(ascend950)。