| feat:add license headers to annotated args examples Co-authored-by: lfz<220252399@seu.edu.cn> # message auto-generated for no-merge-commit merge: !4683 merge fix1 into develop feat:add license headers to annotated args examples Created-by: lfz2812 Commit-by: lfz Merged-by: cann-robot Description: # Pull Request ## 描述 补充4个cmake文件中的license ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [x] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 2. ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!4683 | 1 天前 |
| feat: Python 自定义算子原型执行样例 Co-authored-by: lfz<220252399@seu.edu.cn> # message auto-generated for no-merge-commit merge: !4519 merge develop4-pr3-base into develop feat: Python 自定义算子原型执行样例 Created-by: lfz2812 Commit-by: lfz Merged-by: cann-robot Description: # Pull Request ## 描述 完善 Python 自定义算子公开资料,并将现有 args_refresh_add_custom/python 样例升级为 Python 原型注册、infer-meta 和 PyPTO 执行的端到端样例。 主要变更: - 在 src/ge/add_custom.py 中使用 @register_op 注册 AddPythonCustomOp 原型和 infer-meta。 - infer-meta 校验输入 shape 和 data type,并通过 TensorDesc 返回输出元信息。 - 使用 @register_op_impl 注册 schema-bound execute(x, y) 实现。 - 使用 PyPTO 实现与 add_custom.asc 等价的 z = x + y NPU kernel。 - 通过 DLPack 将 GE device Tensor 零拷贝转换为 torch_npu Tensor,并在 GE 当前 stream 上执行 PyPTO kernel。 - 删除样例原有的 Bisheng 编译、AI Core binary 提取、_load_kernel()、ACL binary 加载和 kernel launch 流程。 - 更新 run.sh,仅生成和安装 ES Python API,并运行 Python Session 样例。 - 移除构图阶段的 _out_shape_locked 属性和手工设置输出 shape、format、data type 的逻辑,输出元信息由 Python infer-meta 提供。 - C++ REG_OP 仅作为 gen_esb 生成 ge.es.custom.AddPythonCustomOp 构造器的输入,不参与运行时原型注册。 - 将 C++ schema 输出名改为 output0,与 Python register_op 对普通非别名输出生成的默认名称保持一致,避免 canonical IR 兼容性检查失败。 - 增加 ge.runtime.TensorDesc 中文 API 文档,并说明其与 ge.graph.TensorDesc 的区别。 - 同步更新中英文设计文档和自定义算子样例说明。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [x] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 关联的Issue [#299](https://gitcode.com/cann/ge/issues/299) ## 如何测试 已执行以下静态检查: bash python3 -m py_compile \ examples/custom_op/args_refresh_add_custom/python/src/ge/add_custom.py \ examples/custom_op/args_refresh_add_custom/python/src/run.py bash -n examples/custom_op/args_refresh_add_custom/python/run.sh git diff --check 已针对全部变更文件执行 pre-commit,以下检查均通过: - trim trailing whitespace - fix end of files - clang-format - ruff check - ruff format - codespell - OAT Compliance Check NPU 环境验收步骤: source ${ASCEND_HOME_PATH}/set_env.sh cd examples/custom_op/args_refresh_add_custom/python bash run.sh ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 - args_refresh_add_custom/cpp/add_custom_kernel/add_custom.asc 继续供 C++ 样例使用,并作为 PyPTO 加法实现的逻辑参考;Python 样例运行时不再编译或加载该文件。 - 当前 PyPTO 样例支持 DT_FLOAT 和连续的确定 Storage Shape。 - GE 保持输入和输出 device memory 的所有权,DLPack deleter 仅释放 Python 侧临时元数据。 - C++ REG_OP 输出名必须与 Python canonical proto 保持一致。当前普通非别名输出使用默认名称 output0。 - 当前环境未配置完整的 CANN、PyPTO 和 torch_npu NPU 运行环境,真机执行需要在对应 NPU 环境完成。1. - See merge request: cann/ge!4519 | 2 天前 |
| fix: 修复precommit误删的py引用 Co-authored-by: yelongjian<yelongjian1@huawei.com> # message auto-generated for no-merge-commit merge: !3885 merge dev-precommit0706 into develop fix: 修复precommit误删的py引用 Created-by: yelongjian Commit-by: yelongjian Merged-by: cann-robot Description: # Pull Request ## 描述 修复precommit误删的py引用 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1.NA ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!3885 | 1 个月前 |
| fix: 修复sample问题 Co-authored-by: Ekoxier<husizhe@huawei.com> # message auto-generated for no-merge-commit merge: !3937 merge fix/sample_issue into develop fix: 修复sample问题 Created-by: Ekoxier Commit-by: Ekoxier Merged-by: cann-robot Description: # Pull Request ## 描述 fix: 修复sample问题 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 2. ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!3937 | 1 个月前 |
| fix: precommit整改 Co-authored-by: yelongjian<yelongjian1@huawei.com> # message auto-generated for no-merge-commit merge: !3726 merge dev-precommit into develop fix: precommit整改 Created-by: yelongjian Commit-by: yelongjian Merged-by: cann-robot Description: # Pull Request ## 描述 precommit整改 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [x] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1.NA ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!3726 | 2 个月前 |
| feat: 新增 HostCPU 自定义算子示例及文档 Co-authored-by: du-hua1024<duhua2@huawei.com> # message auto-generated for no-merge-commit merge: !4602 merge op into develop feat: 新增 HostCPU 自定义算子示例及文档 Created-by: du-hua1024 Commit-by: du-hua1024 Merged-by: cann-robot Description: # Pull Request ## 描述 补充 HostCPU 自定义算子示例及配套文档,覆盖以下场景: - 常量折叠:编译期调用 HostCpuExecuteOp 完成计算。 - 运行时 HostCpu 调度:验证小 shape 命中 HostCpu、大 shape 继续由 AICore 执行。 - 离线 OM:完成 ES 构图、ATC 转换和 ACL 加载执行流程。 同时: - 修正算子信息构建时的自定义算子查询,仅按 Device backend 判断,避免 HostCPU 注册影响 Device 算子。 - 补充 Python custom op execute 和 register_op_impl API 文档。 - 更新常量折叠设计文档及示例索引、CMake 和运行脚本。 ## 变更类型 - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 关联的Issue 暂无关联 Issue。 ## 如何测试 - 在已配置 CANN 的环境中,分别执行: - examples/custom_op/host_cpu_add_custom/constant_folding/run.sh - examples/custom_op/host_cpu_add_custom/host_scheduling/run.sh - examples/custom_op/host_cpu_add_custom/offline/run.sh ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(feat:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 HostCPU 示例目录包含常量折叠、运行时调度和离线 OM 三个子场景。 See merge request: cann/ge!4602 | 6 天前 |
| feat: complete Python compilable custom-op online and offline example Co-authored-by: shangdf<shangdongfang1@huawei.com> # message auto-generated for no-merge-commit merge: !4477 merge feature/python-compilable-example-develop into develop feat: complete Python compilable custom-op online and offline example Created-by: shangdf Commit-by: shangdf Merged-by: cann-robot Description: ## 描述 为 GE PR 4388 提供独立的 Python compilable custom-op 示例,完整覆盖 online + offline 两条链路。本 PR 只包含 examples/custom_op 下的示例、索引和离线验证工具,不重复提交 4388 的核心实现。 示例使用同一个 Python compile / declare_launch_args 实现覆盖两条链路: - 在线:run_online.sh 通过 GE Session 构图,验证 CustomGraphOptimizer 调用 Python compile、Bisheng 生成 Ascend C kernel,并在线执行 x + y。 - 离线:run_offline.sh 由 C++ 程序生成 AIR,ATC 在 Python 插件可加载时调用同一个 compile 回调生成 OM;随后清除 Python 插件路径,仅保留 C++ OPP 交付件加载 OM 并执行。 平台信息使用 4388 的最终 API get_compile_platform_info();ASCEND_CUSTOM_OPP_PATH 同时配置 OPP 根目录和 Python 插件目录。 ## 依赖关系 本 PR 依赖 GE PR 4388 提供的 Python compilable 接口(register_op_impl 的 compile 能力、get_compile_platform_info()、native bridge)。请使用 4388 合入后的 GE/CANN 运行包进行完整验证。 ## 如何测试 - python3 -m pytest -q examples/custom_op/python_compilable_add_custom/test/test_python_compilable_add_custom.py - ruff check examples/custom_op/python_compilable_add_custom/src/ge/python_compilable_add_custom.py examples/custom_op/python_compilable_add_custom/src/run.py examples/custom_op/python_compilable_add_custom/test/test_python_compilable_add_custom.py - 配置 CANN、Bisheng 和 NPU 后执行 bash examples/custom_op/python_compilable_add_custom/run_online.sh - 配置 ATC 后执行 bash examples/custom_op/python_compilable_add_custom/run_offline.sh;该脚本在最后一步移除 Python 插件,验证 OM 执行不依赖 Python callback。 See merge request: cann/ge!4477 | 6 天前 |
| feat(custom_op): 新增 TileLang 自定义算子入图/在线编译/离线模型下沉样例 Co-authored-by: qq_45842700<caodazhou@huawei.com> # message auto-generated for no-merge-commit merge: !4520 merge feat/tilelang-add-custom-examples into develop feat(custom_op): 新增 TileLang 自定义算子入图/在线编译/离线模型下沉样例 Created-by: Dazhou_Cao Commit-by: qq_45842700 Merged-by: cann-robot Description: # Pull Request ## 描述 本次 PR 新增三个 TileLang 自定义算子样例,展示如何使用 TileLang 语言开发 Ascend 自定义算子并通过 GE 进行入图、在线编译和离线模型下沉: 1. **tilelang_add_custom** — TileLang 算子入图样例,演示将 TileLang 编译的 kernel 注册为 GE 自定义算子并通过 Session 执行 2. **tilelang_add_custom_online** — TileLang 算子在线编译样例,演示在运行时动态编译 TileLang kernel 并执行 3. **tilelang_add_custom_offline** — TileLang 算子离线 OM 模型下沉样例,演示将 TileLang 算子编译为离线 OM 模型并执行 同时更新了 examples/custom_op/README.md 和 README_en.md,添加 TileLang 样例索引。 ## 变更类型 - [x] ✨ 新功能 ## 关联的Issue ## 如何测试 1. 进入对应样例目录(如 examples/custom_op/tilelang_add_custom) 2. 参考 README.md 配置环境变量(ASCEND_HOME_PATH 等) 3. 执行 bash run.sh 运行样例 4. 验证输出结果与预期一致 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定 ## 其他信息 样例参考了同目录下 triton_add_custom 等已有算子样例的结构。每个样例包含完整的源码、CMakeLists.txt、README 和运行脚本。 See merge request: cann/ge!4520 | 8 天前 |
| feat(custom_op): 新增 TileLang 自定义算子入图/在线编译/离线模型下沉样例 Co-authored-by: qq_45842700<caodazhou@huawei.com> # message auto-generated for no-merge-commit merge: !4520 merge feat/tilelang-add-custom-examples into develop feat(custom_op): 新增 TileLang 自定义算子入图/在线编译/离线模型下沉样例 Created-by: Dazhou_Cao Commit-by: qq_45842700 Merged-by: cann-robot Description: # Pull Request ## 描述 本次 PR 新增三个 TileLang 自定义算子样例,展示如何使用 TileLang 语言开发 Ascend 自定义算子并通过 GE 进行入图、在线编译和离线模型下沉: 1. **tilelang_add_custom** — TileLang 算子入图样例,演示将 TileLang 编译的 kernel 注册为 GE 自定义算子并通过 Session 执行 2. **tilelang_add_custom_online** — TileLang 算子在线编译样例,演示在运行时动态编译 TileLang kernel 并执行 3. **tilelang_add_custom_offline** — TileLang 算子离线 OM 模型下沉样例,演示将 TileLang 算子编译为离线 OM 模型并执行 同时更新了 examples/custom_op/README.md 和 README_en.md,添加 TileLang 样例索引。 ## 变更类型 - [x] ✨ 新功能 ## 关联的Issue ## 如何测试 1. 进入对应样例目录(如 examples/custom_op/tilelang_add_custom) 2. 参考 README.md 配置环境变量(ASCEND_HOME_PATH 等) 3. 执行 bash run.sh 运行样例 4. 验证输出结果与预期一致 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定 ## 其他信息 样例参考了同目录下 triton_add_custom 等已有算子样例的结构。每个样例包含完整的源码、CMakeLists.txt、README 和运行脚本。 See merge request: cann/ge!4520 | 8 天前 |
| feat(custom_op): 新增 TileLang 自定义算子入图/在线编译/离线模型下沉样例 Co-authored-by: qq_45842700<caodazhou@huawei.com> # message auto-generated for no-merge-commit merge: !4520 merge feat/tilelang-add-custom-examples into develop feat(custom_op): 新增 TileLang 自定义算子入图/在线编译/离线模型下沉样例 Created-by: Dazhou_Cao Commit-by: qq_45842700 Merged-by: cann-robot Description: # Pull Request ## 描述 本次 PR 新增三个 TileLang 自定义算子样例,展示如何使用 TileLang 语言开发 Ascend 自定义算子并通过 GE 进行入图、在线编译和离线模型下沉: 1. **tilelang_add_custom** — TileLang 算子入图样例,演示将 TileLang 编译的 kernel 注册为 GE 自定义算子并通过 Session 执行 2. **tilelang_add_custom_online** — TileLang 算子在线编译样例,演示在运行时动态编译 TileLang kernel 并执行 3. **tilelang_add_custom_offline** — TileLang 算子离线 OM 模型下沉样例,演示将 TileLang 算子编译为离线 OM 模型并执行 同时更新了 examples/custom_op/README.md 和 README_en.md,添加 TileLang 样例索引。 ## 变更类型 - [x] ✨ 新功能 ## 关联的Issue ## 如何测试 1. 进入对应样例目录(如 examples/custom_op/tilelang_add_custom) 2. 参考 README.md 配置环境变量(ASCEND_HOME_PATH 等) 3. 执行 bash run.sh 运行样例 4. 验证输出结果与预期一致 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定 ## 其他信息 样例参考了同目录下 triton_add_custom 等已有算子样例的结构。每个样例包含完整的源码、CMakeLists.txt、README 和运行脚本。 See merge request: cann/ge!4520 | 8 天前 |
| fix: 修复precommit误删的py引用 Co-authored-by: yelongjian<yelongjian1@huawei.com> # message auto-generated for no-merge-commit merge: !3885 merge dev-precommit0706 into develop fix: 修复precommit误删的py引用 Created-by: yelongjian Commit-by: yelongjian Merged-by: cann-robot Description: # Pull Request ## 描述 修复precommit误删的py引用 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1.NA ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!3885 | 1 个月前 |
| feat: Python 自定义算子原型执行样例 Co-authored-by: lfz<220252399@seu.edu.cn> # message auto-generated for no-merge-commit merge: !4519 merge develop4-pr3-base into develop feat: Python 自定义算子原型执行样例 Created-by: lfz2812 Commit-by: lfz Merged-by: cann-robot Description: # Pull Request ## 描述 完善 Python 自定义算子公开资料,并将现有 args_refresh_add_custom/python 样例升级为 Python 原型注册、infer-meta 和 PyPTO 执行的端到端样例。 主要变更: - 在 src/ge/add_custom.py 中使用 @register_op 注册 AddPythonCustomOp 原型和 infer-meta。 - infer-meta 校验输入 shape 和 data type,并通过 TensorDesc 返回输出元信息。 - 使用 @register_op_impl 注册 schema-bound execute(x, y) 实现。 - 使用 PyPTO 实现与 add_custom.asc 等价的 z = x + y NPU kernel。 - 通过 DLPack 将 GE device Tensor 零拷贝转换为 torch_npu Tensor,并在 GE 当前 stream 上执行 PyPTO kernel。 - 删除样例原有的 Bisheng 编译、AI Core binary 提取、_load_kernel()、ACL binary 加载和 kernel launch 流程。 - 更新 run.sh,仅生成和安装 ES Python API,并运行 Python Session 样例。 - 移除构图阶段的 _out_shape_locked 属性和手工设置输出 shape、format、data type 的逻辑,输出元信息由 Python infer-meta 提供。 - C++ REG_OP 仅作为 gen_esb 生成 ge.es.custom.AddPythonCustomOp 构造器的输入,不参与运行时原型注册。 - 将 C++ schema 输出名改为 output0,与 Python register_op 对普通非别名输出生成的默认名称保持一致,避免 canonical IR 兼容性检查失败。 - 增加 ge.runtime.TensorDesc 中文 API 文档,并说明其与 ge.graph.TensorDesc 的区别。 - 同步更新中英文设计文档和自定义算子样例说明。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [x] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 关联的Issue [#299](https://gitcode.com/cann/ge/issues/299) ## 如何测试 已执行以下静态检查: bash python3 -m py_compile \ examples/custom_op/args_refresh_add_custom/python/src/ge/add_custom.py \ examples/custom_op/args_refresh_add_custom/python/src/run.py bash -n examples/custom_op/args_refresh_add_custom/python/run.sh git diff --check 已针对全部变更文件执行 pre-commit,以下检查均通过: - trim trailing whitespace - fix end of files - clang-format - ruff check - ruff format - codespell - OAT Compliance Check NPU 环境验收步骤: source ${ASCEND_HOME_PATH}/set_env.sh cd examples/custom_op/args_refresh_add_custom/python bash run.sh ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 - args_refresh_add_custom/cpp/add_custom_kernel/add_custom.asc 继续供 C++ 样例使用,并作为 PyPTO 加法实现的逻辑参考;Python 样例运行时不再编译或加载该文件。 - 当前 PyPTO 样例支持 DT_FLOAT 和连续的确定 Storage Shape。 - GE 保持输入和输出 device memory 的所有权,DLPack deleter 仅释放 Python 侧临时元数据。 - C++ REG_OP 输出名必须与 Python canonical proto 保持一致。当前普通非别名输出使用默认名称 output0。 - 当前环境未配置完整的 CANN、PyPTO 和 torch_npu NPU 运行环境,真机执行需要在对应 NPU 环境完成。1. - See merge request: cann/ge!4519 | 2 天前 |
| feat: Python 自定义算子原型执行样例 Co-authored-by: lfz<220252399@seu.edu.cn> # message auto-generated for no-merge-commit merge: !4519 merge develop4-pr3-base into develop feat: Python 自定义算子原型执行样例 Created-by: lfz2812 Commit-by: lfz Merged-by: cann-robot Description: # Pull Request ## 描述 完善 Python 自定义算子公开资料,并将现有 args_refresh_add_custom/python 样例升级为 Python 原型注册、infer-meta 和 PyPTO 执行的端到端样例。 主要变更: - 在 src/ge/add_custom.py 中使用 @register_op 注册 AddPythonCustomOp 原型和 infer-meta。 - infer-meta 校验输入 shape 和 data type,并通过 TensorDesc 返回输出元信息。 - 使用 @register_op_impl 注册 schema-bound execute(x, y) 实现。 - 使用 PyPTO 实现与 add_custom.asc 等价的 z = x + y NPU kernel。 - 通过 DLPack 将 GE device Tensor 零拷贝转换为 torch_npu Tensor,并在 GE 当前 stream 上执行 PyPTO kernel。 - 删除样例原有的 Bisheng 编译、AI Core binary 提取、_load_kernel()、ACL binary 加载和 kernel launch 流程。 - 更新 run.sh,仅生成和安装 ES Python API,并运行 Python Session 样例。 - 移除构图阶段的 _out_shape_locked 属性和手工设置输出 shape、format、data type 的逻辑,输出元信息由 Python infer-meta 提供。 - C++ REG_OP 仅作为 gen_esb 生成 ge.es.custom.AddPythonCustomOp 构造器的输入,不参与运行时原型注册。 - 将 C++ schema 输出名改为 output0,与 Python register_op 对普通非别名输出生成的默认名称保持一致,避免 canonical IR 兼容性检查失败。 - 增加 ge.runtime.TensorDesc 中文 API 文档,并说明其与 ge.graph.TensorDesc 的区别。 - 同步更新中英文设计文档和自定义算子样例说明。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [x] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 关联的Issue [#299](https://gitcode.com/cann/ge/issues/299) ## 如何测试 已执行以下静态检查: bash python3 -m py_compile \ examples/custom_op/args_refresh_add_custom/python/src/ge/add_custom.py \ examples/custom_op/args_refresh_add_custom/python/src/run.py bash -n examples/custom_op/args_refresh_add_custom/python/run.sh git diff --check 已针对全部变更文件执行 pre-commit,以下检查均通过: - trim trailing whitespace - fix end of files - clang-format - ruff check - ruff format - codespell - OAT Compliance Check NPU 环境验收步骤: source ${ASCEND_HOME_PATH}/set_env.sh cd examples/custom_op/args_refresh_add_custom/python bash run.sh ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 - args_refresh_add_custom/cpp/add_custom_kernel/add_custom.asc 继续供 C++ 样例使用,并作为 PyPTO 加法实现的逻辑参考;Python 样例运行时不再编译或加载该文件。 - 当前 PyPTO 样例支持 DT_FLOAT 和连续的确定 Storage Shape。 - GE 保持输入和输出 device memory 的所有权,DLPack deleter 仅释放 Python 侧临时元数据。 - C++ REG_OP 输出名必须与 Python canonical proto 保持一致。当前普通非别名输出使用默认名称 output0。 - 当前环境未配置完整的 CANN、PyPTO 和 torch_npu NPU 运行环境,真机执行需要在对应 NPU 环境完成。1. - See merge request: cann/ge!4519 | 2 天前 |