| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
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 | 1 个月前 | |
【PR】: Host tensor value symbolize Co-authored-by: chengyutao3<chengyutao3@huawei.com> # message auto-generated for no-merge-commit merge: !4443 merge develop into develop 【PR】: Host tensor value symbolize Created-by: chengyutao3 Commit-by: chengyutao3 Merged-by: cann-robot Description: # Pull Request ## 描述 本次提交为 host tensor(host 侧输入张量)新增**值符号化(value symbolization)**能力,使依赖输入 tensor 具体数值(如 Reshape 的 shape 输入)进行符号推导的场景不再需要把输入搬到 device,从而提升 JIT 执行与符号推导的准确性和性能。 核心变更包括: 1. **新增 graph 级 option ge.inputHintValue**:支持通过 input_index:[v0,v1,...] 的形式为指定输入指定符号化提示值(与已有 ge.inputHintShape 对齐),并在 option_supportion_checker 中将该 option 登记为受支持项。 2. **值符号化实现**(symbolic_shape_symbolizer.cc): - 新增 SymbolizeInputValue,优先使用真实 host 数据(支持 INT32/INT64/UINT32/UINT64,元素数上限 200)生成逐元素符号;无真实数据时回退到 ge.inputHintValue 配置值。 - 新增 InputValueElementSource,生成可在运行时读取 GetGraphInputTensor(idx) 对应元素数值的 source 串。 3. **值依赖输入识别**(symbolic_infer_util.cc):新增 IsValueDependentDataNode / GetValueDependentInputIdxs,通过算子的 IsInputDataDependency 与 op_infer_depends 判定哪些图输入是"值依赖"的,结果缓存到图 attr 中。 4. **JIT 执行路径适配**(jit_executor.cc): - CopyHostInputsToDevice 支持 keep_on_host_idxs,值依赖的 host 输入不再拷贝到 device。 - BuildCompileInputs 对已在 host 的输入跳过重复拷贝。 - MarkHostTensorOnDataNodes 改为直接基于 ComputeGraph 处理。 5. **option 解析重构**(option_utils.cc/h):将 ge.inputHintShape 的解析逻辑抽象为通用模板 ParseIndexedListOption,并复用其实现新增 ParseHintInputValue。 6. **测试补充与适配**:新增 UT symbolic_value_inference_unittest.cc、ST test_symbolize_value_and_infer.cc 的 hint value/真实数据用例;JIT 相关用例将 shape 输入由 INT32 调整为 INT64 并置为 host placement;user_graph_manager 用例按"值符号化后 reshape 不再切分执行点"的预期更新。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 运行符号值推导相关用例:tests/ge/ut/ge/graph/optimize/symbolic/symbolic_value_inference_unittest.cc(compile_path_reshape_with_hint_value、execute_path_reshape_with_real_data)。 2. 运行 autofuse ST:tests/ge/st/testcase/autofuse/test_symbolize_value_and_infer.cc(reshape_symbolize_infer_with_input_hint_value、reshape_symbolize_infer_with_real_data)。 3. 运行 JIT 执行相关用例:jit_executor_unittest.cc、user_graph_manager_unittest.cc(验证值符号化后图不再切分、host 输入不被重复拷贝)。 4. 构造含 Reshape 且 shape 输入为 host tensor 的模型,配置 ge.inputHintValue(如 1:[5, 400]),确认符号化推导结果符合预期,且无 device 拷贝开销。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [ ] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [ ] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 - 值符号化优先级:真实 host data > ge.inputHintValue 配置值;当已存在符号化 value 时跳过。 - 阈值 kMaxSymbolizeValueElemNum = 200 与 symbolic_shape_inference.cc 中的 kMaxSymbolicValueSize 保持一致,仅对 shape/索引类小 tensor 进行值符号化。 - 值依赖输入识别结果以图 attr _ge_value_dependent_idxs 缓存,避免重复计算。 See merge request: cann/ge!4443 | 4 小时前 | |
feat: host cpu算子支持codegen融合 Co-authored-by: @SeasonChu<zhuxincheng2@huawei.com> # message auto-generated for no-merge-commit merge: !4246 merge hostcpu-private-cabi-poc into develop feat: host cpu算子支持codegen融合 Created-by: SeasonChu Commit-by: @SeasonChu Merged-by: cann-robot Description: ## 变更目的 在动态 Shape/小 Shape 场景下,将满足条件的 HostCPU 算子链融合为 FusedHostCpu,通过 JIT 生成融合编排 SO,并由 Runtime2 在 Host 上直接执行,减少逐算子调度和参数构造开销,打通 Compiler、HostCpuEngine、CPU Engine 与 Runtime2 的端到端融合链路。 ## 主要变更 ### 1. 融合区域识别与图改写 - 在最终 HostCPU 引擎归属刷新后执行 HostCpuFusionPass,递归处理根图及其子图。 - 仅选择 HostCPU engine/kernel store、SmallShapeHostcpu、输入输出合法且存在 CpuKernel 实现的节点作为候选。 - 基于候选数据边构建连通分量,支持汇聚 DAG 保持和非汇聚多 sink 分支的 Clone-and-Split。 - 先完成所有区域的代码生成与编译,再统一提交图修改;失败时保留原图,并同步维护 atomic/composite engine map。 - 将融合节点所需的注册名、SO key、原始节点信息和输出映射写入 FusedHostCpu 属性。 ### 2. HostCPU Fusion JIT Codegen - 根据融合区域生成 HostCPU 编排源码,保持外部输入、外部输出及内部节点的拓扑和绑定关系。 - 支持计算相关属性序列化、内部临时 Tensor 管理和多输出映射。 - 在内存中编译生成 SO,并校验 ELF 后再进入图提交阶段。 - 使用确定性 chain id/register name,将 SO 数据存储在根图属性中,避免节点迁移到子图后无法定位产物。 ### 3. HostCpuEngine 与 CPU Engine - 增加 IsCpuConstantFoldingFusedOpSupported 查询,仅允许已注册的 V1/V2 CpuKernel 进入融合。 - 增加融合链 plan 的创建、销毁、执行和 Tensor binding/rebind 能力。 - 对运行时地址、Shape、dtype 和 format 变化进行增量重绑,复用已创建的内部 CpuKernel plan。 - 统一 JIT SO 与 Runtime2 之间的 private C ABI,提供注册校验及 create/destroy/run 入口。 ### 4. Runtime2 加载与直接执行 - 从根图读取融合 SO,完成 ELF 校验、动态加载、注册校验和 private entry 解析。 - 将 FusedHostCpu lowering 为专用 FusedHostCpuCompute ExecuteGraph kernel。 - 在执行时构造 Host Tensor binding,调用融合入口完成 Host 侧直调,并回传输出地址和 Shape。 - 在模型 DeInit 阶段释放 kernel state 和模型引用,保留进程级安全缓存,避免注册回调悬空。 ## 变更类型 - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新 - [ ] ♻️ 重构 - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 如何测试 算子满足host执行,且hostcpu算子节点数大于等于2 ## 测试结果 连续的hostcpu算子融合为一个fused算子 ## 关联 Issue 无。 See merge request: cann/ge!4246 | 4 小时前 | |
【PR】: Host tensor value symbolize Co-authored-by: chengyutao3<chengyutao3@huawei.com> # message auto-generated for no-merge-commit merge: !4443 merge develop into develop 【PR】: Host tensor value symbolize Created-by: chengyutao3 Commit-by: chengyutao3 Merged-by: cann-robot Description: # Pull Request ## 描述 本次提交为 host tensor(host 侧输入张量)新增**值符号化(value symbolization)**能力,使依赖输入 tensor 具体数值(如 Reshape 的 shape 输入)进行符号推导的场景不再需要把输入搬到 device,从而提升 JIT 执行与符号推导的准确性和性能。 核心变更包括: 1. **新增 graph 级 option ge.inputHintValue**:支持通过 input_index:[v0,v1,...] 的形式为指定输入指定符号化提示值(与已有 ge.inputHintShape 对齐),并在 option_supportion_checker 中将该 option 登记为受支持项。 2. **值符号化实现**(symbolic_shape_symbolizer.cc): - 新增 SymbolizeInputValue,优先使用真实 host 数据(支持 INT32/INT64/UINT32/UINT64,元素数上限 200)生成逐元素符号;无真实数据时回退到 ge.inputHintValue 配置值。 - 新增 InputValueElementSource,生成可在运行时读取 GetGraphInputTensor(idx) 对应元素数值的 source 串。 3. **值依赖输入识别**(symbolic_infer_util.cc):新增 IsValueDependentDataNode / GetValueDependentInputIdxs,通过算子的 IsInputDataDependency 与 op_infer_depends 判定哪些图输入是"值依赖"的,结果缓存到图 attr 中。 4. **JIT 执行路径适配**(jit_executor.cc): - CopyHostInputsToDevice 支持 keep_on_host_idxs,值依赖的 host 输入不再拷贝到 device。 - BuildCompileInputs 对已在 host 的输入跳过重复拷贝。 - MarkHostTensorOnDataNodes 改为直接基于 ComputeGraph 处理。 5. **option 解析重构**(option_utils.cc/h):将 ge.inputHintShape 的解析逻辑抽象为通用模板 ParseIndexedListOption,并复用其实现新增 ParseHintInputValue。 6. **测试补充与适配**:新增 UT symbolic_value_inference_unittest.cc、ST test_symbolize_value_and_infer.cc 的 hint value/真实数据用例;JIT 相关用例将 shape 输入由 INT32 调整为 INT64 并置为 host placement;user_graph_manager 用例按"值符号化后 reshape 不再切分执行点"的预期更新。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 运行符号值推导相关用例:tests/ge/ut/ge/graph/optimize/symbolic/symbolic_value_inference_unittest.cc(compile_path_reshape_with_hint_value、execute_path_reshape_with_real_data)。 2. 运行 autofuse ST:tests/ge/st/testcase/autofuse/test_symbolize_value_and_infer.cc(reshape_symbolize_infer_with_input_hint_value、reshape_symbolize_infer_with_real_data)。 3. 运行 JIT 执行相关用例:jit_executor_unittest.cc、user_graph_manager_unittest.cc(验证值符号化后图不再切分、host 输入不被重复拷贝)。 4. 构造含 Reshape 且 shape 输入为 host tensor 的模型,配置 ge.inputHintValue(如 1:[5, 400]),确认符号化推导结果符合预期,且无 device 拷贝开销。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [ ] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [ ] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 - 值符号化优先级:真实 host data > ge.inputHintValue 配置值;当已存在符号化 value 时跳过。 - 阈值 kMaxSymbolizeValueElemNum = 200 与 symbolic_shape_inference.cc 中的 kMaxSymbolicValueSize 保持一致,仅对 shape/索引类小 tensor 进行值符号化。 - 值依赖输入识别结果以图 attr _ge_value_dependent_idxs 缓存,避免重复计算。 See merge request: cann/ge!4443 | 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 | 1 个月前 | |
【PR】: 内部头文件重名整改 -- 同名不同内容 Co-authored-by: jikai-tyler<jikai5@huawei.com> # message auto-generated for no-merge-commit merge: !3497 merge ge_header_internal_2 into develop 【PR】: 内部头文件重名整改 -- 同名不同内容 Created-by: jikai-tyler Commit-by: jikai-tyler Merged-by: cann-robot Description: # Pull Request ## 描述 | 原文件路径 | 原名 | 修改后名称 | |-----------|------|-----------| | base/common/helper/mobile/ | model.h | mobile_model.h | | base/common/math/ | math_util.h | ge_math_util.h | | compiler/engines/cpu_engine/common/util/ | log.h | aicpu_log.h | | compiler/engines/cpu_engine/inc/ | graph_pass.h | cpu_engine_graph_pass.h | | compiler/engines/cpu_engine/inc/ | pass.h | cpu_engine_pass.h | | compiler/engines/cpu_engine/tf_engine/tf_optimizer/ | tensorflow_util.h | tf_optimizer_tensorflow_util.h | | compiler/engines/hccl_engine/hcom_graph_adaptor/ge_plugin/calculation_tool/ | model.h | hcom_model.h | | compiler/engines/hccl_engine/hcom_graph_adaptor/ge_plugin/ | plugin_manager.h | hcom_plugin_manager.h | | compiler/engines/local_engine/ops_kernel_store/op/ | op.h | ge_local_op.h | | compiler/engines/local_engine/ops_kernel_store/op/ | op_factory.h | ge_local_op_factory.h | | compiler/engines/manager/engine/ | engine_manager.h | dnn_engine_manager.h | | compiler/engines/manager/opskernel_manager/ | ops_kernel_manager.h | dnn_ops_kernel_manager.h | | compiler/engines/nn_engine/inc/common/ | math_util.h | nn_engine_math_util.h | | compiler/engines/nn_engine/optimizer/ops_kernel_builder/task_builder/ | dsa_task_builder.h | ops_kernel_dsa_task_builder.h | | compiler/engines/nn_engine/utils/common/ | plugin_manager.h | nn_engine_plugin_manager.h | | compiler/engines/rts_engine/common/util/ | log.h | rts_log.h | | compiler/graph/build/stream/ | stream_allocator.h | graph_stream_allocator.h | | compiler/graph/common/compress/inc/ | log.h | compress_log.h | | compiler/graph/eager_style_graph_builder/es_generator/ | utils.h | es_generator_utils.h | | compiler/graph/passes/ | pass.h | compiler_pass.h | | compiler/opcompiler/op_compile_adapter/source/compile/ | fusion_manager.h | opcompiler_fusion_manager.h | | dflow/llm_datadist/v1/common/ | cache_manager.h | llm_datadist_cache_manager.h | | dflow/llm_datadist/v1/common/ | llm_common.h | llm_datadist_common.h | | dflow/llm_datadist/v1/common/ | mem_utils.h | llm_datadist_mem_utils.h | | dflow/pydflow/wrapper/ | utils.h | pydflow_utils.h | | dflow/udf/execute/ | memory_statistic_manager.h | udf_memory_statistic_manager.h | | dflow/udf/flow_func/ | flow_model.h | udf_flow_model.h | | inc/framework/common/ | op_types.h | framework_op_types.h | | inc/graph_metadef/common/ge_common/debug/ | log.h | ge_common_log.h | | inc/graph_metadef/graph/utils/ | mem_utils.h | graph_mem_utils.h | | inc/graph_metadef/register/graph_optimizer/graph_fusion/ | connection_matrix.h | fusion_connection_matrix.h | | inc/graph_metadef/register/graph_optimizer/graph_fusion/ | graph_pass.h | graph_fusion_graph_pass.h | | inc/graph_metadef/register/graph_optimizer/graph_fusion/ | pass.h | graph_fusion_pass.h | | parser/parser/common/ | graph_pass.h | parser_graph_pass.h | | parser/parser/common/ | pass.h | parser_pass.h | | runtime/v1/graph/load/model_manager/task_info/ffts_plus/ | ffts_plus_proto_transfer.h | v1_ffts_plus_proto_transfer.h | | runtime/v1/graph/manager/ | host_mem_allocator.h | v1_host_mem_allocator.h | | runtime/v1/hybrid/model/infer/ | shape_utils.h | hybrid_shape_utils.h | | runtime/v2/core/utils/ | executor_utils.h | rt2_executor_utils.h | | runtime/v2/core/utils/ | tensor_utils.h | rt2_tensor_utils.h | | runtime/v2/utils/ | utils.h | rt2_utils.h | ## 变更类型 请选择本次引入的变更类型: <!-- [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!3497 | 1 个月前 | |
bugfix: 修正多仓联编时编译告警 Co-authored-by: Feiteng Zheng<zhengfeiteng1@h-partners.com> # message auto-generated for no-merge-commit merge: !4277 merge 20260805-fix-format-security into develop bugfix: 修正多仓联编时编译告警 Created-by: zhengfeiteng Commit-by: Feiteng Zheng Merged-by: cann-robot Description: # Pull Request ## 描述 修正多仓联编时编译告警。 plaintext In file included from /home/jenkins/jenkins/workspace/cann-manifest/ge/compiler/opcompiler/op_compile_adapter/source/inc/te_fusion_log.h:21, from /home/jenkins/jenkins/workspace/cann-manifest/ge/compiler/opcompiler/op_compile_adapter/source/common/common_utils.h:18, from /home/jenkins/jenkins/workspace/cann-manifest/ge/compiler/opcompiler/op_compile_adapter/source/common/common_utils.cc:11: /home/jenkins/jenkins/workspace/cann-manifest/ge/compiler/opcompiler/op_compile_adapter/source/common/common_utils.cc: In function ‘void te::fusion::TeInnerErrMessageReport(conststd::string&, const std::string&)’: /home/jenkins/jenkins/workspace/cann-manifest/runtime/include/dfx/base/err_msg.h:67:43: error: format not a string literal and no format arguments[-Werror=format-security] 67 | (void)error_message::ReportInnerErrMsg(__FILE__, __FUNCTION__, __LINE__, (error_code), (format), ##__VA_ARGS__) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/jenkins/jenkins/workspace/cann-manifest/ge/compiler/opcompiler/op_compile_adapter/source/common/common_utils.cc:374:3: note: in expansion of macro ‘REPORT_INNER_ERR_MSG’ 374 | REPORT_INNER_ERR_MSG(errorCode.c_str(), errorMsg.c_str()); | ^~~~~~~~~~~~~~~~~~~~ cc1plus: all warnings being treated as errors ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1.验证修改前后ge-compiler二进制。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!4277 | 13 天前 | |
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 | 1 个月前 | |
feat: host cpu算子支持codegen融合 Co-authored-by: @SeasonChu<zhuxincheng2@huawei.com> # message auto-generated for no-merge-commit merge: !4246 merge hostcpu-private-cabi-poc into develop feat: host cpu算子支持codegen融合 Created-by: SeasonChu Commit-by: @SeasonChu Merged-by: cann-robot Description: ## 变更目的 在动态 Shape/小 Shape 场景下,将满足条件的 HostCPU 算子链融合为 FusedHostCpu,通过 JIT 生成融合编排 SO,并由 Runtime2 在 Host 上直接执行,减少逐算子调度和参数构造开销,打通 Compiler、HostCpuEngine、CPU Engine 与 Runtime2 的端到端融合链路。 ## 主要变更 ### 1. 融合区域识别与图改写 - 在最终 HostCPU 引擎归属刷新后执行 HostCpuFusionPass,递归处理根图及其子图。 - 仅选择 HostCPU engine/kernel store、SmallShapeHostcpu、输入输出合法且存在 CpuKernel 实现的节点作为候选。 - 基于候选数据边构建连通分量,支持汇聚 DAG 保持和非汇聚多 sink 分支的 Clone-and-Split。 - 先完成所有区域的代码生成与编译,再统一提交图修改;失败时保留原图,并同步维护 atomic/composite engine map。 - 将融合节点所需的注册名、SO key、原始节点信息和输出映射写入 FusedHostCpu 属性。 ### 2. HostCPU Fusion JIT Codegen - 根据融合区域生成 HostCPU 编排源码,保持外部输入、外部输出及内部节点的拓扑和绑定关系。 - 支持计算相关属性序列化、内部临时 Tensor 管理和多输出映射。 - 在内存中编译生成 SO,并校验 ELF 后再进入图提交阶段。 - 使用确定性 chain id/register name,将 SO 数据存储在根图属性中,避免节点迁移到子图后无法定位产物。 ### 3. HostCpuEngine 与 CPU Engine - 增加 IsCpuConstantFoldingFusedOpSupported 查询,仅允许已注册的 V1/V2 CpuKernel 进入融合。 - 增加融合链 plan 的创建、销毁、执行和 Tensor binding/rebind 能力。 - 对运行时地址、Shape、dtype 和 format 变化进行增量重绑,复用已创建的内部 CpuKernel plan。 - 统一 JIT SO 与 Runtime2 之间的 private C ABI,提供注册校验及 create/destroy/run 入口。 ### 4. Runtime2 加载与直接执行 - 从根图读取融合 SO,完成 ELF 校验、动态加载、注册校验和 private entry 解析。 - 将 FusedHostCpu lowering 为专用 FusedHostCpuCompute ExecuteGraph kernel。 - 在执行时构造 Host Tensor binding,调用融合入口完成 Host 侧直调,并回传输出地址和 Shape。 - 在模型 DeInit 阶段释放 kernel state 和模型引用,保留进程级安全缓存,避免注册回调悬空。 ## 变更类型 - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新 - [ ] ♻️ 重构 - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 如何测试 算子满足host执行,且hostcpu算子节点数大于等于2 ## 测试结果 连续的hostcpu算子融合为一个fused算子 ## 关联 Issue 无。 See merge request: cann/ge!4246 | 4 小时前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 个月前 | ||
| 4 小时前 | ||
| 4 小时前 | ||
| 4 小时前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 13 天前 | ||
| 1 个月前 | ||
| 4 小时前 |