Closed
[Bug|算子缺陷][迭代加固]: aclnnMoeFinalizeRoutingV3 multithread 压测发现 是bug #576
Alice_zhouAdd on  1 day agoClosed at  1 day ago
Alice_zhouCollaborators
1 day ago Create

一、问题描述(必填)

  • 接口名:aclnnMoeFinalizeRoutingV3;测试场景:multithread;压测日期:2026-11-13;执行卡号:0
  • 压测结果:总条数 100000 / 实际成功 96932 / 实际失败 3068
  • bug 判定:是bug(经 执行日志+plog+资料 三方交叉分析,详见判定依据)
  • 是否存在 aicore_error:是:kernel_name=MoeFinalizeRoutingV2(与non_contig场景归并)
  • 失败原因摘要:是bug:与non_contig同kernel_name=MoeFinalizeRoutingV2的aivec崩溃(非连续场景混合复现,归并同一issue);其余为GWS kernel选型跳过

二、问题复现步骤(必填)

  1. 下载测试框架:https://gitcode.com/Alice_zhou/Vector_fuzz_cpp_testing/tree/main/turing_sec/aclnnAPI_fuzz/
  2. 环境准备(清除原有内容,将附件 cpp 放入对应目录下):
    rm -rf aclnnAPI_fuzz/src/op/*
    # 将附件 aclnnMoeFinalizeRoutingV3_multithread.cpp 放入 aclnnAPI_fuzz/src/op_multithread/ 下
    
    (本场景 cpp 目录:aclnnAPI_fuzz/src/op_multithread/)
  3. 编译:
    cd aclnnAPI_fuzz/ ; make op_fuzz TARGET=multithread
    
  4. 执行:
    cd out ; ./aclnnAPI_fuzz_multithread 5 100000 0 5 0
    

三、附件与证据(必填)

💡 存在的问题(选填)
该问题由 fuzz 自动化压测平台发现(每日自动统计当天判定为 bug 的记录并提单);如需更多上下文(完整打屏日志/plog/覆盖度报告),请下载上方附件压缩件。

🔍 代码bug点定位(2026-11-13,结合 ops-* git 仓源码复核)

与 #575(non_contig 场景)同根因:kernel MoeFinalizeRoutingV2 对合法非连续输入(md 全√)VEC UB 越界(errcode 341)。multithread 场景混合连续+非连续(scene 0~5)复现同一缺陷。

代码排查与定位分析同 #575 的「代码bug点定位」章节(aclnn 层 Contiguous() 链 op_host/op_api/aclnn_moe_finalize_routing_v3.cpp:81-127 / tiling 无非连续分支 / kernel pc 0x120041073eb8 需 core 现场)。任一修复后两处复测闭环。


✅ 定性修正(2026-11-14,开发复核采纳 + 框架修复复测定谳)

结论修正:不是bug(测试框架 F1 索引有界性缺陷),本 issue 关闭。

开发复核(@guoqiuhao)确认的根因——测试框架缺陷而非算子缺陷:

  1. 框架 CreateAclTensorByScene(utils.h:290-304)按 storageShape 分配内存后仅将 hostData 连续拷贝到存储前部,未按 stride/offset 写入逻辑元素、未初始化剩余存储
  2. 实测附件佐证:case_4 expandedRowIdx viewShape=[128]/stride=[2]/storageShape=[256],hostData 大小=view 元素数(128),仅覆盖物理 0~127;视图读取 0、2、…、254,其中逻辑元素 64~127(物理 128~254)为未初始化存储——垃圾索引值进入 kernel 后形成与日志相符的 VEC UB 越界
  3. 原 F1~F7 复核遗漏点:仅核对了 hostData 值有界(全 1),未核对框架写入位置正确性与存储完整初始化

框架修复(已落地 turing_sec 与 turing_sec_card1 两实例 inc/utils/utils.h):

  • 按 stride/offset 将逻辑元素写入物理位置 + 全存储以 hostData[0] 初始化 + 标准连续布局快路径

修复后复测证据(Ascend 950 / CANN 9.3.0):

  • 本接口 non_contig 全量 10000 条:成功 9767 / 同步失败 0 / aicore_error 0(修复前:成功 1519、同步失败 8197 次 507035 vector core exception、全进程 aivec)
  • 1000 条快速复测:974/1000 成功、0 同步失败

同根因关联:#576(multithread 场景)与 #582(aclnnSituMxQuant multithread broadcast aicore)同为该框架缺陷所致,一并修正关闭;#582 复测(单接口目录 5000 条)4910/5000 成功、0 aivec、进程完整结束。

likedislike
AAlice_zhouCollaborators
1 day ago Modify description of issue
AAlice_zhouCollaborators
1 day ago Close issue
AAlice_zhouCollaborators
1 day ago Modify description of issue
AAlice_zhouCollaborators
9 hours ago Modify description of issue