已合并
refactor: 提取 ASCIR 节点参数创建逻辑 #1759
refactor: 提取 ASCIR 节点参数创建逻辑 #1759
已合并
gaoxin创建于 8月17日
gaoxin成员
8月17日

描述

消除 compare_v2_api_call.cpp 与 cast_v2_api_call.cpp 中重复的 ASCIR 节点参数创建代码。

背景

两处代码均负责获取或创建 AscirNodeParams,重复实现被代码质量检查识别为重复代码,增加了后续维护成本。

修改方案

  1. 在 ascir_param 中新增 GetOrCreateAscirNodeParams,统一处理节点参数获取、创建和扩展属性写回。
  2. Compare/Cast 参数填充函数复用该 helper,保留各自的 specific params 类型处理逻辑。
  3. 删除两个调用文件中不再使用的 include 和局部常量。

变更类型

关联的Issue

无。

如何测试

  1. 测试cast compare相关用例

核对清单

其他信息

likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 gaoxin 的贡献)
Ggaoxin成员
8月17日 创建了 pull request,commit afc580f8
atomgit-bot
atomgit-bot
8月17日 评论:

变更摘要

本 PR 是一次重构,目标是消除 compare_v2_api_call.cpp 与 cast_v2_api_call.cpp 中重复的 ASCIR 节点参数获取/创建逻辑。核心做法是在 ascir_node_param 模块中新增统一的 GetOrCreateAscirNodeParams 接口,将「先通过扩展属性获取参数、不存在则创建并写回扩展属性」这一公共流程收敛到一处,随后让 Compare 与 Cast 的参数填充函数复用该 helper,并清理两个调用文件中不再使用的 <memory> 头文件与局部常量,降低后续维护成本。

主要改动

  • 新增 GetOrCreateAscirNodeParams 函数:在 ascir_node_param.cpp 中实现并通过 ascir_node_param.h 声明,统一处理 AscirNodeParams 的获取、创建与 SetExtAttr 写回逻辑。
  • 复用 helper 重构 FillCastNodeParams:在 cast_v2_api_call.cpp 中将原先手动获取/创建参数的代码替换为调用 ascir_param::GetOrCreateAscirNodeParams,并删除局部常量 kAscirNodeParams 与 <memory> 头文件。
  • 复用 helper 重构 FillCompareNodeParams:在 compare_v2_api_call.cpp 中同样将原先重复的获取/创建逻辑替换为 ascir_param::GetOrCreateAscirNodeParams,并删除局部常量 kAscirNodeParams 与 <memory> 头文件。
  • 保留各自的 specific_params 处理:FillCastNodeParams 与 FillCompareNodeParams 仍分别通过 std::get_if 处理 CastNodeParams 与 CompareNodeParams,未改变各自的参数类型处理逻辑。
likedislike
不准确?
atomgit-bot
atomgit-bot
8月17日 评论:

代码审查

Closing Summary

审查完毕,4 个变更文件均已逐一核对:

  • autofuse/common/ascir_node_param/ascir_node_param.cpp — 1 个问题(P2):GetOrCreateAscirNodeParams 失败路径返回空 shared_ptr,而调用方未判空。
  • autofuse/common/ascir_node_param/ascir_node_param.h — no issues(仅新增一处声明)。
  • autofuse/v35/codegen/reg_api_call/cast_v2_api_call.cpp — 该文件是上述 P2 问题的空指针解引用调用点(cast_v2_api_call.cpp:38),本身无独立问题;<memory> include 与局部 kAscirNodeParams 删除经核对已无残留引用。
  • autofuse/v35/codegen/reg_api_call/compare_v2_api_call.cpp — 同为上述 P2 问题的空指针解引用调用点(compare_v2_api_call.cpp:39),本身无独立问题;include 与局部常量删除安全。

发现统计:P2 × 1,P0/P1/P3 × 0。

整体风险评估:低-中。正常路径(op_desc 有效且 SetExtAttr 成功)行为与重构前等价;唯一回归在于防御性错误分支由"受控返回错误码"退化为"空指针解引用",属于错误处理契约的削弱,建议按上述方式补充判空或改为显式错误码传递。

类型 数量
🔴 阻塞 0
🟡 建议 1

💬 仅评论

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

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.
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
repo-cann/graph-autofusion ✅ 张德鹏, zhang_shengjie, xchu42 (3/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

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

likedislike
CANN-robot
CANN-robot成员
8月17日 评论:

CLA Signature Pass

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

likedislike
CANN-robotCANN-robot成员
8月17日 将niuyuhu,yangyongqiang0606,liyuewei,xchu42,zhang_shengjie,depeng1994,wqtshg_wt,peiyang,shengnan666,XuebinYang,sjtulxh,zhanj,zhujingjing,xuyafei,wangxiaotian995设为评审人
CANN-robotCANN-robot成员
8月17日 将niuyuhu,yangyongqiang0606,liyuewei,xchu42,zhang_shengjie,depeng1994,wqtshg_wt,peiyang,shengnan666,XuebinYang,sjtulxh,zhanj,zhujingjing,xuyafei,wangxiaotian995设为审查人
gaoxin成员
8月17日 评论:

compile

likedislike
Ggaoxin成员
8月17日 预合并成功(commit_id: eeff7c61cafbc8027f0303d7a8cb048483a4df24)
Ggaoxin成员
8月17日 修改了pull request 的描述
CANN-robotCANN-robot成员
8月17日 添加了label:ci-pipeline-running
CANN-robot
CANN-robot成员
8月17日 评论:

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

任务名称状态日志下载链接
UT_Test_Python_superkernel ✅ SUCCESS >>>>>
ST_Test_Python_superkernel ✅ SUCCESS >>>>>
UT_Test_superkernel ✅ SUCCESS >>>>>
UT_Test_autofuse_framework ✅ SUCCESS >>>>>
ST_Test_autofuse_framework ✅ SUCCESS >>>>>
UT_Test_autofuse_ascendc_api ✅ SUCCESS >>>>>
ST_Test_autofuse_ascendc_api ✅ SUCCESS >>>>>
ST_Test_autofuse_e2e ✅ SUCCESS >>>>>
pre_comment ✅ SUCCESS >>>>>
UT_Test_Report ✅ SUCCESS >>>>>
ST_Test_Report ❌ FAILED >>>>>
likedislike
CANN-robot
CANN-robot成员
8月17日 评论:

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

任务名称状态日志下载链接
codecheck ✅ SUCCESS >>>>>
SCA ✅ SUCCESS >>>>>
antipoison ✅ SUCCESS >>>>>
codecheck_checkpr ✅ SUCCESS
pre_comment ✅ SUCCESS >>>>>
codecheck_codestyle ✅ SUCCESS >>>>>
codecheck_precommit ✅ SUCCESS >>>>>

[2026-08-17 17:18:00]    CI执行结束

likedislike
CANN-robot
CANN-robot成员
8月17日 评论:

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

任务名称状态日志下载链接
Compile_Ascend_X86 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_ARM ✅ SUCCESS >>>>> >>>>>
pre_comment ✅ SUCCESS >>>>>
PreSmoke_A900_npupool ✅ SUCCESS >>>>>

[2026-08-17 17:25:27]    CI执行结束

likedislike
atomgit-bot
atomgit-bot8月17日进行代码检视2
autofuse/common/ascir_node_param/ascir_node_param.cpp
@@ -63,0 +67,4 @@
67+ auto op_desc = node->GetOpDesc();
68+ GE_ASSERT_NOTNULL(op_desc);
69+ params = std::make_shared<AscirNodeParams>();
70+ GE_ASSERT_TRUE(op_desc->SetExtAttr(kAscirNodeParams, params), "Node:%s SetExtAttr failed", node->GetNamePtr());
atomgit-bot
atomgit-bot8月17日评论:

🟡 Medium Priority

likedislike
不准确?
gaoxin成员
8月17日 评论:

非问题

CANN-robotCANN-robot成员
8月17日 删除了label:ci-pipeline-running
此处折叠了7条事件消息 查看更多
Ggaoxin成员
8月17日 解决了最后一个问题
gaoxin成员
8月17日 评论:

compile

likedislike
Ggaoxin成员
8月17日 预合并成功(commit_id: 26775d527b24f564b7b63eef5e7c411fce666c62)
CANN-robotCANN-robot成员
8月17日 删除了label:ci-pipeline-failed
CANN-robotCANN-robot成员
8月17日 添加了label:ci-pipeline-running
CANN-robot
CANN-robot成员
8月17日 评论:

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

任务名称状态日志下载链接
Compile_Ascend_X86 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_ARM ✅ SUCCESS >>>>> >>>>>
pre_comment ✅ SUCCESS >>>>>
PreSmoke_A900_npupool ✅ SUCCESS >>>>>

[2026-08-17 19:35:31]    CI执行结束

likedislike
CANN-robot
CANN-robot成员
8月17日 评论:

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

任务名称状态日志下载链接
codecheck ✅ SUCCESS >>>>>
SCA ✅ SUCCESS >>>>>
antipoison ✅ SUCCESS >>>>>
codecheck_checkpr ✅ SUCCESS
pre_comment ✅ SUCCESS >>>>>
codecheck_codestyle ✅ SUCCESS >>>>>
codecheck_precommit ✅ SUCCESS >>>>>

[2026-08-17 19:29:56]    CI执行结束

likedislike
CANN-robot
CANN-robot成员
8月17日 评论:

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

任务名称状态日志下载链接
UT_Test_Python_superkernel ✅ SUCCESS >>>>>
ST_Test_Python_superkernel ✅ SUCCESS >>>>>
UT_Test_superkernel ✅ SUCCESS >>>>>
UT_Test_autofuse_framework ✅ SUCCESS >>>>>
ST_Test_autofuse_framework ✅ SUCCESS >>>>>
UT_Test_autofuse_ascendc_api ✅ SUCCESS >>>>>
ST_Test_autofuse_ascendc_api ✅ SUCCESS >>>>>
ST_Test_autofuse_e2e ✅ SUCCESS >>>>>
pre_comment ✅ SUCCESS >>>>>
UT_Test_Report ✅ SUCCESS >>>>>
ST_Test_Report ✅ SUCCESS >>>>>

[2026-08-17 19:44:15]    CI执行结束

likedislike
CANN-robotCANN-robot成员
8月17日 删除了label:ci-pipeline-running
CANN-robotCANN-robot成员
8月17日 添加了label:ci-pipeline-passed
zhang_shengjie成员
8月17日 评论:

/lgtm

likedislike
xchu42
xchu42成员
8月17日 评论:

/lgtm

likedislike
zhang_shengjie成员
8月17日 评论:

/lgtm

likedislike
CANN-robotCANN-robot成员
8月17日 添加了label:lgtm
张德鹏成员
8月17日 评论:

/approve

likedislike
CANN-robotCANN-robot成员
8月17日 添加了label:approved
CANN-robotCANN-robot成员
8月17日 合入了pull request