已合并
Conv:WeightUbTrans NDDMA bug fix #7453
高维健创建于 7月13日
Conv:WeightUbTrans NDDMA bug fix #7453
已合并
高维健创建于 7月13日
高维健
高维健成员
7月13日

描述

卷积正向WieghtUbTrans模板在k轴尾块Ci不满足C0对齐时需要配置loopRpSize补0,补齐大小为Ci补 * kh * kw,若kh*kw较大,会超出loopRpSize的支持范围:[0-255],三数值溢出不符合预期,导致部分内存未初始化,偶现精度失败nan。

关联的Issue

#4168

测试

针对相关问题,修复后多次压测,已稳定通过

文档更新

类型标签

AI/Agent生成声明

likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 高维健 的贡献)
高维健高维健成员
7月13日 创建了 pull request,commit aa897e2b
atomgit-bot
atomgit-bot
7月13日 评论:

变更摘要

该 PR 修复了 Conv:WeightUbTrans 中 NDDMA 数据传输的维度配置错误。原实现使用 2 维 NDDMA(NDDMA_DIMS_NO_TRANS)进行权重 UB 转置的搬运,导致循环层级和步长设置不正确。此变更将 NDDMA 维度切换为 3 维(NDDMA_DIMS),重新组织了三层循环的参数分配(Loop0 负责卷积核空间维度 kernelHxkernelW,Loop1 负责 K 维分步,Loop2 负责 N 维分步),并相应调整了 currentUbKStep 的计算方式以匹配新的循环语义。

主要改动

  • 移除 NDDMA_DIMS_NO_TRANS 常量,统一使用 NDDMA_DIMS(3维):在 conv_util.h 中删除了 NDDMA_DIMS_NO_TRANS = 2 常量,确保 NDDMA 调用统一使用 3 维配置。
  • 重构 NDDMA 循环参数为三层结构:在 conv2d_v2_instr_weight_ub_trans_impl.h 中,将原来的两层 NDDMA 循环扩展为三层——Loop0 遍历 kernelHxkernelW,Loop1 遍历 currentUbKStep,Loop2 遍历 currentUbNStepMultiCopyParamsDataCopy 模板参数从 NDDMA_DIMS_NO_TRANS 改为 NDDMA_DIMS
  • LoadGM2UBAlign 中补偿 currentUbKStep:新增 currentUbKStep *= kernelHxkernelW,使对齐搬运的步长与新的循环维度语义保持一致。
  • 修正 currentUbKStep 的计算:在 conv2d_v2_weight_ub_trans_impl.h 中,将尾块和正常路径下的 currentUbKStep 计算改为除以 kernelHxkernelW,并同步调整 currentKLoopRpSize 的对齐计算。
likedislike
atomgit-bot
atomgit-bot
7月13日 评论:

代码审查

审查总结

优先级 数量 说明
P0 0
P1 0
P2 0
P3 2 注释不匹配 + 缺少可除尽断言

各文件审查结果:

  • conv/common/op_kernel/arch35/conv_util.h:无问题。仅删除了 NDDMA_DIMS_NO_TRANS = 2 常量,全仓无残留引用,清理干净。
  • conv/conv2d_v2/op_kernel/arch35/conv2d_v2_instr_weight_ub_trans_impl.h:1 个 P3 问题(第 58-61 行注释与实际 NDDMA_LOOP*_INDEX 不匹配)。NDDMA 从 2D 切换到 3D 的逻辑推导正确:Loop0 承担 kernelHxkernelW 维度(静态参数仅首轮设置),Loop1/Loop2 承担 K/N 维度(每轮动态更新),LoadGM2UBAlign 中的 *=kernelHxkernelW 乘回操作安全且正确。
  • conv/conv2d_v2/op_kernel/arch35/conv2d_v2_weight_ub_trans_impl.h:1 个 P3 问题(第 252-256 行除法缺少可除尽断言)。currentUbKStep 的新语义(除以 kernelHxkernelW)与 currentKLoopRpSizeAlignB 对齐公式经数学验证与旧代码等价的总体数据传输量,k0 对齐策略比旧代码更精确地匹配下游 TransND2NZ 的处理粒度。

整体风险评估:低风险。 核心逻辑正确,NDDMA 维度扩展的一致性好。两个 P3 问题均属于可改进项,不影响正确性。

⚠️ 已识别出整体风险,但无法提取行内评论,请参考整体评估。

likedislike
CANN-robotCANN-robot成员
7月13日 添加了label:cann-cla/yes
CANN-robot
CANN-robot成员
7月13日 评论:

CLA Signature Pass

weijian317, thanks for your pull request. All authors of the commits have signed the CLA. 👍

likedislike
CANN-robot
CANN-robot成员
7月13日 评论:

Thanks for your pull-request.
The full list of commands accepted by me can be found at here
You can get sig-info at here


PR Approval Progress

Congratulations! All modules have met the lgtm and approve requirements.

Module Approval Details

module lgtm status approve status
conv 王慈孟, 唐玮玮 (2/2) 王慈孟 (1/1)

💡 Tip:

  • Committer can comment /approve or /lgtm
  • Commenting /approve implies both code review (lgtm) and intent to merge (approve)
likedislike
CANN-robotCANN-robot成员
7月13日 将zengjuan,cheng_gao,crystalhu,yangyang016,fanqirui,chenqi317,lileizheng,liubo75,LiuZonggu,tangweiwei2,wangcimeng,huafeng793,shenchengzong,yuxin5设为评审人
CANN-robotCANN-robot成员
7月13日 将cheng_gao,lileizheng,LiuZonggu,wangcimeng,huafeng793,shenchengzong,yuxin5设为审查人
高维健
高维健成员
7月13日 评论:

compile

likedislike
高维健高维健成员
7月13日 update merge request[project id: 7665709, iid: 7453, commit_id: c29abfa1b7a5074a610eb8de9f0dcea56bff0f84] virtual merging success
CANN-robotCANN-robot成员
7月13日 添加了label:ci-pipeline-running
CANN-robot
CANN-robot成员
7月13日 评论:

流水线任务触发成功
任务链接 [b465c655b0f04b998dc79dd8d848e030][流水线指导]

任务名称状态日志下载链接
Compile_Ascend_X86_ubuntu24 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_X86_mobile_station ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_ARM ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_single ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_experimental ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_X86_950 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_ARM_950 ✅ SUCCESS >>>>> >>>>>
Compile_Pre ✅ SUCCESS >>>>>
pre_comment ✅ SUCCESS >>>>>
Compile_Ascend_X86 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_X86_mobile_station_ubuntu24 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_X86_950_ubuntu24 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_ARM_ubuntu24 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_single_ubuntu24 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_experimental_ubuntu24 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_ARM_950_ubuntu24 ✅ SUCCESS >>>>> >>>>>
Compile_X86_monitor_910b ✅ SUCCESS >>>>> >>>>>
Compile_X86_monitor_910c ✅ SUCCESS >>>>> >>>>>
Compile_X86_monitor_950 ✅ SUCCESS >>>>> >>>>>
Compile_classify ✅ SUCCESS >>>>>
UT_Test_ophost ✅ SUCCESS
UT_Test_opapi ✅ SUCCESS
UT_Test_kernel ✅ SUCCESS
UT_Test_opgraph ✅ SUCCESS
PreSmoke_A900 ✅ SUCCESS >>>>>
API_Check ✅ SUCCESS >>>>>
PreSmoke_ATK_Test_A2 ✅ SUCCESS >>>>>
UT_Test_harmony-infer-chs-nn ✅ SUCCESS
UT_Test_report_lcov ✅ SUCCESS >>>>>

[2026-07-13 17:56:29]    CI执行结束

likedislike
CANN-robot
CANN-robot成员
7月13日 评论:

流水线任务触发成功
任务链接 [e1f0b827b4b740c8af1e03429bd48e18][流水线指导]

任务名称状态日志下载链接
codecheck ✅ SUCCESS >>>>>
antipoison ✅ SUCCESS >>>>>
codecheck_checkpr ✅ SUCCESS
StaticCheck_codespell ✅ SUCCESS
StaticCheck_link_validity ✅ SUCCESS
StaticCheck_resource_existence ✅ SUCCESS
StaticCheck_tag_closed ✅ SUCCESS
StaticCheck_markdownlint ✅ SUCCESS
codecheck_style ✅ SUCCESS >>>>>
codecheck_precommit ✅ SUCCESS >>>>>
SCA ✅ SUCCESS >>>>>

[2026-07-13 17:22:46]    CI执行结束

likedislike
CANN-robotCANN-robot成员
7月13日 添加了label:api-check-pass
CANN-robotCANN-robot成员
7月13日 删除了label:ci-pipeline-running
CANN-robotCANN-robot成员
7月13日 添加了label:ci-pipeline-passed
lileizheng成员
7月13日 评论:

/reject

likedislike
conv2d_ci
7月13日 评论:
pipeline history
TimeNameResultLink
2026-07-13 17:59:03Start_PipelineMR_324
likedislike
conv2d_ci
7月13日 评论:
pipeline history
TimeNameResultLink
2026-07-13 18:02:01Sync_PR :white_check_mark: SUCCESSIe4b266a
likedislike
conv2d_ci
7月13日 评论:
pipeline history
TimeNameResultLink
2026-07-13 18:02:20Trigger_SC :white_check_mark: SUCCESS20260713_180617486
likedislike
conv2d_ci
7月13日 评论:
pipeline history
TimeNameResultLink
2026-07-13 18:07:05CMETRICS :white_check_mark: SUCCESS>>>
likedislike
conv2d_ci
7月13日 评论:
pipeline history
TimeNameResultLink
2026-07-13 18:07:26Trigger_RDV :white_check_mark: SUCCESS20260713_181123778
likedislike
conv2d_ci
7月14日 评论:
pipeline history
TimeNameResultLink
2026-07-14 14:54:43commit2026-07-13T17:16:05+08:00a533c48a
Compile_Result :x: NOT_RUN
SC_Result :white_check_mark: SUCCESS>>>
RDV_Result:ALL :x: RUNNING>>>
本次未执行的rdv任务为
序号任务名未执行理由
11951DCNone
2davinci_tbe_mdcNone
3rdv_tbe_1951dc_01None
4rdv_tbe_1951lite_01None
5Smoke_1911mdc切换至br_feature_pegasus_v100r003c10b770_main
6rdv_tbe_1911rc_01暂时下线
7Smoke_nano暂无用例
8Smoke_nanoc11None
9rdv_tbe_1952_01None
10David该组的RDV疑似不需要运行:[rdv_tbe_david_01, rdv_tbe_david_02, rdv_tbe_david_03]
11transpose该组的RDV疑似不需要运行:[Davinci_RDV_conv_back_V121, conv_backward_1982_rdv, conv_backward_1971_rdv, conv_transpose_1952_rdv]
likedislike
tangweiwei2成员
7月16日 评论:

/lgtm
/approve

likedislike
tangweiwei2成员
7月17日 评论:

/lgtm
/approve

likedislike
高维健高维健成员
7月20日 修改了pull request 的描述
高维健
高维健成员
7月20日 评论:

compile

likedislike
高维健高维健成员
7月20日 update merge request[project id: 7665709, iid: 7453, commit_id: 0e8e7c4c569646d42f5824e5c8d55d82f59001d9] virtual merging success
CANN-robotCANN-robot成员
7月20日 删除了label:ci-pipeline-passedapi-check-pass
CANN-robotCANN-robot成员
7月20日 添加了label:ci-pipeline-running
CANN-robot
CANN-robot成员
7月20日 评论:

流水线任务触发成功
任务链接 [0460a99ca2ca435985b10ae61cae56c5][流水线指导]

任务名称状态日志下载链接
Compile_Ascend_X86_ubuntu24 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_X86_mobile_station ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_ARM ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_single ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_experimental ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_X86_950 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_ARM_950 ✅ SUCCESS >>>>> >>>>>
Compile_Pre ✅ SUCCESS >>>>>
pre_comment ✅ SUCCESS >>>>>
Compile_Ascend_X86 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_X86_mobile_station_ubuntu24 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_X86_950_ubuntu24 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_ARM_ubuntu24 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_single_ubuntu24 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_experimental_ubuntu24 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_ARM_950_ubuntu24 ✅ SUCCESS >>>>> >>>>>
Compile_X86_monitor_910b ✅ SUCCESS >>>>> >>>>>
Compile_X86_monitor_910c ✅ SUCCESS >>>>> >>>>>
Compile_X86_monitor_950 ✅ SUCCESS >>>>> >>>>>
Compile_classify ✅ SUCCESS >>>>>
UT_Test_ophost ✅ SUCCESS
UT_Test_opapi ✅ SUCCESS
UT_Test_kernel ✅ SUCCESS
UT_Test_opgraph ✅ SUCCESS
PreSmoke_A900 ✅ SUCCESS >>>>>
API_Check ✅ SUCCESS >>>>>
PreSmoke_ATK_Test_A2 ✅ SUCCESS >>>>>
UT_Test_harmony-infer-chs-nn ✅ SUCCESS
UT_Test_harmony-infer-chs-nn-1 ✅ SUCCESS
UT_Test_report_lcov ✅ SUCCESS >>>>>

[2026-07-20 15:09:24]    CI执行结束

likedislike
CANN-robot
CANN-robot成员
7月20日 评论:

流水线任务触发成功
任务链接 [bf237cb2385e4469bf6b29c551234942][流水线指导]

任务名称状态日志下载链接
antipoison ✅ SUCCESS >>>>>
codecheck_checkpr ✅ SUCCESS
StaticCheck_codespell ✅ SUCCESS
StaticCheck_link_validity ✅ SUCCESS
StaticCheck_resource_existence ✅ SUCCESS
StaticCheck_tag_closed ✅ SUCCESS
StaticCheck_markdownlint ✅ SUCCESS
codecheck_style ✅ SUCCESS >>>>>
codecheck_precommit ✅ SUCCESS >>>>>
SCA ✅ SUCCESS >>>>>

[2026-07-20 14:31:40]    CI执行结束

likedislike
CANN-robotCANN-robot成员
7月20日 添加了label:api-check-pass
CANN-robotCANN-robot成员
7月20日 删除了label:ci-pipeline-running
CANN-robotCANN-robot成员
7月20日 添加了label:ci-pipeline-passed
wangcimeng成员
7月20日 评论:

/lgtm
/approve

likedislike
CANN-robotCANN-robot成员
7月20日 添加了label:lgtmapproved
CANN-robotCANN-robot成员
7月20日 关闭了关联的issue
CANN-robotCANN-robot成员
7月20日 合入了pull request