| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
feat: 自定义算子支持变长自定义数据(非内联方案) Co-authored-by: Chang-an-HW<machangan@huawei.com> # message auto-generated for no-merge-commit merge: !5273 merge feat/annotated-args-custom-data-noinline into develop feat: 自定义算子支持变长自定义数据(非内联方案) Created-by: Chang-an-HW Commit-by: Chang-an-HW Merged-by: cann-robot Description: # Pull Request SEG 20260629评审通过 ## 描述 为自定义算子的声明式 kernel launch 参数构建器 gert::AnnotatedKernelArgs 增加「变长只读字节数据」承载能力,解决自定义算子无法把 tiling 数据、常量查找表、描述符数组等**长度不固定**的数据传给 kernel 的问题。本 PR 共 16 个 commit,27 个文件,+1922/−41。 ### 背景与难点 改动前 gert::AnnotatedKernelArgs 仅支持四类**固定 8 字节**参数:逻辑输入地址、逻辑输出地址、逻辑 workspace 地址、uint64_t 标量,无法承载变长字节数据。 核心难点在于 GE 全链路硬编码了「**1 个 ge::ArgDesc = 1 个 8 字节槽**」这一不变式,分布在多处:builder 的 args.size() == arg_descs.size() * 8 校验、SetArgsOffset 的 offset = i * 8、materialize 阶段的 args[i * 8] 重填,以及被 9 类 task 共享的 ArgsIoAddrsUpdater 的 io_index * 8。若把数据字节内联进 args,上述不变式全部被击穿,且 args_offset 为 uint16,会带来 64 KB 的硬上限。 ### 方案:索引间接化(数据旁路存储) | 承载对象 | 存放位置 | | --- | --- | | 数据本体 | TaskDef.kernel.kernel_ext_info(复用 proto 既有字段 18,按 desc 顺序裸拼接) | | 数据长度 | args_format 的 pattern 中,形如 {custom_data<idx>.<size>bytes} | | args 槽位 | 恒占 1 个 8 字节槽,槽值为该数据的 device 地址 | 该形态与框架自身处理 FE tiling 的机制完全同构(MallocDynamicMemory + H2D 上传 + kAbsoluteMemType 参与刷新),因此 **5 处 8 字节不变式零破坏**,且 ArgsIoAddrsUpdater、ModelArgsManager、DavinciModel 三个共享组件**零修改**,**无 proto 变更**。 ### 主要改动 **公共 API(纯新增,向后兼容)** - 新增 gert::CustomData{const void *data; size_t size;}(@since 9.3.0(2026-10)) - 新增 AnnotatedKernelArgs::AppendArg(const CustomData &) - 新增 ge::AddrType::CUSTOM_DATA,追加在 MAX 之前,不改变任何既有枚举值 - blob 字节**不新增公开接口**:改由 friend class AnnotatedArgsContext 授权框架内部读取 impl_,避免在随包发布的 external 头上扩大永久兼容承诺;既有两参 ExtractArgsData 签名与行为不变 **格式层** - 新增 custom_data pattern 及**专用** CustomDataSerializer/CustomDataParser,把 size 编码进 pattern 并经 ArgDesc.reserved 往返(ArrayLikeSerializer 不携带 reserved,不可复用) - 单位后缀用 bytes 全称,避免与既有 .32b 的 bit 语义冲突 - pattern 仅注册主表 kPatternToHandler;ConvertArgDescNormal2Sk 入口显式拒绝,避免 sk 往返丢失 size 后静默降级 **编译层** - 新增 FillCustomDataExtInfo:按 CUSTOM_DATA desc 出现顺序把 blob 裸拼接写入 kernel_ext_info,成对设置 kernel_ext_info_size,并做三重交叉校验(Σ pattern 编码 size == kernel_ext_info.size() == kernel_ext_info_size) - materialize 路径新增 CUSTOM_DATA → continue,槽位保持编译期 0 占位 **运行期 v1** - 新增 LoadCustomDataBlobs:在**模型加载期**按 reserved 切分 kernel_ext_info,逐个 MallocDynamicMemory + aclrtMemcpy 上传,地址缓存于 custom_data_addrs_ - AssembleIoByArgsFormat 新增 CUSTOM_DATA 分支,以 kAbsoluteMemType 填址(参与刷新但值恒定) - **执行期零新增操作**:Distribute 未改动;blob 内存为 model 级生命周期,由 FreeDynamicWorkspaceMemory 统一回收 **不支持路径显式拒绝(编译期 fail-fast,不产出静默错误的产物)** - **mobile OMC**:CheckAnnotatedArgsTaskPlanForMode + GenerateMobileAnnotatedArgsTask 防御性检查(覆盖计划缓存命中路径)+ MobileModelHelper::SaveToOmModel 权威兜底 - **OM2 出图**:CustomTaskCodeBuilder::Contribute 显式检测 AddrType::CUSTOM_DATA 并报错(否则会静默生成含未初始化槽的 args) - **super kernel**:ConvertArgDescNormal2Sk 入口拒绝 **文档与测试** - 新增/更新 C++ API 文档:CustomData.md(新增)、AppendArg.md、AnnotatedKernelArgs/overview.md、API 导航 README.md - 新增 **36 个 UT 用例**,分布于 7 个 suite:AnnotatedArgsContextUT(4)、AnnotatedKernelArgsUT(6)、UtestArgsFormatDesc(7)、UtestCustomOpsKernelInfoStoreCustomData(5)、UtestCustomTaskInfoCustomData(10)、Om2CodegenModelBuilderUt(2)、UtestMobileModelHelper(2) ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> 无关联 Issue。 ## 如何测试 ### 前提条件 1. 用本分支代码构建并安装两个子包: bash bash build.sh --ge_compiler --ge_executor -j24 ./build_out/cann-ge-compiler_*.run --install-path=<CANN_INSTALL> --full --quiet ./build_out/cann-ge-executor_*.run --install-path=<CANN_INSTALL> --full --quiet 2. source <CANN_INSTALL>/set_env.sh,准备可用 NPU(本机验证环境:Ascend 910B3 / CANN 9.3.0) ### UT bash bash tests/run_test.sh --ut 本机实测通过:ut_exe_graph 23/23、ut_libge_multiparts_utest 的 CustomData 用例 5/5、ut_libge_distinct_load_utest 的 CustomData 用例 10/10。 ### 端到端(NPU 上板) 配套样例作为独立 PR 提交(examples/custom_op/annotated_args_custom_data_addr),其 host 侧在一次 launch 中追加**两个** CustomData blob(变长查找表 + 定长 32B 标量参数),每个场景执行 3 轮,每轮重新申请输入/输出 device 内存以走到地址刷新路径: | 场景 | table_len | blob0 大小 | 验证点 | | --- | --- | --- | --- | | case1 | 6 | 32B | 基本功能 + 3 轮地址刷新 | | case2 | 13 | 64B | 变长:blob 长度变化而 args 布局不变 | | case3 | 5 | 28B(非对齐) | 非内联方案对 blob 长度无对齐约束 | 实测 **3/3 全部通过**,证据链: - OM 中 args_format = {i_instance0*}{i_instance1*}{custom_data0.32bytes}{custom_data1.32bytes}{o_instance0*},5 个槽顺序与 host 侧追加顺序逐项一致 - OM 中 kernel_ext_info(proto field 18)长度 = blob0 + blob1,逐字节与 host 侧构造内容一致;kernel_ext_info_size(field 19)与之相等 - 加载期 GE 日志:MallocDynamicMemory ... size: 32 ×2,随后 LoadCustomDataBlobs: [CUSTOM OP] loaded 2 custom data blobs, total 64 bytes - 执行期零开销:3 轮执行中 blob 的 MallocDynamicMemory 仅 2 次、LoadCustomDataBlobs 仅 1 次,全部发生在加载期 - 变异实验:用错误的 table_len 校验同一份 OM 必然失败,且失败值精确对应 OM 内 blob 的真实内容(声称 5 时报 kernel 实际读到 600,即真实 len=6 的 table[5]),证明 kernel 确实消费了 blob 字节而非碰巧算对 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 ### 兼容性 - **老 OM + 新版本 GE**:完全兼容。CUSTOM_DATA 追加在 MAX 之前,既有枚举值不变;新增代码分支均以「存在 CUSTOM_DATA desc」为前提 - **新 OM(未使用 CustomData)+ 老版本 GE**:与改动前逐字节一致(不使用时不写 kernel_ext_info) - **新 OM(使用 CustomData)+ 老版本 GE**:老版本解析 args_format 时明确报错(Args format [...] matched failed),加载终止,不会静默错跑 - **proto**:无变更,复用 KernelDef.kernel_ext_info = 18 / kernel_ext_info_size = 19 - **公共头 ABI**:sizeof(AnnotatedKernelArgs) 不变、AnnotatedArgsContext 的 static_assert 保持通过、既有四类 AppendArg 与两参 ExtractArgsData 行为不变 ### kernel 侧消费契约 args 中该槽位为裸 8 字节 device 地址,**数据长度不经 args 传递**(与框架既有 tiling 机制一致),kernel 侧获取长度有三种方式: 1. host/device 共享结构体 + sizeof(推荐,AscendC 既有 GET_TILING_DATA 等宏可直接使用) 2. 数据自描述(首字段写入条目数或总长度,kernel 先读头部再定位变长区) 3. 追加该描述符后再 AppendArg(uint64_t) 追加一个显式长度槽 框架**不会**自动追加长度槽,以保证 kernel 侧可沿用 AscendC 现成宏体系。 ### 已知边界 - 单条 blob 大小与单次 launch 累计字节数的代码级上限均为 UINT32_MAX(受 kernel_ext_info_size 为 uint32 约束);实际可用量还受 HBM 容量与 protobuf 单消息上限限制 - 单次 launch 的槽位数上限为 8192(args_offset 为 uint16),该检查在编译期 SetArgsOffset 生效 - 上述两个上界中,单条 size 与累计 size 的检查未前移到 AppendArg,超限会在编译期 args_format 解析/FillCustomDataExtInfo 阶段报错(明确失败,无静默截断) ### 本轮范围之外 - **Python 侧接口未实现**:ge.custom_op 的 append_custom_data 绑定已在本分支回退,本 PR 只交付 C++ 接口 - **ST/NPU 上板用例未纳入本仓库**:端到端验证通过独立 PR 的样例完成 - 设计文档未随本 PR 提交(已从分支移除) ### 配套 PR 端到端样例作为独立 PR 提交(examples/custom_op/annotated_args_custom_data_addr),依赖本 PR 的特性代码,建议晚于本 PR 合入。 See merge request: cann/ge!5273 | 6 天前 | |
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 | 4 个月前 | |
【feat】: Support PCIe Through Co-authored-by: kantao1<kantao1@huawei.com> # message auto-generated for no-merge-commit merge: !4394 merge pcie_through into develop 【feat】: Support PCIe Through Created-by: kantao1 Commit-by: kantao1 Merged-by: cann-robot Description: # Pull Request 接口评审时间:2026/08/06(周四) ## 描述 PCIE Through 是 Ascend NPU 硬件能力,允许 device 端算子通过 PCIE 总线直接访问 host 内存。当前单算子场景可用,但在模型编译场景下,编译期无法确定输入 tensor 的真实的地址范围,导致 tiling 阶段无法选择正确 kernel。 本特性通过编译期能力识别 + TilingContext 注入 + 执行期上下文扩展(动态 shape),解决此问题。 ### 核心设计 **编译阶段(lowering)**: - BuildTilingPcieThroughInput 从 DefaultOpImplSpaceRegistryV2 查询算子是否支持 PCIe Through,同时通过 IsPcieThroughEnabled 检查运行环境(option 开关、芯片能力、设备连接类型),两者均满足时将 pcie_through_flag 初始值设为 true - IsPcieThroughEnabled 结果通过 thread_local static 缓存,每个线程仅计算一次 - BuildTilingCommonInputs 在 input_addrs 可用时,通过 BuildRefTensor 将输入从 StorageShape 升级为包含设备地址的 Tensor,使运行时能通过 GetInputTensor(i)->GetAddr() 获取实际输入地址 **运行时(executor)**: - UpdatePcieThroughFlag 读取 pcie_through_flag,为 false 时直接跳过;为 true 时通过 IsAnyInputInPcieRange 遍历输入地址,检查是否落在 PCIe 地址范围内 - 若存在 PCIe 地址 → flag 保持 true;否则改为 false - GetPcieThroughFlag() 接口供 Tiling 函数和缓存键计算使用 **关键修复**: - fwk_data_idx 恢复后向计算(input_num - kFwkDataOffset),修复 symbol tiling 路径中前向计算导致的 702 行 ASSERT 失败 - GetPcieThroughFlag 改为后向 GetInputNum() - 1,与 pcie_through_flag 作为最后一个输入的布局一致 - TilingForAtomic 补充 BuildTilingPcieThroughInput 调用,保证输入布局一致性 - BuildGeneralTilingCacheKey 简化为直接读 GetPcieThroughFlag(),消除运行时查 space_registry 的版本不一致问题 ## 变更类型 - [x] ✨ 新功能 - [x] 🐛 Bug 修复 ## 关联的Issue <!-- 请在右侧关联对应 Issue --> ## 如何测试 1. 编译 UT:make -C cmake-build-gcov ut_fast_runtime2_test ut_exe_graph ut_register -j$(nproc) 2. 运行 PCIe Through 相关 UT:--gtest_filter='*PcieThrough*' 3. 运行 TilingContextBuilder UT:--gtest_filter='TilingContextBuilderUT.*' 4. 在 PCIe 直通环境上执行模型推理,验证 pcie_through 算子正确识别地址并优化搬运 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签 - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定 ## 其他信息 ### 涉及文件 | 仓库 | 文件 | 改动说明 | |------|------|---------| | ge | runtime/v2/graph_builder/bg_tiling.cc | 新增 IsPcieThroughEnabled、BuildTilingPcieThroughInput;BuildTilingCommonInputs 支持 BuildRefTensor;TilingForAtomic 补充 pcie through 输入 | | ge | runtime/v2/kernel/common_kernel_impl/tiling.cc | 新增 IsAnyInputInPcieRange、UpdatePcieThroughFlag;fwk_data_idx 恢复后向计算;BuildGeneralTilingCacheKey 简化 | | ge | runtime/v2/kernel/common_kernel_impl/tiling.h | 新增 kPcieThroughFlag 枚举项 | | metadef | inc/external/exe_graph/runtime/tiling_context.h | GetPcieThroughFlag 改为后向计算 | | ge | tests/ | 新增 PCIe Through 相关 UT/ST 用例 | See merge request: cann/ge!4394 | 1 个月前 | |
feat: 支持通过 AttrValue 查询 NamedAttrs 子属性 Co-authored-by: du-hua1024<duhua2@huawei.com> # message auto-generated for no-merge-commit merge: !5548 merge develop into develop feat: 支持通过 AttrValue 查询 NamedAttrs 子属性 Created-by: du-hua1024 Commit-by: du-hua1024 Merged-by: cann-robot Description: 20261022 # Pull Request ## 描述 Conv2DQuantProcessFusionPass 迁移到 ops-nn 后,无法继续依赖 GE 内部 AttrUtils 接口读取 NamedAttrs。现有 GNode/Operator::GetAttr 能够返回承载集合的 AttrValue,但缺少公开的子属性读取能力。 本次变更: - 新增 GetNamedAttrValue,按名称读取子属性,支持逐层读取嵌套集合。 - 新增 GetNamedAttrNames,枚举集合字段名。 - 增加 AT_NAMED_ATTRS 及 GetValueType 类型映射。 - 补充 API 文档、导航和单元测试,更正 GetAttrValue 文档中的库名为 libgraph.so。 调用方无需包含内部 NamedAttrs 定义,子属性通过已有 GetAttrValue 接口读取具体类型。本次不增加具体类型重载或集合写入接口。 ## 变更类型 - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 关联的Issue ## 如何测试 1. 单独编译属性实现和测试文件,链接独立属性测试程序,运行 UtestGeAttrValue.*,46 个用例全部通过。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 See merge request: cann/ge!5548 | 3 天前 | |
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 | 4 个月前 | |
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 | 4 个月前 | |
feat: 融合Pass注册支持声明默认开关状态(PassSwitch) Co-authored-by: qq_45842700<caodazhou@huawei.com> # message auto-generated for no-merge-commit merge: !4383 merge feat/fusion-pass-default-switch into develop feat: 融合Pass注册支持声明默认开关状态(PassSwitch) Created-by: Dazhou_Cao Commit-by: qq_45842700 Merged-by: cann-robot Description: ## 描述 将融合Pass开关机制中硬编码的 return true 替换为注册时声明的 default_switch 值,作为四层开关优先级的最低层(第四层)。开发者可通过 REG_FUSION_PASS/REG_DECOMPOSE_PASS/REGISTER_CUSTOM_PASS 的变参宏声明 PassSwitch::kOff,使有精度风险或性能回退的pass默认关闭,仅当用户显式配置开启时才执行。 ### 背景与动机 GE 融合Pass原有三层运行时开关机制(graph option > JSON精确匹配 > JSON ALL通配 > **硬编码 return true**)。“默认true”是硬编码的,pass注册时无法声明自己的默认关闭状态。部分pass在特定条件下存在精度风险或性能回退,需要在注册时声明默认关闭,当前只能在pass内部 MeetRequirements 中做条件判断规避,不够直观,也无法在pass初始化阶段就跳过实例创建。 ### 变更内容 - 新增 PassSwitch 枚举(kOn=0, kOff=1),定义于 register_custom_pass.h - FusionPassRegistrationData / PassRegistrationData 新增 DefaultSwitch / GetDefaultSwitch 方法 - 三个注册宏采用变参宏重载:1参兼容(不调用 DefaultSwitch),2参带 switch - IsPassEnable 提取为 PassOptionUtils::IsPassEnable 公共方法,末尾 return true 改为 return default_switch == kOn - CustomPassHelper::Run 新增带 switch map 的重载 - Python Pass 桥接时隐式获得 kOn 默认值,行为不变 ### 兼容性 - **源码兼容**:变参宏分发,旧1参调用无需修改 - **ABI兼容**:PIMPL模式,新增非虚方法不影响布局 - **运行时兼容**:1参宏不调用 DefaultSwitch,旧GE运行时dlopen不受影响 ## 变更类型 - [x] ✨ 新功能 ## 如何测试 1. 编译 ge_compiler 包,验证编译通过 2. 运行 ut_fusion_pass_executor_utest 中新增的9个UT用例 3. 验证场景:kOff+无配置->跳过、kOff+option on->执行、kOff+JSON精确on->执行、kOff+JSON ALL on->执行、不传switch->默认执行 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签 - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定 ## 其他信息 四层开关优先级: 1. graph option (--optimization_switch) 最高,用户运行时覆盖 2. JSON 精确匹配 (fusion_switch.cfg) 用户/产品配置 3. JSON ALL 通配 一键开关 4. 注册默认值 (DefaultSwitch) 最低,开发者声明 ← 新增 See merge request: cann/ge!4383 | 1 个月前 | |
【PR】:ge一月份需求合入(包含整改dflow ST、自定义算子执行Context等) Co-authored-by: jikai-tyler<jikai5@huawei.com> # message auto-generated for no-merge-commit merge: !223 merge master into master 【PR】:ge一月份需求合入(包含整改dflow ST、自定义算子执行Context等) Created-by: jikai-tyler Commit-by: jikai-tyler Merged-by: cann-robot Description: # Pull Request ## 描述 ge一月份需求合入: 1、llt测试用例相关重复stub文件清理 2、Triton入图parser解析dlopen的handle关闭 - Triton入图parser解析dlopen的handle关闭 - 补充tensorflow 中其他的入参类型 - 优化parser 解析的的代码 3、UserGraphsManager suppport gert::Tensor - UserGraphsManager及JitExecutor等RunGraphAsync入参由ge::Tensor改为gert::Tensor - 老的兼容接口Session::RunGraph/RunGraphAsync在ge_api.cc 将ge::Tensor转换为gert::Tensor,然后调用InnerSession的接口。 4、整改dflow ST中的HELPER_RES_FILE_PATH - HELPER_RES_FILE_PATH配置文件已经废弃,需要删除并整改用例使用RESOURCE_CONFIG_PATH。 - rtGetIsHeterogenous接口已经废弃,需要删除并整改用例使用RESOURCE_CONFIG_PATH环境变量。 5、注册ge错误码 - 从error_code.json文件中拆分出GE错误码,通过ErrorManager模块的对外接口REG_FORMAT_ERROR_MSG宏完成GE错误码的注册 6、使能acl目录覆盖率拦截项 7、triton入图parser解析优化 8、告警规则处理 9、refactor parser/common/tuple.h 10、fix UserGraphControl SetCompiledFlag/SetCompiledFlag 11、修复Sample问题 - Include stdint and stddef for base mdl - move CheckRunGraphMode to ge_api_v2.cc 12、自定义算子执行Context 13、fix AllRealInputsAreTheSameOutAnchor error log issue - 在Session::AddGraph时会造一个UserGraphControl实例。因此在UserGraphControl中增加compiled_flag 14、bugfix:handling excessively long name - 避免因字符串过长导致二进制匹配耗尽资源而coredump,裁剪name,只保留最开始的128字符 15、acl code check告警处理 16、modify 3rd compile para 17、修改自定义ES_API Sample问题 && README.md 18、Refined inner session to no longer retrieve GraphNode or GraphOptions via graph_id from graph_manager. 19、ES关键类PIMPL实现 && 修改命名空间 - EsCGraphBuilder, CompliantNodeBuilder, EsCTensorHolder改为PIMPL实现 - 修改AddEdgeAndUpdatePeerDesc和CompliantNodeBuilder命名空间至ge::es 20、手动实现log功能, 实现debug_print函数来定位 ## 变更类型 请选择本次引入的变更类型: <!-- [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!223 | 8 个月前 |