已合并
batch_norm_v3/rms_norm_grad : 还原 infer/dgamma 计算的内联写法 #8107
batch_norm_v3/rms_norm_grad : 还原 infer/dgamma 计算的内联写法 #8107
已合并
rk创建于 7月30日
rk成员
7月30日

描述

将 batch_norm_v3 三个 infer 变体(InferLastChannelContinuousA、InferLastChannelSmallA、InferSmallAB1)的 Compute 方法与 rms_norm_grad 的 CalcDgamma 计算路径由 helper 间接调用改回内联实现,去掉 InferComputeImpl、ComputePreDgamma 两个间接层,使 arch35 设备侧计算路径更直观。

改动原因

此前 infer Compute 统一通过 InferComputeImpl 模板函数间接调用 VFNormalize,rms_norm_grad dgamma 通过 ComputePreDgamma 间接组装 EnQue/DeQue/计算/Free 流程。间接层增加了阅读成本:调用点看不到实际的数据搬运与计算顺序,需跳转 helper 才能理解设备侧行为。

改动方法

  • batch_norm_v3 三个 infer 变体:Compute 内联 DeQue → AllocTensor → Get → GetPhyAddr → VFNormalize → EnQue → FreeTensor 全流程,删除对 InferComputeImpl 的调用;同时移除为暴露 VFNormalize 而插入的 public:/private: 访问控制切换,恢复为类内私有方法。
  • batch_norm_v3_regbase_common.h:删除不再被引用的 InferComputeImpl 模板函数(-26 行)。
  • rms_norm_grad_regbase_dgamma.h:删除 ComputePreDgamma 方法,将其逻辑(EnQue/DeQue/GetPhyAddr/VFCalcPreDgamma/FreeTensor)内联到 CalcDgamma 及两处循环调用点;dgammaOutAddr 由输出参数改为局部变量。

不改变计算逻辑、计算顺序与内存分配顺序。

关联的Issue

测试

pass

文档更新

无。

类型标签

AI/Agent生成声明

likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 rk 的贡献)
Rrk成员
7月30日 创建了 pull request,commit 6a2f666f
atomgit-bot
atomgit-bot
7月30日 评论:

变更摘要

此 PR 主要对 batch_norm_v3 的 infer 内核和 rms_norm_grad 的 dgamma 计算进行了"还原内联写法"的重构:删除了中间层辅助函数模板 InferComputeImpl 和成员函数 ComputePreDgamma,将原本通过函数调用间接执行的 Queue 操作和 VFNormalize/VFCalcPreDgamma 调用直接展开到各 Compute 方法中,同时调整了相关成员函数的访问控制标签。

主要改动

  • 移除 InferComputeImpl 模板函数:在 batch_norm_v3_regbase_common.h 中删除了 InferComputeImpl 函数模板(-26 行),该函数原本封装了从 Queue 出队/入队、获取物理地址、调用 VFNormalize 的通用流程。

  • batch_norm_v3 infer 三个内核的 Compute 方法内联化:在 BatchNormV3InferLastChannelContinuousA、BatchNormV3InferLastChannelSmallA 和 BatchNormV3InferSmallAB1 中,将原本对 InferComputeImpl 的调用替换为直接的内联实现,包括显式的 DeQue/AllocTensor/GetPhyAddr/EnQue/FreeTensor 调用及对 VFNormalize 的直接调用。

  • VFNormalize 访问控制调整:在上述三个类中,将 VFNormalize 的可见性从 public 改为紧邻 private: 标签之前的默认(隐式 public 或 struct 默认)位置,同时相应移动了 private: 标签,使类结构更紧凑。

  • 移除 ComputePreDgamma 成员函数:在 rms_norm_grad_regbase_dgamma.h 中删除了 ComputePreDgamma 函数,将其内部逻辑(出队获取物理地址、调用 VFCalcPreDgamma、释放 tensor)分别内联到 CalcDgamma 以及两个 Compute 循环分支中。

  • CalcDgamma 和 Compute 循环体的内联展开:在 CalcDgamma 和两处 Compute 循环体内,将原来调用 ComputePreDgamma + 获取 dgammaOutAddr 的间接方式,替换为直接进行 EnQue/DeQue/GetPhyAddr/VFCalcPreDgamma/FreeTensor 的完整序列,消除了一层函数间接调用。

likedislike
不准确?
atomgit-bot
atomgit-bot
7月30日 评论:

代码审查

✅ 未发现问题

likedislike
不准确?
CANN-robotCANN-robot成员
7月30日 添加了label:cann-cla/yes
CANN-robot
CANN-robot成员
7月30日 评论:

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
norm ✅ 陈昊文, 唐玮玮 (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

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

likedislike
CANN-robotCANN-robot成员
7月30日 将zengjuan,kevin_huang1234,crystalhu,yangyang016,fanqirui,renruhai,su-yueming,zhajianqing123,chenqi317,wang-xing001,liubo75,tangweiwei2,liujie12345678,Chen_HaoWen设为评审人
此处折叠了5条事件消息 查看更多
CANN-robotCANN-robot成员
7月30日 添加了label:cann-cla/yes
rk成员
7月30日 评论:

compile

likedislike
Rrk成员
7月30日 预合并成功(commit_id: fc173584dd1464cbc9c14985a20ed55a56673ceb)
CANN-robotCANN-robot成员
7月30日 添加了label:ci-pipeline-running
CANN-robot
CANN-robot成员
7月30日 评论:

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

任务名称状态日志下载链接
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 >>>>>
Compile_Ascend_X86_mobile_station_9030_ubuntu24 ✅ 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_harmony-infer-cpro-nn ✅ SUCCESS
UT_Test_report_lcov ✅ SUCCESS >>>>>

[2026-07-30 17:04:14]    CI执行结束

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

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

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

[2026-07-30 16:50:22]    CI执行结束

likedislike
CANN-robotCANN-robot成员
7月30日 添加了label:api-check-pass
此处折叠了8条事件消息 查看更多
Rrk成员
7月30日 修改标题为 “batch_norm_v3/rms_norm_grad : 还原 infer/dgamma 计算的内联写法”,原标题为“refactor: 还原 batch_norm_v3/rms_norm_grad infer/dgamma 计算的内联写法”
tangweiwei2成员
7月31日 评论:

/lgtm
/approve

likedislike
Chen_HaoWen成员
7月31日 评论:

/approve

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