已合并
fusion pass兼容性问题修复 #3908
pengyiming7创建于 7月8日
fusion pass兼容性问题修复 #3908
已合并
pengyiming7创建于 7月8日
pengyiming7
7月8日

描述

fusion pass兼容性问题修复

关联的Issue

https://gitcode.com/cann/ops-math/issues/2201

测试

文档更新

类型标签

likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 pengyiming7 的贡献)
Ppengyiming7
7月8日 创建了 pull request,commit 342956ac
atomgit-bot
atomgit-bot
7月8日 评论:

变更摘要

此 PR 旨在修复 fusion pass 的兼容性问题。核心改动是在三个 fusion pass 文件中引入 GE_COMPILER_VERSION_910 版本宏定义及 IsTargetVersion() 版本检查函数,确保相关 pass 仅在 GE 编译器 9.1.0 及以上版本中生效;同时将 aclsysGetVersionNum 调用处的 const_cast<char*> 改为合法的 char[] 局部变量,消除未定义行为风险。

主要改动

  • 新增 GE_COMPILER_VERSION_910 宏定义:在 permute_fusion_pass.cppglobalavgpool_fusion_pass.cppreduce_mean_with_cast_fusion_pass.cpp 三个文件中均添加了 #define GE_COMPILER_VERSION_910 90100000,作为 9.1.0 版本的门槛常量。
  • 新增 IsTargetVersion() 函数:三个文件各自添加了该函数,通过 aclsysGetVersionNum 获取 GE 编译器版本号,仅在版本 ≥ 9.1.0 时返回 true
  • Patterns() 增加版本前置检查:各 fusion pass 的 Patterns() 方法开头调用 IsTargetVersion(),若版本不满足则直接返回空 pattern 列表,跳过 pass 逻辑。
  • 修复 aclsysGetVersionNum 调用中的 const_cast 问题:将 MeetRequirements() 中的 const_cast<char*>("ge_compiler") 替换为 char pkgName[] = "ge_compiler" 局部变量后传入,消除对字符串字面量的非法写权限转换。
likedislike
不准确?
atomgit-bot
atomgit-bot
7月8日 评论:

代码审查

审查总结

本次 diff 修改了 3 个文件,每个文件都做了相同的三类改动:

文件 审查结果
conversion/transpose/op_graph/fusion_pass/permute_fusion_pass.cpp 1 个 P2 问题
math/reduce_mean/op_graph/fusion_pass/globalavgpool_fusion_pass.cpp 1 个 P2 问题
math/reduce_mean/op_graph/fusion_pass/reduce_mean_with_cast_fusion_pass.cpp 1 个 P2 问题

报告统计:P0: 0, P1: 0, P2: 3, P3: 0

整体风险判断:低—中风险。

  • 正确的改动MeetRequirements() 中将 const_cast<char*>("ge_compiler") 替换为局部 char pkgName[] 数组,消除了对字符串字面量写入的未定义行为;Patterns() 中的版本前移检查逻辑正确;GE_COMPILER_VERSION_910 宏定义的值(90100000 = 9.1.0)与命名一致。
  • 唯一问题:三个文件中新增的 IsTargetVersion() 函数均缺少 static 关键字,导致同名函数在三个翻译单元中都具有外部链接,构成 ODR 违规。修复只需在每个定义前添加 static 即可,成本极低。当前三处定义完全相同,暂时不会触发运行时错误,但未来任一处独立修改都可能导致难以排查的版本检查不一致问题。
类型 数量
🔴 阻塞 0
🟡 建议 3

💬 仅评论

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

CLA Signature Pass

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

likedislike
此处折叠了52条消息 查看更多
RuiWang_成员
7月10日 评论:

/lgtm
/approve

likedislike
CANN-robotCANN-robot成员
7月10日 添加了label:lgtmapproved
CANN-robotCANN-robot成员
7月10日 解决了最后一个问题
CANN-robotCANN-robot成员
7月10日 关闭了关联的issue
CANN-robotCANN-robot成员
7月10日 合入了pull request