已合并
[fix]v220算子编译修复 #2303
[fix]v220算子编译修复 #2303
已合并
zhoucy创建于 3月13日
zhoucy
zhoucy成员
3月13日

问题/功能描述

本次PR为多个AscendC自定义AI Core算子添加了对Ascend 950芯片的编译支持。主要解决了在构建针对Ascend 950平台的算子包时,由于缺少相应的芯片配置宏定义,导致算子无法正确注册和编译的问题,从而确保了算子库在新硬件平台上的兼容性和可移植性。

修改方案描述

修改方案采用条件编译的方式,统一通过宏SUPPORT_950来控制对Ascend 950平台的支持。具体分为两部分:一是在多个算子的主机端(op_host)C++源码中,将对ascend950的配置调用(AddConfig("ascend950"))包裹在#ifdef SUPPORT_950和#endif预处理器指令中;二是在对应算子(如fused_lazy_adam、hstu_dense_backward_fuxi等)的C310版本构建脚本(run.sh)中,通过sed命令在编译前向主机端源文件头部插入#define SUPPORT_950宏定义。该方案实现了平台支持的灵活配置,保持了与原有硬件平台(如Ascend 910系列)的代码兼容性。

开发自检

likedislike
Pull Request已成功合入, 合并人@ascend-robot
(感谢 zhoucy 的贡献)
zhoucyzhoucy成员
3月13日 创建了 pull request,commit 15e5c74d
ascend-robot
ascend-robot成员
3月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
repo-Ascend/RecSDK ✅ j0168, huiyangpeng, aizouba, tqy1998 (4/3) ✅ j0168 (1/1)

💡 Tip:

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

CLA Signature Pass

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

likedislike
ascend-robotascend-robot成员
3月13日 添加了label:ascend-cla/yes
ascend-robotascend-robot成员
3月13日 添加了label:ci-pipeline-running
ascend-robotascend-robot成员
3月13日 修改了pull request 的描述
yyf19980321
3月13日 评论:


AccCTR_cpp

# check type result report
1 AccCTR_cpp分支覆盖率 67.3 % >>>
2 AccCTR_cpp行覆盖率 82.3 % >>>

likedislike
yyf19980321
3月13日 评论:


tf1_cpp

# check type result report
1 tf1_cpp分支覆盖率 62.4 % >>>
2 tf1_cpp行覆盖率 80.0 % >>>

likedislike
ascend-robotascend-robot成员
3月13日 删除了label:ci-pipeline-running
ascend-robotascend-robot成员
3月13日 添加了label:ci-pipeline-passed
ascend-robot
ascend-robot成员
3月13日 评论:
流水线 PR-pipeline_RecSDK#3344 已完成
阶段 任务名 状态 详情
编译构建 PR-build-SAST-check ✅ >>>
Build_TF ✅ >>>
Build_torchrec ✅ >>>
Build_add_ons ✅ >>>
恶意代码检查 Antipoison ✅ >>>
编码安全与规范检查 CodeCheck ✅ >>>
开源片段检查 SCA ✅ >>>
开发者测试 presmoke_TF ✅ >>>
UT_torchrec ✅ >>>
PreSmoke_torchrec ✅ >>>
UT_python_common ✅ >>>
UT_python_tf1 ✅ >>>
UT_AccCTR ✅ >>>
UT_cpp_tf1 ✅ >>>
流水线 PR-pipeline_RecSDK ✅ >>>
likedislike
zengxiong成员
3月16日 评论:

/lgtm

likedislike
jianghaoyang成员
3月16日 评论:

/lgtm

likedislike
xiajunhua成员
3月16日 评论:

/lgtm

likedislike
ascend-robotascend-robot成员
3月16日 添加了label:lgtm
majunwang_huawei
majunwang_huawei成员3月16日进行代码检视1
cust_op/ascendc_op/ai_core_op/hstu_dense_forward/v220/op_host/hstu_dense_forward.cpp
@@ -117,7 +117,9 @@ public:
117117 this->AICore().AddConfig("ascend310p", aicore_config);
118118 this->AICore().AddConfig("ascend910b", aicore_config);
119119 this->AICore().AddConfig("ascend910_93", aicore_config);
120+#ifdef SUPPORT_950
majunwang_huawei
majunwang_huawei3月16日评论:

这里是不是忘了在run.sh里声明hstu_dense_forward文件添加支持950命名空间

likedislike
penghuiyang成员
3月16日 评论:

/lgtm

likedislike
simmerchan
simmerchan成员3月16日进行代码检视3
cust_op/ascendc_op/ai_core_op/cust_op_by_addr/c310/run.sh
@@ -67,6 +67,8 @@ fi
6767# vendor_name需要和aclnn中的CMakeLists.txt中的CUST_PKG_PATH值同步,不同步aclnn会调用失败;
6868# vendor_name字段值不能包含customize;包含会导致多算子部署场景CANN的vendors路径下config.ini文件内容截取错误
6969sed -i 's:"customize":"cust_op_by_addr":g' CMakePresets.json
70+sed -i "1i #define SUPPORT_950" ./op_host/embedding_update_by_address.cpp
simmerchan
simmerchan3月16日评论:

问题类型: 编码规范

问题描述: 在多个算子的 run.sh 脚本中,通过 sed 命令在文件头部插入#define SUPPORT_950 宏定义。这种修改方式会导致每次构建时都重新修改源文件,可能引起版本控制混乱和构建不一致性问题。

文件路径: cust_op/ascendc_op/ai_core_op/cust_op_by_addr/c310/run.sh

代码行号: 70

修改建议:
建议改用编译时宏定义方式,在 CMakeLists.txt 或编译命令中通过-D 参数传递 SUPPORT_950 宏,例如:add_definitions(-DSUPPORT_950) 或在 cmake 预设中配置 compile_definitions。这样避免修改源文件,保持源码纯净。

likedislike
zhoucy
zhoucy成员
3月17日 评论:

后续研究改进

taoqiuyu1998
taoqiuyu1998成员
3月17日 评论:

算子编译工程为在线生成,无法直接修改cmake文件

simmerchan
simmerchan成员3月16日进行代码检视2
cust_op/ascendc_op/ai_core_op/fused_lazy_adam/c310/run.sh
@@ -67,6 +67,8 @@ fi
6767# vendor_name字段值不能包含customize;包含会导致多算子部署场景CANN的vendors路径下config.ini文件内容截取错误
simmerchan
simmerchan3月16日评论:

问题类型: 性能问题

问题描述: 当前方案对 58 个算子文件都添加了相同的 sed 命令,存在大量重复代码。如果未来需要添加新的芯片支持,需要在每个算子的 run.sh 中重复添加类似的 sed 命令,维护成本高且容易遗漏。

文件路径: cust_op/ascendc_op/ai_core_op/fused_lazy_adam/c310/run.sh

代码行号: 67

修改建议:
建议抽取公共的芯片配置逻辑到统一的构建脚本或 CMake 宏中,例如创建 chips_config.cmake 或在顶层 CMakeLists.txt 中统一管理芯片支持配置,各算子通过 include 或调用宏来继承配置,减少重复代码。

likedislike
zhoucy
zhoucy成员
3月17日 评论:

后续研究改进

zhoucyzhoucy成员
3月16日 预合并成功(commit_id: 38889a9956d6d92b386dd38a7b674c8fe758120a)
zhoucyzhoucy成员
3月16日 推送  1 个提交:98aa0394-[fix]v220算子编译修复
zhoucyzhoucy成员
3月16日 预合并成功(commit_id: 90b378688ddff6d581c74c336e4590b60758f7d3)
ascend-robotascend-robot成员
3月16日 添加了label:stat/needs-squash
ascend-robotascend-robot成员
3月16日 删除了label:ci-pipeline-passed
ascend-robotascend-robot成员
3月16日 删除了label:lgtm
ascend-robot
ascend-robot成员
3月16日 评论:

Notification

This pull request source branch has changed, so removes the following label(s): ci-pipeline-passed.

likedislike
ascend-robot
ascend-robot成员
3月16日 评论:

Notice

New code changes of the pull request are detected and remove these labels lgtm. 😳

likedislike
ascend-robotascend-robot成员
3月16日 添加了label:ci-pipeline-running
ascend-robotascend-robot成员
3月16日 删除了label:ci-pipeline-running
ascend-robotascend-robot成员
3月16日 添加了label:ci-pipeline-failed
ascend-robot
ascend-robot成员
3月16日 评论:
流水线 PR-pipeline_RecSDK#3367 运行失败
阶段 任务名 状态 详情
编译构建 PR-build-SAST-check ✅ >>>
Build_TF ✅ >>>
Build_TF_v2 ✅ >>>
Build_torchrec ✅ >>>
Build_add_ons ✅ >>>
Build_ops_A5 ❌ >>>
Build_torchrec_v2 ✅ >>>
恶意代码检查 Antipoison ✅ >>>
编码安全与规范检查 CodeCheck ✅ >>>
开源片段检查 SCA ✅ >>>
开发者测试 presmoke_TF ✅ >>>
UT_torchrec ✅ >>>
PreSmoke_torchrec ✅ >>>
UT_python_common 🕚 >>>
UT_python_tf1 🕚 >>>
UT_AccCTR 🕚 >>>
UT_cpp_tf1 🕚 >>>
流水线 PR-pipeline_RecSDK ❌ >>>
likedislike
ascend-robotascend-robot成员
3月17日 删除了label:ci-pipeline-failed
ascend-robotascend-robot成员
3月17日 添加了label:ci-pipeline-running
zhoucyzhoucy成员
3月17日 解决了最后一个问题
wuyangjian
wuyangjian成员
3月17日 评论:

/lgtm

likedislike
penghuiyang成员
3月17日 评论:

/lgtm

likedislike
taoqiuyu1998
taoqiuyu1998成员
3月17日 评论:

/lgtm

likedislike
ascend-robotascend-robot成员
3月17日 添加了label:lgtm
yyf19980321
3月17日 评论:


common_python pass

# check type result report
1 pyllt通过率 100.00% >>>
2 pyllt分支覆盖率 1.21% >>>
3 pyllt行覆盖率 31.09% >>>

likedislike
yyf19980321
3月17日 评论:


AccCTR_cpp

# check type result report
1 AccCTR_cpp分支覆盖率 67.3 % >>>
2 AccCTR_cpp行覆盖率 82.3 % >>>

likedislike
yyf19980321
3月17日 评论:


tf1_python pass

# check type result report
1 pyllt通过率 100.00% >>>
2 pyllt分支覆盖率 6.39% >>>
3 pyllt行覆盖率 42.38% >>>

likedislike
yyf19980321
3月17日 评论:


tf1_cpp

# check type result report
1 tf1_cpp分支覆盖率 62.3 % >>>
2 tf1_cpp行覆盖率 80.0 % >>>

likedislike
ascend-robotascend-robot成员
3月17日 删除了label:ci-pipeline-running
ascend-robotascend-robot成员
3月17日 添加了label:ci-pipeline-passed
ascend-robot
ascend-robot成员
3月17日 评论:
流水线 PR-pipeline_RecSDK#3367 (重试第1次)已完成
阶段 任务名 状态 详情
编译构建 PR-build-SAST-check ✅ >>>
Build_TF ✅ >>>
Build_TF_v2 ✅ >>>
Build_torchrec ✅ >>>
Build_add_ons ✅ >>>
Build_ops_A5 ✅ >>>
Build_torchrec_v2 ✅ >>>
恶意代码检查 Antipoison ✅ >>>
编码安全与规范检查 CodeCheck ✅ >>>
开源片段检查 SCA ✅ >>>
开发者测试 presmoke_TF ✅ >>>
UT_torchrec ✅ >>>
PreSmoke_torchrec ✅ >>>
UT_python_common ✅ >>>
UT_python_tf1 ✅ >>>
UT_AccCTR ✅ >>>
UT_cpp_tf1 ✅ >>>
流水线 PR-pipeline_RecSDK ✅ >>>
likedislike
jianghaoyang成员
3月17日 评论:

/approve

likedislike
taoqiuyu1998
taoqiuyu1998成员
3月17日 评论:

/lgtm

likedislike
ascend-robotascend-robot成员
3月17日 添加了label:approved
ascend-robot
ascend-robot成员
3月17日 评论:

Review Guide

This pull-request passes review.
Committers who wrote a comment of /approve are: j0168.
Reviewers who wrote a comment of /lgtm are: j0168, aizouba, tqy1998, huiyangpeng.

likedislike
ascend-robotascend-robot成员
3月17日 合入了pull request,合并节点 SHA:c094a1c1693c4d742c0198ce2a9c133d7633795f