已合并
refactor(inplace_add_layer_norm_fusion_pass): replace D4 dlsym with weak symbol #11082
rk创建于 9月22日
refactor(inplace_add_layer_norm_fusion_pass): replace D4 dlsym with weak symbol #11082
已合并
Pull Request已成功合入, 合并人@CANN-robot
(感谢 rk 的贡献)atomgit-bot
9月22日 评论:
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。


不准确?
atomgit-bot
9月22日 评论:
9月22日 评论:
9月22日 添加了label:cann-cla/yes
CANN-robot
9月22日 评论:
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
/approveor/lgtm- Commenting
/approveimplies both code review (lgtm) and intent to merge (approve)


CANN-robot
9月22日 评论:
9月22日 评论:
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设为评审人
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设为评审人
9月22日 将u010470851,kevin_huang1234,wangrui_,renruhai,su-yueming,zhajianqing123,yourealize,wang-xing001,chenxingyu18,liujie12345678,pingchuantang,Chen_HaoWen,qianzehong设为审查人
9月22日 将u010470851,kevin_huang1234,wangrui_,renruhai,su-yueming,zhajianqing123,yourealize,wang-xing001,chenxingyu18,liujie12345678,pingchuantang,Chen_HaoWen,qianzehong设为审查人
CANN-robot
9月23日 评论:
9月23日 评论:
| 🚀 CI 流水线已启动 |
|---|
| 📋 执行详情: 点击查看流水线 |


9月23日 添加了label:ci-pipeline-running
此处折叠了7条事件消息 查看更多
Chen_HaoWen
9月23日 评论:
9月23日 评论:
/approve
/lgtm


9月23日 添加了label:approved
Chen_HaoWen
9月23日 评论:
9月23日 评论:
/lgtm


Chen_HaoWen
9月23日 评论:
9月23日 评论:
/approve
/lgtm


yuning_chen
9月23日 评论:
9月23日 评论:
您好,pr合入已准备就绪,请尽快联系committer进行检视,谢谢!


Chen_HaoWen
9月23日 评论:
9月23日 评论:
/approve


Chen_HaoWen
9月23日 评论:
9月23日 评论:
/lgtm


Chen_HaoWen
9月23日 评论:
9月23日 评论:
/approve
/lgtm


Chen_HaoWen
9月24日 评论:
9月24日 评论:
/approve
/lgtm


qianzehong
9月24日 评论:
9月24日 评论:
/lgtm
/approve


9月24日 添加了label:lgtm
9月24日 关闭了关联的issue
9月24日 合入了pull request
描述
重构
inplace_add_layer_norm融合规则中CheckScene的GetOptionValue调用方式:从 D4 场景下的 dlsym 运行时符号解析,改为编译期版本宏守卫的直接调用。改动原因
CustomPassContext::GetOptionValue为 GE 9.0.0 新增接口,此前 D4(低版本编译环境)下通过dlsym(RTLD_DEFAULT, mangled_symbol)运行时解析该符号:memcpy_s做函数指针拷贝,绕过类型检查<dlfcn.h>/securec.h依赖)目前框架已适配公共符号弱化,高编低跑场景下弱符号可在运行时正确解析,因此可以直接调用接口,不再需要 dlsym 方案。
改动方法
ResolveGetOptionValue()dlsym 解析逻辑及_ZNK2ge...硬编码符号名、<dlfcn.h>/securec.h依赖。CheckScene改为编译期宏守卫:GE_COMPILER_VERSION_NUM >= 90000000时直接调用passContext.GetOptionValue(...)(框架已适配弱符号,高编低跑可正确解析,调用前仍确认运行时版本);API_UNAVAILABLE静默跳过。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)。文档更新
不涉及
类型标签
AI/Agent生成声明