Merged
feat: AICPU自定义算子加载支持从ASCEND_OPP_PATH/vendors推导路径 #698
liu-weiAdd on Aug 4
feat: AICPU自定义算子加载支持从ASCEND_OPP_PATH/vendors推导路径 #698
Merged
Pull Request has been successfully merged by CANN-robot.
(Thank you for liu-wei's contribution.)atomgit-bot
Aug 4 Comments:
Aug 4 Comments:
变更摘要
此 PR 为 AICPU 自定义算子加载新增了从 ASCEND_OPP_PATH/vendors 目录推导自定义算子路径的能力。当 ASCEND_CUSTOM_OPP_PATH 环境变量未设置或为空时,系统会回退到解析 ASCEND_OPP_PATH/vendors/config.ini 中的 load_priority(原 priority)配置,依次查找各 vendor 子目录下的 cust_aicpu_kernel.json 文件进行加载;同时保留对 ASCEND_OPP_PATH 根目录下同名 json 文件的支持。为便于测试,在头文件中通过 #ifdef RUN_TEST 暴露了 ResetForTest() 方法,并新增了覆盖多种场景的单元测试文件。
主要改动
- 新增
GetCustomOppPathFromVendors方法:在aicpu_json_load_manager.cpp中实现,读取ASCEND_OPP_PATH/vendors/config.ini的load_priority配置行,解析出 vendor 名称列表,依次拼接 vendor 路径并检查是否存在cust_aicpu_kernel.json,同时将ASCEND_OPP_PATH根目录下的同名 json 也作为候选路径加入。 CustJsonLoadAndParse增加回退逻辑:原逻辑仅依赖ASCEND_CUSTOM_OPP_PATH环境变量;现改为当该变量为空或未设置时,调用GetCustomOppPathFromVendors从 vendors 推导路径,实现自动回退加载。- 头文件新增测试辅助接口
ResetForTest:在aicpu_json_load_manager.h中通过#ifdef RUN_TEST条件编译暴露静态方法ResetForTest(),用于重置所有内部静态状态(json 缓存、注册表、二进制句柄等),供单元测试在TearDown中清理。 - 新增单元测试文件
aicpu_json_load_utest.cpp:覆盖七种典型场景,包括ASCEND_CUSTOM_OPP_PATH直接使用、空值回退到 vendors、未设置回退到 vendors、双环境变量优先级验证、无任何自定义 json、vendor 缺少 json 自动跳过、双环境变量均无效等,验证CustJsonLoadAndParse与FindAndGetInCustomRegistry的正确行为。


Incorrect?
atomgit-bot
Aug 4 Comments:
Aug 4 Comments:
Aug 4 Added label: cann-cla/yes
CANN-robot
Aug 4 Comments:
Aug 4 Comments:
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-cann/opbase | ✅ 宋恺, wangrui_ (2/2) | ✅ 宋恺, wangrui_ (2/1) |
💡 Tip:
- Committer can comment
/approveor/lgtm- Commenting
/approveimplies both code review (lgtm) and intent to merge (approve)
CLA Signature Pass
liu-wei, thanks for your pull request. All authors of the commits have signed the CLA. 👍


114 messages are collapsed here。 See more
Aug 13 Added label: approved
Aug 13 Added label: lgtm
Aug 13 Closed associated issue
Aug 13 Merged pull request
Closes #311
描述
当
ASCEND_CUSTOM_OPP_PATH未设置或为空时,自动从ASCEND_OPP_PATH/vendors/config.ini推导自定义算子包路径,避免用户必须显式设置环境变量。推导流程
新增文件
aicpu_json_load_utest.cpppriority=和load_priority=两种格式修改文件
aicpu_json_load_manager.cppGetCustomOppPathFromVendors();CustJsonLoadAndParse()增加 fallback 分支;config.ini 解析兼容priority=和load_priority=两种格式aicpu_json_load_manager.hGetCustomOppPathFromVendors()CMakeLists.txtaicpu/task_handler/关键逻辑
config.ini解析:逐行读取,跳过空行和#注释,匹配含priority的行(兼容priority=和load_priority=),取=后的值用逗号分隔 vendor 名load_priority=vnd_a, vnd_b逗号后空格导致路径拼接错误RealPath()检查cust_aicpu_kernel.json是否存在,不存在则跳过op_kernel_lib.cpp、indv_collector.cpp的 config.ini 解析方式对齐场景对比
priority=格式priority=和load_priority=关联的Issue
#311
类型标签