Open
[性能问题][aclnnFusedCrossEntropyLossWithMaxSum]aclnnFusedCrossEntropyLossWithMaxSum算子存在 性能问题(单case失败) #225
sleeveenAdd on 5 days ago
sleeveen
5 days ago Comments:
5 days ago Comments:
严明奎
4 days ago Comments:
4 days ago Comments:
请说明环境使用的NPU型号/带宽 GPU型号/带宽


AlfengYuan
2 days ago Comments:
2 days ago Comments:
问题已修复,MR:https://gitcode.com/cann/ops-nn/pull/14270 (关联 cann/ops-nn#8653,根因/方案/验证数据的完整版见该 issue)
根因:49 条性能不达标用例全部为小 V 场景(V∈{1,2,3,4,7},299 条中 200 条 V=1)。原实现按大 V 通路逐行广播(每行一次 DIST_BRC_B32),小 V 时每行仅 1~8 有效 lane,广播与 2-D 小搬运的固定开销占满流水,有效带宽退化约两个数量级。
方案(4 个提交):
- 小 V 多行平坦打包快路:vocab 整块 1-D 搬入,softmax 按 G 行打包 G*v lane 处理,Gather(l/V) 展开 max/invSum,V=1 免 Gather;b16 预 cast fp32;tiling 新增 aPerLoop。
- 预取流水:消除 tile 内"搬入→计算→搬出"全串行,prologue 预取 + 循环内发本块 VEC/预取下一块/等输出,四队列深 2,MTE/VEC 重叠。提速 1.12~1.22x。
- 裸 vdiv + b16 内联 cast:inv_sum 补偿除改裸 vdiv(次正规 sum 时补偿无效);b16 vocab 加载时 DIST_UNPACK_B16 内联 cast 免整 tile 预转(bit 级等价)。再提速 1.04~1.99x。
- 评审修复:标量队列声明深度与小V预取流水用法对齐;vocab 源缓冲增加一个 VL 的 padding,收敛 V=3/5/6/7(G*v<VL)满 tile 末组向量读的越界(越界 lane 本就掩码、不影响结果)。
验证:
- 49 条原不达标用例精度+性能 49/49 PASS;有效带宽 730~835 → 1164~1309 GB/s,追平 torch copy 实测上限(1230 GB/s);相对基线累计约 25~45x。
- 全量 299 回归:性能 299/299、精度 298/299。唯一 FAIL(L1_296)与本次修改无关:同种子同输入下 baseline 与修复分支输出 bit 级完全一致(V=3789 不走小V快路);该用例输入随机生成且构造数据踩 fp32 溢出区(logits_max∈(-1000,-10)、vocab 恒 6.1e-5),rmse 比值在阈值 2.0 两侧随机波动(复跑 9 次 7 次 PASS),属用例数据设计问题,建议后续调整该用例的数据范围或阈值。
- ophost UT 8/8 PASS(含新增 V=3 边界用例);新增 V=3/5/6 满 tile 边界用例 3/3 PASS。


确定性问题描述:[性能问题][aclnnFusedCrossEntropyLossWithMaxSum]aclnnFusedCrossEntropyLossWithMaxSum算子存在 性能问题(单case失败)
通路:aclnn
golden版本:20261103
golden链接:https://gitcode.com/opencann/operator-artifacts/blob/master/FusedCrossEntropyLossWithMaxSum/Golden/golden.py
cann版本:20261103
ttk版本:20261103
用例链接:https://gitcode.com/sleeveen/operator_test_case/tree/main/LongTail/Cases/Functional_Accuracy/Aclnn/aclnnFusedCrossEntropyLossWithMaxSum
用例名:aclnnFusedCrossEntropyLossWithMaxSum_L1_003
复现命令:python3 -m ttk aclnn -i 失败用例集_aclnnFusedCrossEntropyLossWithMaxSum_aclnn_性能失败.csv --plugin /home/CI/golden/aclnnFusedCrossEntropyLossWithMaxSum/ --device-whitelist=0 --dl=1 --xpu-perf -t aclnnFusedCrossEntropyLossWithMaxSum_L1_003
问题现象:
开发责任人:张磊
PL:张磊