Merged
修复CCE指令参数传输错误的问题 #4352
leozjrAdd on Jul 14
修复CCE指令参数传输错误的问题 #4352
Merged
leozjrAdd on Jul 14
Merged fromDeleted :fix/A5-interfaces-bugintocann/asc-devkitmaster
leozjr
leozjrCollaborators
Jul 14

描述

修复 cube_datamove_impl 中 copy_gm_to_cbuf_v2 与 copy_matrix_cc_to_cbuf 调用缺失参数导致的 CCE 指令参数传输错误。

具体改动:

  • asc_copy_gm2l1_impl.h:copy_gm_to_cbuf_v2 调用补齐 pad_func_mode 与 src_stride 之间缺失的参数(补 0)。
  • asc_copy_l0c2l1_impl.h:8 个 copy_matrix_cc_to_cbuf 重载调用补齐缺失实参(src_stride 后补 false、clip_relu_post 后补 false、eltwise_antq_en 后补 false,并在末尾补 false, false, false),使调用与 API 签名一致。

关联的Issue

关联Issue #1253

测试

文档更新

无

类型标签

likedislike
Pull Request has been successfully merged by CANN-robot.
(Thank you for leozjr's contribution.)
leozjrleozjrCollaborators
Jul 14 Created pull request, commit 101efd80
atomgit-bot
atomgit-bot
Jul 14 Comments:

变更摘要

此 PR 修复了 cube_datamove_impl 模块中因调用 copy_gm_to_cbuf_v2 和 copy_matrix_cc_to_cbuf 时参数缺失导致的 CCE 指令参数传输错误。具体而言,在 asc_copy_gm2l1_impl.h 中为 copy_gm_to_cbuf_v2 补充了缺失的中间参数;在 asc_copy_l0c2l1_impl.h 中为 8 个 copy_matrix_cc_to_cbuf 重载调用补齐了多个缺失的布尔实参,使所有调用与底层 API 签名完全一致。

主要改动

  • copy_gm_to_cbuf_v2 调用补全缺失参数: 在 asc_copy_gm2l1_impl.h 中,copy_gm_to_cbuf_v2 的调用在 pad_func_mode 与 src_stride 之间补充了缺失的参数 0,确保参数位置对齐。

  • copy_matrix_cc_to_cbuf 调用补全缺失布尔参数: 在 asc_copy_l0c2l1_impl.h 的 8 个 asc_copy_l0c2l1_impl 重载中,统一在 src_stride 之后补充 false、在 clip_relu_post 之后补充 false、在 eltwise_antq_en 之后补充 false,并在末尾追加 false, false, false,修复了因参数缺失导致的指令参数传输错位问题。

likedislike
Incorrect?
atomgit-bot
atomgit-bot
Jul 14 Comments:

代码审查

经过对两个文件的全面审查,我现在可以得出结论了。

审查分析

文件 1: asc_copy_gm2l1_impl.h

  • 整个文件中只有一处调用 copy_gm_to_cbuf_v2(第 28 行)。
  • 旧调用传了 8 个实参,新调用在 pad_func_mode 与 src_stride 之间补了一个 0,变为 9 个实参,与 PR 描述一致。
  • 其余重载使用 load_gm_to_cbuf_2dv2 / load_gm_to_cbuf_2dv2_s4 等不同 API,不受本次变更影响。

文件 2: asc_copy_l0c2l1_impl.h

  • 8 个调用 copy_matrix_cc_to_cbuf 的重载全部被统一修复:在 src_stride 后补 false、clip_relu_post 后补 false、eltwise_antq_en 后补 false、c0_pad_en 后补 false, false, false。
  • 与同文件中已有的 copy_matrix_cc_to_cbuf_s4 调用的参数位置对比完全一致:_s4 版本在对应位置传入 l2_cache_ctl、broadcast_en、nz2dn_en,普通版本用 false 禁用这些特性,逻辑合理。
  • 2 个 copy_matrix_cc_to_cbuf_s4 重载(void+float、void+int32_t)未发现参数缺失。
  • 所有 sync_impl 调用与对应 _impl 签名匹配,无问题。

两个文件的修改均正确补齐了缺失的指令参数,与 API 签名对齐,不存在引入新问题的风险。


关闭摘要

  • P0: 0
  • P1: 0
  • P2: 0
  • P3: 0

总体风险评估: 此变更是低风险的 Bug 修复。两个文件中的参数补全准确、一致,与同文件中已有的 _s4 变体调用模式吻合,不会引入正确性、安全或可靠性问题。

  • impl/c_api/instr_impl/npu_arch_3510/cube_datamove_impl/asc_copy_gm2l1_impl.h — 已审查,no issues
  • impl/c_api/instr_impl/npu_arch_3510/cube_datamove_impl/asc_copy_l0c2l1_impl.h — 已审查,no issues
类型 数量
🔴 阻塞 1
🟡 建议 0

⛔ 需要修改

likedislike
Incorrect?
CANN-robotCANN-robotCollaborators
Jul 14 Added label: cann-cla/yes
CANN-robot
CANN-robotCollaborators
Jul 14 Comments:

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
impl/c_api ✅ wuyang_hw, pangfd, 诸葛洵 (3/2) ✅ pangfd (1/1)
repo-cann/asc-devkit ✅ 诸葛洵, wuyang_hw (2/2) ✅ 诸葛洵 (1/1)

💡 Tip:

  • Committer can comment /approve or /lgtm
  • Commenting /approve implies both code review (lgtm) and intent to merge (approve)

CLA Signature Pass

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

likedislike
63 messages are collapsed here。 See more
吴洋Collaborators
Jul 15 Comments:

/lgtm

likedislike
CANN-robotCANN-robotCollaborators
Jul 15 Added label: lgtm
CANN-robot
CANN-robotCollaborators
Jul 15 Comments:

The MR can not be merged, because of CodeReview discussion not resolved

If you want to solve this problem, you can click here to do it in the FAQs.

likedislike
leozjrleozjrCollaborators
Jul 15 Resolved final issue
CANN-robotCANN-robotCollaborators
Jul 15 Merged pull request