已合并
refactor(inplace_add_layer_norm_fusion_pass): replace D4 dlsym with weak symbol #11082
refactor(inplace_add_layer_norm_fusion_pass): replace D4 dlsym with weak symbol #11082
已合并
rk创建于 9月22日
rk成员
9月22日

描述

重构 inplace_add_layer_norm 融合规则中 CheckScene 的 GetOptionValue 调用方式:从 D4 场景下的 dlsym 运行时符号解析,改为编译期版本宏守卫的直接调用。

改动原因

CustomPassContext::GetOptionValue 为 GE 9.0.0 新增接口,此前 D4(低版本编译环境)下通过 dlsym(RTLD_DEFAULT, mangled_symbol) 运行时解析该符号:

  • 硬编码 mangled symbol name 脆弱,符号名变更即解析失败
  • 需 memcpy_s 做函数指针拷贝,绕过类型检查
  • 代码复杂(约 30 行解析逻辑 + <dlfcn.h>/securec.h 依赖)

目前框架已适配公共符号弱化,高编低跑场景下弱符号可在运行时正确解析,因此可以直接调用接口,不再需要 dlsym 方案。

改动方法

  1. 删除 ResolveGetOptionValue() dlsym 解析逻辑及 _ZNK2ge... 硬编码符号名、<dlfcn.h>/securec.h 依赖。
  2. CheckScene 改为编译期宏守卫:
    • GE_COMPILER_VERSION_NUM >= 90000000 时直接调用 passContext.GetOptionValue(...)(框架已适配弱符号,高编低跑可正确解析,调用前仍确认运行时版本);
    • 否则返回 API_UNAVAILABLE 静默跳过。
  3. 运行时版本检查保留并加固:aclsysGetVersionNum 返回值由忽略改为与版本判断合并(!= ACL_SUCCESS || runtimeVersion < kMinGeCompilerVersion)。

涉及文件:

  • norm/inplace_add_layer_norm/op_graph/fusion_pass/inplace_add_layer_norm_fusion_pass.cpp(+9 -35)

关联的Issue

-https://gitcode.com/cann/ops-nn/issues/6156

测试

  • 验证融合规则在推理/训练场景下的场景判别行为与重构前一致(推理场景判别依赖 GetOptionValue 读取 OptionGraphRunMode)。
  • 覆盖编译环境 >= / < 9.0.0 两种宏分支及运行时版本检查分支。

文档更新

不涉及

类型标签

AI/Agent生成声明

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

变更摘要

本 PR 针对 inplace_add_layer_norm 融合算子 pass 中的 CheckScene 场景判定逻辑进行重构:不再通过 dlsym 在运行时动态解析 ge::CustomPassContext::GetOptionValue 符号,而是改为依赖编译期弱符号直接调用该接口,并用编译期宏 GE_COMPILER_VERSION_NUM 对高低版本进行条件编译。相应地移除了 dlfcn.h、securec.h 依赖以及配套的符号名常量、函数指针类型和解析函数,同时调整了运行时版本校验的判定方式。

主要改动

  • 移除 dlsym 动态符号解析逻辑: 删除了 kGetOptionValueSymbol 常量、GetOptionValueFn 类型别名和 ResolveGetOptionValue() 函数,并移除 <dlfcn.h>、securec.h 头文件引用,改用编译期弱符号方案。
  • 改为直接调用 GetOptionValue 接口: CheckScene 中不再经由运行时查找到的函数指针,而是直接调用 passContext.GetOptionValue(AscendString(kOptionGraphRunMode), value)。
  • 引入编译期版本宏守卫: 通过 #if defined(GE_COMPILER_VERSION_NUM) && (GE_COMPILER_VERSION_NUM >= 90000000) 包裹调用逻辑,并在 #else 分支中执行 (void)passContext; 后直接返回 SceneCheckResult::API_UNAVAILABLE,保证低版本编译时保持静默。
  • 调整运行时版本校验条件: 将原先的 runtimeVersion > 0 && runtimeVersion < kMinGeCompilerVersion 判断改为 aclsysGetVersionNum(geCompilerName, &runtimeVersion) != ACL_SUCCESS || runtimeVersion < kMinGeCompilerVersion,接口调用失败或版本过低时返回 API_UNAVAILABLE。
likedislike
不准确?
atomgit-bot
atomgit-bot
9月22日 评论:

代码审查

✅ 未发现问题

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

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
norm ✅ 陈昊文, 钱泽洪 (2/2) ✅ 陈昊文, 钱泽洪 (2/1)

💡 Tip:

  • Committer can comment /approve or /lgtm
  • Commenting /approve implies both code review (lgtm) and intent to merge (approve)
likedislike
CANN-robot
CANN-robot成员
9月22日 评论:

CLA Signature Pass

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

likedislike
CANN-robotCANN-robot成员
9月22日 将zengjuan,u010470851,chaotang233,kevin_huang1234,crystalhu,yangyang016,fanqirui,wangrui_,renruhai,su-yueming,zhajianqing123,yourealize,chenqi317,wang-xing001,liubo75,tangweiwei2,chenxingyu18,liujie12345678,pingchuantang,Chen_HaoWen,qianzehong设为评审人
CANN-robotCANN-robot成员
9月22日 将u010470851,kevin_huang1234,wangrui_,renruhai,su-yueming,zhajianqing123,yourealize,wang-xing001,chenxingyu18,liujie12345678,pingchuantang,Chen_HaoWen,qianzehong设为审查人
rk成员
9月23日 评论:

compile

likedislike
Rrk成员
9月23日 预合并成功(commit_id: af814879df34dfc121fd239019b2c5573012ab49)
CANN-robot
CANN-robot成员
9月23日 评论:
🚀 CI 流水线已启动
📋 执行详情: 点击查看流水线
likedislike
CANN-robotCANN-robot成员
9月23日 添加了label:ci-pipeline-running
此处折叠了7条事件消息 查看更多
Rrk成员
9月23日 修改了pull request 的描述
Chen_HaoWen成员
9月23日 评论:

/approve
/lgtm

likedislike
CANN-robotCANN-robot成员
9月23日 添加了label:approved
Chen_HaoWen成员
9月23日 评论:

/lgtm

likedislike
Chen_HaoWen成员
9月23日 评论:

/approve
/lgtm

likedislike
yuning_chen
yuning_chen成员
9月23日 评论:

您好,pr合入已准备就绪,请尽快联系committer进行检视,谢谢!

likedislike
Chen_HaoWen成员
9月23日 评论:

/approve

likedislike
Chen_HaoWen成员
9月23日 评论:

/lgtm

likedislike
Chen_HaoWen成员
9月23日 评论:

/approve

/lgtm

likedislike
Chen_HaoWen成员
9月24日 评论:

/approve
/lgtm

likedislike
qianzehong成员
9月24日 评论:

/lgtm
/approve

likedislike
CANN-robotCANN-robot成员
9月24日 添加了label:lgtm
CANN-robotCANN-robot成员
9月24日 关闭了关联的issue
CANN-robotCANN-robot成员
9月24日 合入了pull request