文件最后提交记录最后更新时间
feat: 支持常量折叠 V2 Host CPU 与 AICPU 路由能力 Co-authored-by: pan-tong<pantong@huawei.com> # message auto-generated for no-merge-commit merge: !1824 merge master into master feat: 支持常量折叠 V2 Host CPU 与 AICPU 路由能力 Created-by: pan-tong Commit-by: pan-tong Merged-by: cann-robot Description: # Pull Request ## 描述 本 PR 在 GE 仓打通常量折叠(Constant Folding)V2 端到端链路,包含 so 加载策略调整、V2 wrapper 与 per-handle 反向索引、LoadLib API 简化、配套 UT 与 stub 共 5 大块改动。 ### 1. so 加载策略:先 dlopen V1 静态注册、后 Initialize V2 覆盖(host_cpu_engine.cc/.hHostCpuEngine::Initialize 调整加载顺序,使同名 op_type 上"AICPU V2 后写覆盖 V1"的 last-write-wins 语义自然生效: | 顺序 | so | 动作 | 说明 | |------|----|------|------| | 1 | libconstant_folding_ops.so | 仅 dlopen | 该 so 无 Initialize 符号 | | 2 | libops_host_cpu.so | **仅 dlopen,推迟 Initialize** | file-scope REGISTER_HOST_CPU_OP_BUILDER 注册的常量折叠算子先入册 | | 3 | libaicpu_const_folding.so | dlopen + Initialize | 内部走 InitCpuConstantFoldingNew,对同名 op_type 通过 create_fns_[op_type] = create_fn 覆盖前一步注册项 | | 4 (兜底) | libops_host_cpu.so | 仅当步骤 3 失败时调用其 Initialize | 注册 V1 wrapper,保证常量折叠链路可用 | 同时简化 LoadLib: - 旧 API:LoadLib(path, require_init, invoke_init),含语义模糊的"调了但不在乎结果"灰色路径。 - 新 API:LoadLib(path, invoke_init = false),调用方先决定是否需要 Initialize,一旦决定调用则缺失/失败统一回 INTERNAL_ERROR。 - 拆出私有 DlopenLib / InvokeLibInitialize,便于"先 dlopen 推迟 Initialize、必要时再回头 Initialize"的场景复用。 ### 2. V2 wrapper(aicpu_const_folding/host_cpu_kernel_wrapper.{cpp,h},新增) 新增 ge::HostCpuKernelWrapperOpV2 : public HostCpuOpCompute 通过 per-handle binding 调用 opbase 暴露的 V2 接口;并以 REGISTER_HOST_CPU_OP_BUILDER("HostCpuKernelWrapperOpV2", ...) 完成静态注册。 ### 3. V2 binding 与反向索引(aicpu_const_folding/folding.{cc,h}) - 每个 ops.so 一份 V2ModuleBinding,dlsym opbase 暴露的 C ABI 裸名符号 GetAllRegisteredOpTypesV2 / IsRegisteredV2 / RunCpuKernelV2。 - Initialize 期遍历 GetAllRegisteredOpTypesV2() 建立 op_type → V2ModuleBinding * 反向索引,运行期 O(1) 命中正确的 so。 - InitCpuConstantFoldingNew 中按 V2 表注册 wrapper 工厂 []{ return new HostCpuKernelWrapperOpV2(); },与 V1 路径完全对称。 - IsConstantFoldingSo 排除 libconstant_folding_ops.so,避免该 so 被重复扫描。 ### 4. 单测与 stub - tests/engines/cpueng/stub/aicpu/aicpu_stub.cpp:补齐 V2 符号 stub,供 UT 链接。 - tests/engines/cpueng/ut/cpu_engine/folding_ut.cpp:新增 V2 注册命中、V2 未命中回退 V1、IsConstantFoldingSo 排除规则等用例。 - tests/ge/ut/ge/common/host_cpu_engine_unittest.cc:新增 LoadLib_SkipInvokeInit,覆盖 invoke_init=false 不进入 dlsym 的分支。 ## 变更类型 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue 关联 Issue #383 ## 如何测试 ### 1. 编译 ```bash cd ge_1030/cmake-build-gcov make ge_common cpu_engine_utest -j8 ``` 预期:ge_commoncpu_engine_utest 均编译通过。 ### 2. UT 用例 ```bash # AICPU 常量折叠主用例 ./tests/engines/cpueng/ut/cpu_engine_utest \ --gtest_filter='AicpuConstFoldingTest.*' ``` 预期:9/9 PASSED。 ```bash # HostCpuEngine LoadLib 分支 ./tests/ge/ut/ge/multiparts/ut_libge_multiparts_utest \ --gtest_filter='UTEST_host_cpu_engine.LoadLib*' ``` 预期:包含新增 LoadLib_SkipInvokeInit 在内全部通过,覆盖 invoke_init=false 跳过 dlsym 分支。 ### 3. 端到端 联合 cann/runtime#1522、cann/ge#1824 进行常量折叠 V2 端到端验证: ![image.png](https://raw.gitcode.com/user-images/assets/8824148/4e2f15bd-edcf-4ec9-aa57-5067f807cb3c/image.png 'image.png') ![image.png](https://raw.gitcode.com/user-images/assets/8824148/07672b13-7cf9-4ac2-8abd-c9925056e12c/image.png 'image.png') ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md) ## 其他信息 - 与 cann/runtime#1522(V2 注册/查询 C ABI)、cann/opbase#299(V2 优先调度)配套使用。各仓可以独立合入,已处理兼容性。 - 改动严格保持 V1 路径行为不变,V2 缺失场景自动回退到现有 V1 链路。 See merge request: cann/ge!182416 天前
Initial commit 5 个月前
Initial commit 5 个月前
Initial commit 5 个月前
Initial commit 5 个月前
refactor: 替换rt内存接口为aclrt接口 Co-authored-by: tangqunzhang<tangqunzhang@huawei.com> # message auto-generated for no-merge-commit merge: !2169 merge develop into develop refactor: 替换rt内存接口为aclrt接口 Created-by: tangqunzhang Commit-by: tangqunzhang Merged-by: cann-robot Description: # Pull Request ## 描述 将 GE 项目中的 rt 内存分配接口替换为新的 aclrt 接口,同时保留 moduleId 特性传递。 ### 主要变更 #### 1. 新增辅助模块 - 新增 base/common/aclrt_malloc_helper.h 封装辅助函数声明 - 头文件不依赖 runtime/rt.h,使用 using rtMemType_t = uint32_t; 自行定义类型别名 - 新增 base/common/aclrt_malloc_helper.cc 实现所有辅助函数 - ge::AclrtMalloc() - 替代 rtMalloc,表驱动分发,自动传递 moduleId - ge::AclrtMallocHost() - 替代 rtMallocHost,自动传递 moduleId - ge::AclrtMallocForTaskScheduler() - 替代 rtMallocForTaskScheduler - ge::AclrtMallocHostSharedMemory() - 替代 rtMallocHostSharedMemory,基于 POSIX shm_open/mmap/aclrtHostRegister - ge::AclrtFreeHostSharedMemory() - 替代 rtFreeHostSharedMemory - ge::AdviseAndTouchHugePages() - 大页内存预触及物理分配 - 删除 runtime/v1/common/aclrt_malloc_helper.h(旧款 inline 版本,被新模块替代) - 删除 rtMemAdvise的调用 #### 2. 内存类型映射表 | rtMemType_t | aclrtMemMallocPolicy | |-------------|----------------------| | RT_MEMORY_TS | ACL_MEM_MALLOC_HUGE_FIRST | | RT_MEMORY_HOST | ACL_MEM_TYPE_HIGH_BAND_WIDTH (走 HandleHost) | | RT_MEMORY_HBM / DEFAULT / RDMA_HBM / SPM | ACL_MEM_TYPE_HIGH_BAND_WIDTH | | RT_MEMORY_P2P_HBM | ACL_MEM_MALLOC_HUGE_FIRST_P2P | | RT_MEMORY_DDR / DDR_NC | ACL_MEM_TYPE_LOW_BAND_WIDTH | | RT_MEMORY_P2P_DDR | ACL_MEM_MALLOC_HUGE_FIRST_P2P | ### 技术细节 #### moduleId 保留 ```cpp // 旧接口 rtMalloc(&ptr, size, RT_MEMORY_HBM, GE_MODULE_NAME_U16); // 新接口 ge::AclrtMalloc(&ptr, size, RT_MEMORY_HBM, GE_MODULE_NAME_U16); ``` #### Host Shared Memory ```cpp // 旧接口 rtMallocHostSharedMemory(name, size, &fd, &host_ptr, &dev_ptr); // 新接口 ge::AclrtMallocHostSharedMemory(name, size, &fd, &host_ptr, &dev_ptr); ``` ## 变更类型 - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) ## 如何测试 1. 编译 GE 项目:bash build.sh 2. 运行单元测试验证内存分配功能正常 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我在标题中使用了合适的类型标签 - [x] 编译 ge_common_base 目标通过 See merge request: cann/ge!216925 天前
【fix】: Unified compilation options Co-authored-by: tangqunzhang<tangqunzhang@huawei.com> # message auto-generated for no-merge-commit merge: !1108 merge develop into develop 【fix】: Unified compilation options Created-by: tangqunzhang Commit-by: tangqunzhang Merged-by: cann-robot Description: # Pull Request ## 描述 编译选项整改,构建工程公共编译选项统一通过intf_pub设置,测试工程编译选项统一通过intf_llt_pub设置。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1.编译通过,UT,ST运行正确 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!11082 个月前
Initial commit 5 个月前
[chore] support_Q2_building_optimization: - Remove useless 'cmake install'. - Replace 'OPTIONAL' with ' ${INSTALL_OPTIONAL}' in cmake. - Support 'cmake install .. --component <BUILD_COMPONENT>' Co-authored-by: zhuhaoran5<zhuhaoran5@huawei.com> # message auto-generated for no-merge-commit merge: !1874 merge support_Q2_building_optimization into develop 【chore】: 支持Q2工程优化 Created-by: zhuhaoran5 Commit-by: zhuhaoran5 Merged-by: cann-robot Description: # Pull Request ## 描述 支持Q2组件工程优化: 1. 支持 cmake install .. --component <BUILD_COMPONENT> 2. 蓝区构建移除 cmake OPTIONAL(用INSTALL_OPTIONAL替代OPTIONAL,蓝区构建时INSTALL_OPTIONAL为空) 3. 移除一些无用的 'cmake install' 逻辑 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [x] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 按照 README 部署构建环境 2. 执行所有构建场景的脚本命令,能执行成功并且产物包内容与先前一致 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!18741 个月前
Initial commit 5 个月前
Initial commit 5 个月前
【feat】解决头文件循环依赖以及shape内存分配 Co-authored-by: @ding-jing12<dingjing19@huawei.com> # message auto-generated for no-merge-commit merge: !178 merge aicpu_code into master 【feat】解决头文件循环依赖以及shape内存分配 Created-by: Ding_Jing Commit-by: @ding-jing12 Merged-by: cann-robot Description: # Pull Request ## 描述 请清晰准确地描述本次 Pull Request 的意图和变更内容。 Resolve the header file circular dependency and memory allocation ## 变更类型 请选择本次引入的变更类型: <!-- [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!1784 个月前
【feat】解决头文件循环依赖以及shape内存分配 Co-authored-by: @ding-jing12<dingjing19@huawei.com> # message auto-generated for no-merge-commit merge: !178 merge aicpu_code into master 【feat】解决头文件循环依赖以及shape内存分配 Created-by: Ding_Jing Commit-by: @ding-jing12 Merged-by: cann-robot Description: # Pull Request ## 描述 请清晰准确地描述本次 Pull Request 的意图和变更内容。 Resolve the header file circular dependency and memory allocation ## 变更类型 请选择本次引入的变更类型: <!-- [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!1784 个月前
Initial commit 5 个月前
Initial commit 5 个月前
【reactor】: 将register.h改名为graph_register.h,解决文件重名的问题 Co-authored-by: wanghuajie<wanghuajie1@huawei.com> # message auto-generated for no-merge-commit merge: !1805 merge develop_remove_compatibility_for_register_h into develop 【reactor】: 将register.h改名为graph_register.h,解决文件重名的问题 Created-by: wanghuajie Commit-by: wanghuajie Merged-by: cann-robot Description: # Pull Request ## 描述 将register.h改名为graph_register.h,解决文件重名的问题 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 安装Readme构建ge代码 2. 执行UT和ST,检查是否有失败用例 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!18051 个月前