已合并
feat: 算子910B~910E区间判断追加IsRegbase()并统一IsArch3510判断以兼容后续Regbase芯片 #10101
hahaha22创建于 12 天前
feat: 算子910B~910E区间判断追加IsRegbase()并统一IsArch3510判断以兼容后续Regbase芯片 #10101
已合并
hahaha22创建于 12 天前
hahaha22成员
12 天前

描述

以 RegBase 架构(NpuArch = DAV_3510,含 Ascend950 及后续 Regbase 芯片)兼容为目标,统一两类芯片判断写法:

  1. 区间判断追加:对 4 个算子 op_api 中 GetSocVersion() >= ASCEND910B && GetSocVersion() <= ASCEND910E 区间判断追加 || Ops::NN::AclnnUtil::IsRegbase(),使 RegBase 平台在 SocVersion 区间之外时也走 910B 支持分支
  2. 硬编码统一:将 1 个算子的本地架构判断封装函数(IsArch3510)实现改为 IsRegbase(),后续 Regbase 芯片无需逐文件修改

修改内容一:区间判断追加(4 个文件,4 处)

算子 文件 修改
logsoftmaxv2 activation/log_softmax_v2/op_api/aclnn_log_softmax.cpp CheckSocVersionIsSupportBf16 追加 IsRegbase();补 include
logsoftmaxgrad activation/log_softmax_grad/op_api/aclnn_logsoftmax_backward.cpp 同上(include 原已存在)
softmaxgrad activation/softmax_grad/op_api/aclnn_softmax_backward.cpp 同上(include 原已存在)
batchNormElemt norm/batch_norm_elemt/op_host/op_api/aclnn_batch_norm_elemt.cpp 追加 IsRegbase() 并删除冗余 == SocVersion::ASCEND950;补 include

关于删除 == SocVersion::ASCEND950 的说明

SocVersion 枚举中 ASCEND950 = ASCEND910_95(值 3)位于 ASCEND910B(1)与 ASCEND910E(4)之间,区间判断本已覆盖 950,原 || == ASCEND950 分支从不单独生效;且 Ascend950 的 NpuArch 即 DAV_3510,IsRegbase() 对 950 同样为真。净效果为纯扩展,存量平台无收窄。

修改内容二:硬编码判断统一(1 个文件,1 处)

  • layerNormV4:norm/layer_norm_v4/op_host/op_api/aclnn_layer_norm.cpp:123 —— IsArch3510() 函数体改为 Ops::NN::AclnnUtil::IsRegbase()(调用点不动)

范围说明

  • addRmsNormQuantV2(aclnn_add_rms_norm_quant_v2):upstream !10098(完善RMSNorm量化校验)已将其 IsSocVersion950() 统一改名并实现为 IsRegbase(),本次不改,与 upstream 保持零 diff
  • batchNormGradV3(aclnn_fast_batch_norm_backward):经评审本次不改,与 upstream 保持零 diff,其恒真条件见关联 Issue
  • 公共头 level2_base_caculation.h、experimental 目录、tests 不在本次范围,遗留问题见关联 Issue

关联的Issue

  • #5707 (ops-nn仓RegBase兼容遗留问题清理:公共头IsRegbase同步、恒真条件修正、重复查询优化)

测试

  • pre-commit 检查(clang-format/codespell/OAT 等)全部通过
  • 修改文件 g++ -fsyntax-only 语法验证通过
  • 已触发 compile 编译
  • 建议测试项:
    1. 910B/910E 平台回归 BF16 正反向用例行为不变
    2. Ascend950 平台回归(验证删除 == ASCEND950 等价、layerNormV4 的 950 分支行为不变)
    3. RegBase 平台 BF16 用例由校验拒绝变为正常放行
    4. 区间外平台(910/310/310P)BF16 仍被拦截

文档更新

类型标签

关联issue

likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 hahaha22 的贡献)
Hhahaha22成员
12 天前 创建了 pull request,commit ca83bf57
atomgit-bot
atomgit-bot
12 天前 评论:

变更摘要

本 PR 为 5 个算子的 SoC 版本区间判断追加 Ops::NN::AclnnUtil::IsRegbase() 条件,使 ascend350(RegBase/DAV_3510)平台在 GetSocVersion() 处于 ASCEND910B~ASCEND910E 区间之外时,也能走 910B 支持分支(bf16 dtype 支持逻辑)。涉及 logsoftmaxv2softmaxgradlogsoftmaxgradbatchNormElemtbatchNormGradV3 五个算子,同时为其中三个文件补充 op_api/aclnn_util.h 头文件引入,并修正 batchNormGradV3 中一处疑似笔误的恒真判断条件。

主要改动

  • CheckSocVersionIsSupportBf16() 追加 IsRegbase():在 aclnn_logsoftmax_backward.cppaclnn_log_softmax.cppaclnn_softmax_backward.cpp 中,将原 910B <= version <= 910E 的返回条件改为 (910B <= version <= 910E) || Ops::NN::AclnnUtil::IsRegbase(),使 ascend350 平台也能返回 bf16 支持。
  • batchNormElemt dtype 支持列表判断追加 IsRegbase():在 aclnn_batch_norm_elemt.cppCheckDtypeValid 中,原有 ASCEND910B~910EASCEND950 的判断基础上追加 Ops::NN::AclnnUtil::IsRegbase(),决定选用 ASCEND910B_DTYPE_SUPPORT_LIST
  • 修正 batchNormGradV3 恒真条件并追加 IsRegbase():在 aclnn_fast_batch_norm_backward.cppGetDtypeSupportList() 中,将原 >= ASCEND910B || <= ASCEND910E(恒真,疑似笔误)修正为 &&,并追加 || Ops::NN::AclnnUtil::IsRegbase(),使该算子返回 ASCEND910B_DTYPE_DTYPE_SUPPORT_LIST 的条件与其余算子一致。
  • 补充头文件引入:为 aclnn_log_softmax.cppaclnn_batch_norm_elemt.cppaclnn_fast_batch_norm_backward.cpp 补充 #include "op_api/aclnn_util.h",以支持调用 Ops::NN::AclnnUtil::IsRegbase()
likedislike
不准确?
atomgit-bot
atomgit-bot
12 天前 评论:

代码审查

✅ 未发现问题

likedislike
不准确?
CANN-robotCANN-robot成员
12 天前 添加了label:cann-cla/yes
CANN-robot
CANN-robot成员
12 天前 评论:

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.
You can self-configure the PR merge rules for this repository. For more details, please refer to Here.
For more, you also can visit HICANN.


PR Approval Progress

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

Module Approval Details

module lgtm status approve status
activation 钱泽洪, 王星 (2/2) 钱泽洪, 王星 (2/1)
norm 钱泽洪, 王星 (2/2) 钱泽洪, 王星 (2/1)

💡 Tip:

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

CLA Signature Pass

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

likedislike
此处折叠了91条消息 查看更多
wang-xing001成员
10 天前 评论:

/lgtm
/approve

likedislike
CANN-robotCANN-robot成员
10 天前 添加了label:lgtm
CANN-robotCANN-robot成员
10 天前 关闭了关联的issue
CANN-robotCANN-robot成员
10 天前 合入了pull request
CANN-robot
CANN-robot成员
10 天前 评论:

Pull Request 已合并或已关闭。

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

likedislike