| feat: 支持KERNEL_SRC机制,允许算子指定自定义kernel入口文件
Co-authored-by: songkai111<songkai16@huawei.com>
# message auto-generated for no-merge-commit merge:
!3106 merge master into master
feat: 支持KERNEL_SRC机制,允许算子指定自定义kernel入口文件
Created-by: songkai111
Commit-by: songkai111
Merged-by: cann-robot
Description: ## 描述
本PR支持KERNEL_SRC机制,允许算子通过CMake的KERNEL_SRC参数指定自定义的kernel入口文件名,而非使用默认的算子名作为入口文件。同步ops-nn PR#3936的cmake/scripts改动。
### 改动内容
1. **CMake构建系统改造**:
- cmake/func.cmake:add_kernel_sources()函数新增KERNEL_SRC参数,用于指定自定义kernel入口文件(缺省为算子名.cpp),并在显式指定时将其记录到KERNEL_SRC_LIST缓存变量中
- cmake/opbuild.cmake:在opbuild构建流程中新增调用insert_kernel_src.py脚本,将kernelSrc信息注入到生成的INI文件中(包括base、inner、exc三个目录)
- cmake/ut.cmake:AddOpsTestCase函数中新增KERNEL_SRC_LIST查找逻辑,支持UT构建时定位自定义kernel源文件
- cmake/variables.cmake:新增KERNEL_SRC_LIST缓存变量
2. **新增脚本**:
- scripts/util/insert_kernel_src.py:新脚本,负责读取算子信息INI文件,在对应算子section中插入或更新kernelSrc.value字段
3. **构建脚本适配**:
- scripts/util/opdesc_parser.py:OpDesc类新增kernel_src字段和parse_kernel_src()方法,支持解析kernelSrc.value配置
- scripts/util/ascendc_impl_build.py:构建时使用kernel_src(缺省回退到op_file)定位实际kernel源文件路径
- scripts/util/parse_ini_to_json.py:在INI→JSON转换时跳过kernelSrc键(仅构建时使用)
- scripts/kernel/binary_script/gen_ops_compile_ini.py:更新最小参数个数检查(5→6)
4. **示例验证**:
- math/add/op_kernel/CMakeLists.txt:add算子使用KERNEL_SRC arch35/add.cpp指定自定义入口
- math/add/op_kernel/add_apt.cpp → math/add/op_kernel/arch35/add.cpp:重命名并更新include路径为相对路径
## 关联的Issue
- #1832
## 测试
- 使用add算子验证kernel_src机制在opbuild和UT构建中的正确性
- 验证insert_kernel_src.py脚本能正确向INI文件注入kernelSrc.value字段
## 文档更新
- cmake/func.cmake中新增了KERNEL_SRC参数的注释说明
## 类型标签
- [ ] Bug修复
- [x] 新特性
- [ ] 性能优化
- [ ] 文档更新
- [ ] 其他,请描述:
See merge request: cann/ops-math!3106 | 11 小时前 |