Closed
[Bug-Report|缺陷反馈]: allto_allv_quant_grouped_mat_mul DAV_3510 放行 ep=256 与 GMM 数组 128 上限自相矛盾,MX 主路径 ep=256 必失败 #5482
liuhanwen8Add on Sep 20Closed at Sep 30
weihao18
Sep 20 Comments:
Sep 20 Comments:
/assign @tgwsakiko_


Sep 20 Assign tgwsakiko_ as responsible person
Sep 30 Close issue
Sep 30 Added label: resolved
周云飞
26 days ago Comments:
26 days ago Comments:
PR #12952已合入master,实际diff将DAV_3510 MX路径GMM数组可用上限从128扩大为256,并将mList填充截断至数组容量;注释说明SPLIT_M+singleW时kernel仅读取mList/kList/nList第0项、每组M来自运行时groupList。固定快照仍有gmmGroupNum超过GMM_ARRAY_MAX_NUM才失败的检查,常量为256。因此旧报告基于128上限的静态推导已被实现改动覆盖;未在950执行ep256用例。
源码依据:源码位置1、源码位置2
关联PR:#12952(已合入 master;GMM_ARRAY_MAX_NUM从128扩为256;MX tiling按SPLIT_M+singleW读取方式截断mList填充,同时修复V2 executor的ret/指针保护。)
本次仅核验源码与关联差分,未复跑原场景;具体安装版本是否包含变更需以其源码版本区分。


问题描述
allto_allv_quant_grouped_mat_mul在 DAV_3510(Ascend 950 系列)上,属性校验放行epWorldSize=256档位,但 MX 主路径 tiling 中 gmmGroupNum 受Mc2GroupedMatmul::MAX_TENSOR_CONT = 128硬上限约束,二者自相矛盾:合法输入(如 e_=1、ep=256,e_×ep=256≤256 可通过全部属性校验)下 gmmGroupNum=256 > 128,SetInputParams必然返回GRAPH_FAILED,新宣称支持的 ep256 场景在 fp8/fp4 主路径 100% 失败。影响范围
8c49f3c核实,与报告基线一致):mc2/allto_allv_quant_grouped_mat_mul/op_host/op_tiling/allto_allv_quant_grouped_mat_mul_tiling_base.cppL177-179(ep 档位放行)mc2/allto_allv_quant_grouped_mat_mul/op_host/op_tiling/arch35/allto_allv_mx_quant_grouped_mat_mul_tiling.cppL585-591(gmmGroupNum 上限检查 + mList 写入)mc2/3rd/grouped_matmul/op_tiling/mc2_grouped_matmul_host_util.hL114(constexpr uint16_t MAX_TENSOR_CONT = 128)mc2/3rd/grouped_matmul/op_tiling/mc2_grouped_matmul_tiling.hL58/L176-178(mList_[128]数组定义)allto_allv_quant_grouped_mat_mul(MX/fp8/fp4 主路径,DAV_3510)源码证据
allto_allv_quant_grouped_mat_mul_tiling_base.cpp:177-179):if (ascendcPlatform.GetCurNpuArch() == Ops::Base::DAV_3510) { epWorldSizeValueList = {2, 4, 8, 16, 32, 64, 128, 256}; // epWorldSize value only support 2, 4, 8, 16, 32, 64, 128, 256 }allto_allv_mx_quant_grouped_mat_mul_tiling.cpp:585-591):OP_TILING_CHECK(gmmGroupNum_ > optiling::Mc2GroupedMatmul::MAX_TENSOR_CONT, ..., return ge::GRAPH_FAILED); for (uint32_t i = 0; i < gmmGroupNum_; i++) { mList_[i] = static_cast<int32_t>(M); }mc2_grouped_matmul_host_util.h:114constexpr uint16_t MAX_TENSOR_CONT = 128;;mc2_grouped_matmul_tiling.h:58TILING_DATA_FIELD_DEF_ARR(int32_t, 128, mList); // 128 :MAX_TENSOR_CONT。问题机理(推导链)
SetInputParams返回GRAPH_FAILED→ 整个 tiling 失败,ep256 主路径必失败;CalcExpertNum(allto_allv_quant_grouped_mat_mul_tiling_common.h:94-97)的upperByArray = GMM_ARRAY_MAX_NUM / epWorldSize压制 expertNum,使 gmmGroupNum ≤ 128;但 ep=256 时 128/256=0,压制失效;触发条件与风险评估
修复建议(三选一或组合)
CalcExpertNum增加保护性上限:expertNum × epWorldSize ≤ 128,超限提前报参数错误(报错可定位);mList/kList/nList数组至 ≥ e_max × ep_max,并同步 kernel 侧结构体;epWorldSizeValueList移除),文档注明上限,待扩容后再放开。备注
本报告为静态源码推演结论(master @
8c49f3c,关键行号已逐一实读核实),欢迎维护者复核。