已关闭
[Bug-Report|缺陷反馈]:mhc_post 多个UT用例失败:hRes空指针错误码不符、arch22 tiling用例期望过期 #5629
xuejinghui创建于  19 天前关闭于  18 天前
xuejinghui成员
19 天前 创建

[Bug-Report|缺陷反馈]: mhc_post 多个UT用例失败:hRes空指针错误码不符、arch22 tiling用例期望过期

Describe the current behavior / 问题描述 (Mandatory / 必填)

mhc_post 算子 UT 存在 4 个失败用例,分为两类问题:

问题1:op_api UT MhcPostOpapiUt.aclnn_mhc_post_empty_null_hRes 失败

hRes 传 nullptr 时,UT 期望返回 ACLNN_ERR_PARAM_NULLPTR(161001),实际返回 ACLNN_ERR_RUNTIME_ERROR(361001)。

根因:commit 5e8f48085(feat(mhc_post): 实现hres可选路径支持)在 aclnnMhcPostGetWorkspaceSize 中新增 SoC guard,非 Ascend950(DAV_3510)平台对 hRes == nullptr 返回 ACLNN_ERR_RUNTIME_ERROR。而 hRes 在 A2/A3 上为必填参数,传空属于参数错误;且 mhc 同族算子(mhc_pre 的 CheckRequiredHRes、mhc_post_backward 的 CheckNotNull)在相同场景均返回 ACLNN_ERR_PARAM_NULLPTR,mhc_post 为族内唯一异类,forward/backward 行为不一致。

问题2:arch22 tiling 3 个用例失败

MhcPostTilingArch22 下 test_mhc_post_3d_n6_success、test_mhc_post_invalid_n、test_mhc_post_invalid_d 全部失败。

根因:commit 6c31a2302(mhc_post性能优化,并做arch22&arch35隔离)将 arch22 tiling 收紧为仅支持 n=4 且 d 需满足 128 对齐(mhc_post_tiling_base_arch22.cpp:462-469),但同 commit 新增的 3 个 UT 用例期望值沿用旧泛化实现(期望 GRAPH_SUCCESS 及具体 tilingData),与收紧后的约束矛盾,自引入起从未通过:

  • test_mhc_post_3d_n6_success:n=6,arch22 不支持
  • test_mhc_post_invalid_n:n=7,用例名为 invalid 却期望 SUCCESS
  • test_mhc_post_invalid_d:d=30000,不满足 128 对齐(30000 % 128 = 48)

Environment Information / 环境信息 (Mandatory / 必填)

  • 仓库:ops-transformer master 分支(问题存在于 commit 5e8f48085 / 6c31a2302 之后)
  • CANN:9.3.0
  • 运行环境:x86_64 UT 仿真环境(op_api UT 使用框架默认平台 stub;tiling UT 通过 --soc 分别指定 Ascend910B / Ascend950)

Steps to reproduce the issue / 重现步骤 (Mandatory / 必填)

source ${ASCEND_HOME_PATH}/set_env.sh
cd ops-transformer

# 问题1:op_api UT
bash build.sh -u --opapi --ops=mhc_post -j16 --noexec
./build/tests/ut/framework_normal/op_api/transformer_op_api_ut \
    --gtest_filter=MhcPostOpapiUt.aclnn_mhc_post_empty_null_hRes

# 问题2:arch22 tiling UT(arch22 用例仅在 --soc=ascend910b 时编译)
bash build.sh -u --ophost --ops=mhc_post --soc=ascend910b -j16 --noexec
export BUILD_PATH=$PWD/build
./build/tests/ut/framework_normal/op_host/transformer_op_host_ut \
    --gtest_filter='MhcPostTilingArch22.*'

Describe the expected behavior / 预期结果 (Mandatory / 必填)

  1. aclnn_mhc_post_empty_null_hRes:非 Ascend950 平台 hRes 传 nullptr 应返回 ACLNN_ERR_PARAM_NULLPTR(161001),用例通过;
  2. arch22 tiling 用例:n=6 / n=7 / d=30000 在当前 arch22 约束(n=4、d%128==0)下 tiling 应返回 GRAPH_FAILED,用例期望与实现一致,全部通过。

问题1 失败日志:

[ RUN      ] MhcPostOpapiUt.aclnn_mhc_post_empty_null_hRes
mhc/mhc_post/tests/ut/op_host/op_api/test_aclnn_mhc_post.cpp:198: Failure
Expected equality of these values:
  aclRet
    Which is: 361001
  161001
[  FAILED  ] MhcPostOpapiUt.aclnn_mhc_post_empty_null_hRes (28 ms)

问题2 失败日志:

[ RUN      ] MhcPostTilingArch22.test_mhc_post_3d_n6_success
tests/ut/framework_normal/common/tiling_case_executor.cpp:334: Failure
Expected equality of these values:
  tilingRet
    Which is: 4294967295
  expectResult
    Which is: 0
[  FAILED  ] MhcPostTilingArch22.test_mhc_post_3d_n6_success (7 ms)
[  FAILED  ] MhcPostTilingArch22.test_mhc_post_invalid_n (0 ms)
[  FAILED  ] MhcPostTilingArch22.test_mhc_post_invalid_d (0 ms)

Special notes for this issue / 备注 (Optional / 选填)

修复方案(已提交分支 mhc_post_ut,commit 5f9e03f7a):

  1. aclnn_mhc_post.cpp:将 hRes 空指针检查移入 CheckNotNull,非 DAV_3510 平台返回 ACLNN_ERR_PARAM_NULLPTR,与 mhc_pre/mhc_post_backward 保持一致,删除原返回 ACLNN_ERR_RUNTIME_ERROR 的 SoC guard 代码块;
  2. arch22 tiling 测试:3 个过期用例期望改为 ge::GRAPH_FAILED,其中 test_mhc_post_3d_n6_success 同步更名为 test_mhc_post_3d_n6_invalid。

修复后验证结果:op_api UT 20/20 通过,ophost UT arch22 13/13 通过、arch35 10/10 通过。

另提示(UT 框架问题,与本缺陷无关):手动直接运行 transformer_op_host_ut 二进制前需先 export BUILD_PATH=$PWD/build,否则全局环境不加载 libophost_transformer_ut.so,空注册表导致 gert::OpImplSpaceRegistryV2::GetOpImpl 段错误。

likedislike
Xxuejinghui成员
19 天前 添加了label:bug-report
Xxuejinghui成员
19 天前 修改标题为 “[Bug-Report|缺陷反馈]:mhc_post 多个UT用例失败:hRes空指针错误码不符、arch22 tiling用例期望过期”,原标题为“[Bug-Report|缺陷反馈]: 11”
Xxuejinghui成员
19 天前 修改了issue 的描述
xuejinghui成员
19 天前 评论:

/assign

likedislike
CANN-robotCANN-robot成员
19 天前 将 xuejinghui 设为负责人
CANN-robotCANN-robot成员
18 天前 关闭了 issue
CANN-robotCANN-robot成员
18 天前 添加了label:resolved