| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
fix: 修复opgen生成的算子工程无法编译通过的问题 Co-authored-by: songkai111<songkai16@huawei.com> # message auto-generated for no-merge-commit merge: !2431 merge master into master fix: 修复opgen生成的算子工程无法编译通过的问题 Created-by: songkai111 Commit-by: songkai111 Merged-by: cann-robot Description: ## 描述 修复 opgen 工具生成的算子工程在编译时出现的多处问题,确保生成的模板代码可以正常编译通过。 改动原因: - CMakeLists.txt 中硬编码过滤 \ add_example\ 导致其他算子的 examples 目录无法正确包含 - 生成的算子工程目录缺少 CMake 构建链路(父目录 CMakeLists.txt 中没有 \add_subdirectory\) - 模板代码中存在编译错误:未定义的 \IDX_0\ 宏、未使用参数警告、kernel 函数签名与 Init 调用参数不匹配 改动方法: 1. **CMakeLists.txt**:将硬编码的 \add_example\ 过滤逻辑改为动态检查 \examples/{op_name}/CMakeLists.txt\ 文件是否存在,从而正确判断是否需要包含 examples 子目录 2. **opgen_standalone.py**:新增 \_update_cmake_chain()\ 方法,在生成算子工程后自动向上遍历父目录,在各级 CMakeLists.txt 中追加 \add_subdirectory\,确保构建系统能找到新建的工程目录 3. **add_example_infershape.cpp**:将 \IDX_0\ 替换为字面量 \0\,消除未定义宏导致的编译错误 4. **add_example_tiling.cpp**:为未使用的 \context\ 参数添加 \[[maybe_unused]]\ 属性并直接返回 \GRAPH_SUCCESS\,消除未使用参数警告 5. **add_example.cpp / add_example.h**:修正 kernel 函数和 \Init\ 方法的参数签名,移除多余的 \z\(输出)参数;补全 \Init\ 的参数声明和实现;将 \Process\ 中的循环次数改为变量 \loopExample\ ## 关联的Issue - #1378 https://gitcode.com/cann/ops-math/issues/1335 ## 测试 使用 opgen 工具生成算子工程后,验证生成的代码可以正常编译通过。 ## 文档更新 无 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!2431 | 4 个月前 | |
fix: 修复opgen使用已存在目录时重复添加add_subdirectory的问题 Co-authored-by: songkai111<songkai16@huawei.com> # message auto-generated for no-merge-commit merge: !2824 merge master into master fix: 修复opgen使用已存在目录时重复添加add_subdirectory的问题 Created-by: songkai111 Commit-by: songkai111 Merged-by: cann-robot Description: ## 描述 修复 opgen_standalone.py 中 _update_cmake_chain() 方法在检查子目录是否已被包含时的逻辑缺陷。 ### 改动原因 当使用已存在的算子工程目录执行 opgen 生成新算子时,_update_cmake_chain() 仅检查父目录 CMakeLists.txt 主文件中是否已存在 add_subdirectory(child) 的调用,但未检查通过 include() 引入的外部 CMake 文件中是否已通过 OPS_CATEGORY_LIST 变量包含了该子目录。这导致在已存在目录下生成算子时,会重复添加 add_subdirectory 条目。 ### 改动方法 在原有的 add_subdirectory 正则匹配之后,增加对 include() 引入的外部 CMake 文件的检查逻辑: 1. 解析 CMakeLists.txt 中所有 include() 指令引用的外部文件路径 2. 读取这些外部文件内容 3. 在主文件和所有外部文件中搜索 set(OPS_CATEGORY_LIST ...) 变量定义 4. 检查目标子目录名是否已包含在 OPS_CATEGORY_LIST 的值中 5. 如果已包含,则标记 already_included = True,跳过添加 add_subdirectory ### 影响范围 仅影响 scripts/opgen/opgen_standalone.py,涉及 _update_cmake_chain() 方法中的已存在目录检查逻辑。 ## 关联的Issue - #1599 ## 测试 在已存在的算子工程目录下执行 opgen 生成新算子,验证不再出现重复的 add_subdirectory 条目。 ## 文档更新 无 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!2824 | 3 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 4 个月前 | ||
| 3 个月前 |