| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
【PR】: [feat]DAG多流算法适配无权重节点 Co-authored-by: mahaosen<mahaosen@h-partners.com> # message auto-generated for no-merge-commit merge: !3698 merge nonweight into develop 【PR】: [feat]DAG多流算法适配无权重节点 Created-by: mahaosen Commit-by: mahaosen Merged-by: cann-robot Description: # Pull Request ## 描述 DAG多流算法适配无权重节点。 ## 变更类型 请选择本次引入的变更类型: <!-- [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!3698 | 3 个月前 | |
feat: 支持 DT_HIFLOAT4_SCALE 数据类型 Co-authored-by: shangdf<shangdongfang1@huawei.com> # message auto-generated for no-merge-commit merge: !4737 merge feature/hifloat4-scale-datatype into develop feat: 支持 DT_HIFLOAT4_SCALE 数据类型 Created-by: shangdf Commit-by: shangdf Merged-by: cann-robot Description: # Pull Request ## 描述 新增 DT_HIFLOAT4_SCALE(hifloat4 带缩放因子的 4bit 浮点)数据类型支持,与 metadef 仓 C_DT_HIFLOAT4_SCALE = 43 配套。GE 侧登记内容包括: - **proto 定义**:ge_ir.proto、dump_task.proto 的 DataType 枚举新增 DT_HIFLOAT4_SCALE = 42 - **atc/模型转换**:atc --output_type 与 netoutput 的输出类型映射新增 HIF4SCALE,option_utils 校验提示文案同步 - **单算子解析**:single_op_parser 的 kDataTypeDict 新增 hifloat4_scale 字符串映射 - **编译 pass**:cond_remove_pass、switch_dead_branch_elimination 的 1 字节判值分支、IsFloatType(atomic_memory_assigner.h)登记新类型 - **Host CPU 引擎**:PrepareOutputs 支持的数据类型集合登记 - **dump/序列化**:datatype_util dump 数据类型映射、ge_tensor/serialization_util 序列化双向映射、type_utils_inner 字符串映射补充 - **Python API**:pyge DataType 枚举新增 DT_HIFLOAT4_SCALE = 43,DT_MAX 适配为 44,中英文 API 文档与 UT 断言同步 - **说明**:constant_clip_pass 的 clip 上下限尚未适配 hif4_scale,与原方案一致保持现状并在函数处注释标记 ## 变更类型 - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 关联的Issue 无 ## 如何测试 1. 运行 pyge UT:tests/ge/ut/ge/graph/pyge_tests/types_test.py(含 DT_HIFLOAT4_SCALE=43、DT_MAX=44 断言) 2. atc 转换时指定 --output_type=HIF4SCALE 验证输出类型映射 3. 单算子 IR 传入 hifloat4_scale 数据类型字符串验证解析 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 依赖 metadef 仓头文件新增 C_DT_HIFLOAT4_SCALE = 43(metadef develop 已包含),GE 构建使用该发布包头文件,本仓不重复定义 C++ 枚举。原 diff 中 IsFloatType 位于 graph_mem_assigner.h,当前 develop 上该函数已迁移至 atomic_memory_assigner.h,本次修改跟随函数落位。 See merge request: cann/ge!4737 | 1 个月前 | |
feat:声明式自定义算子的辅流申请功能 Co-authored-by: Chang-an-HW<machangan@huawei.com> # message auto-generated for no-merge-commit merge: !4934 merge declarative-custom-op-attached-stream-pr into develop feat:声明式自定义算子的辅流申请功能 Created-by: Chang-an-HW Commit-by: Chang-an-HW Merged-by: cann-robot Description: # Pull Request ## 描述 为声明式自定义算子( AnnotatedArgsOp / DeclareLaunchArgs)新增**编译期辅流申请与任务依赖声明**能力,使算子可以在 DeclareLaunchArgs 回调内把多个 kernel launch 下发到不同逻辑流,并由 GE 自动完成流分配与事件同步插入。 **对外接口(gert::AnnotatedArgsContext,@since 9.3.0(2026-09))** - 新增 uint32_t RequestAttachedStream(const ge::AscendString &key):按模型级 key 申请逻辑辅流,相同 key 复用同一 ID;key 为空或申请失败返回 UINT32_MAX。 - 新增 graphStatus AddLaunchWithDependencies(launch_info, args, dependencies, dependency_num, token):以 AnnotatedLaunchToken 表达 launch 间前驱依赖,成功后输出本次 launch 的 token。 - AddLaunch 的 ABI 与行为保持不变(不产生 token,也不能作为依赖源)。 **graph_metadef 侧** - AnnotatedArgsHandler:LaunchRecord 增加 token 与依赖列表;新增 SetAttachedStreamRequestFunc / RequestAttachedStream / GetAttachedStreamIds;AddLaunchWithDependencies 校验 token 有效性(依赖必须指向更早 launch、不可重复、不可溢出)。 - stub_offline_launch_runtime.cc 同步补齐 stub 实现;stub_lowering 增加 runtime_headers、slog 链接。 **compiler 侧** - 新增 DeclarativeStreamRegistry:挂到 ComputeGraph ext attr(declarative_stream_registry),从当前逻辑流数之后按 key 去重分配辅流 ID,并做溢出保护。 - 新增 AnnotatedArgsTaskPlan 序列化/反序列化(带 version、长度与依赖边合法性校验):缓存属性由进程内 ext attr 改为可序列化的 _custom_annotated_args_task_plan_bytes,使计划在 ReGetTaskInfo / 二次生成场景下可无回调恢复;计划中新增 launch_stream_ids、dependencies、attached_stream_ids。 - ModelBuilder:PrepareDeclarativeAttachedStreamRegistry(AssignLogicalStreams 之后建注册表)、FinalizeDeclarativeAttachedStreams(把计划辅流写回 op_desc->SetAttachedStreamIds 并扩展 stream_num)、MaterializeAnnotatedArgsTaskDependencies。 - StreamAllocator:InsertAnnotatedArgsEventTasks 为跨流依赖插入 EVENT_RECORD/EVENT_WAIT 任务;ReconcileAnnotatedArgsEventTasks 在拆流后重映射 event id、剪除同流事件对,并回写 stream/event/notify 总数(RTS 与 GE 两条拆流路径均覆盖)。 - CustomOpsKernelBuilder:物化时按计划流 ID 下发任务(无依赖且无辅流的 legacy 计划仍刷新为节点当前主流,兼容跨流复用);CalcOpRunningParam 改为 DelAttr 清理序列化计划。 **约束校验** - 计划中至少存在一个主流 launch;辅流任务是否汇合回主流由算子自行保证。 - 依赖 token 必须指向更早的 launch,不可重复、不可自依赖。 - mobile OMC 单任务模式不支持依赖与辅流;端侧仍只允许一次 AddLaunch。 **文档**:新增 RequestAttachedStream.md、AddLaunchWithDependencies.md,更新 overview.md、README.md 目录、AddLaunch.md 与 DeclareLaunchArgs.md 约束描述。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue 无 ## 如何测试 描述测试此变更的步骤和前提条件: 1. 编译并运行 UT: - graph_metadef UT:AnnotatedArgsContextUT.AddLaunchWithDependenciesValidatesAndCopiesTokens - ge UT: - stream_allocator_unittest:DeclarativeStreamRegistryTest.*、AnnotatedArgsTaskPlanTest.*(序列化往返、跨流事件插入/重映射/同流剪枝)、ModelBuilderTest.FinalizeDeclarativeAttachedStreams* - custom_ops_kernel_info_store_unittest:计划无回调恢复、辅流不汇合主流、缺主流 launch 报错 - task_generator_unittest:GenerateTask_AnnotatedKernelRecordWait - custom_task_info_unittest:AnnotatedEventWaitUsesExistingWaitAndResetSemantics 2. 编译并运行 ST:graph_engine_test 中 DeclarativeCustomOpAttachedStreamSt.*(按 key 复用辅流 ID、回调缺失返回 UINT32_MAX)。 3. 手工验证:自定义算子在 DeclareLaunchArgs 中调用 RequestAttachedStream + AddLaunchWithDependencies 下发主流/辅流任务,出 OM 后确认 stream_num 扩展、辅流 launch 与 EVENT_RECORD/EVENT_WAIT 任务正确生成且执行结果正确。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 - PR 当前带 stat/needs-squash 标签,38 个 commit 中含多个 CI 规避/revert 提交,合入前需 squash。 - 标题 feat: 使用了全角冒号,建议改为半角 feat: 。 See merge request: cann/ge!4934 | 23 天前 | |
feat:声明式自定义算子的辅流申请功能 Co-authored-by: Chang-an-HW<machangan@huawei.com> # message auto-generated for no-merge-commit merge: !4934 merge declarative-custom-op-attached-stream-pr into develop feat:声明式自定义算子的辅流申请功能 Created-by: Chang-an-HW Commit-by: Chang-an-HW Merged-by: cann-robot Description: # Pull Request ## 描述 为声明式自定义算子( AnnotatedArgsOp / DeclareLaunchArgs)新增**编译期辅流申请与任务依赖声明**能力,使算子可以在 DeclareLaunchArgs 回调内把多个 kernel launch 下发到不同逻辑流,并由 GE 自动完成流分配与事件同步插入。 **对外接口(gert::AnnotatedArgsContext,@since 9.3.0(2026-09))** - 新增 uint32_t RequestAttachedStream(const ge::AscendString &key):按模型级 key 申请逻辑辅流,相同 key 复用同一 ID;key 为空或申请失败返回 UINT32_MAX。 - 新增 graphStatus AddLaunchWithDependencies(launch_info, args, dependencies, dependency_num, token):以 AnnotatedLaunchToken 表达 launch 间前驱依赖,成功后输出本次 launch 的 token。 - AddLaunch 的 ABI 与行为保持不变(不产生 token,也不能作为依赖源)。 **graph_metadef 侧** - AnnotatedArgsHandler:LaunchRecord 增加 token 与依赖列表;新增 SetAttachedStreamRequestFunc / RequestAttachedStream / GetAttachedStreamIds;AddLaunchWithDependencies 校验 token 有效性(依赖必须指向更早 launch、不可重复、不可溢出)。 - stub_offline_launch_runtime.cc 同步补齐 stub 实现;stub_lowering 增加 runtime_headers、slog 链接。 **compiler 侧** - 新增 DeclarativeStreamRegistry:挂到 ComputeGraph ext attr(declarative_stream_registry),从当前逻辑流数之后按 key 去重分配辅流 ID,并做溢出保护。 - 新增 AnnotatedArgsTaskPlan 序列化/反序列化(带 version、长度与依赖边合法性校验):缓存属性由进程内 ext attr 改为可序列化的 _custom_annotated_args_task_plan_bytes,使计划在 ReGetTaskInfo / 二次生成场景下可无回调恢复;计划中新增 launch_stream_ids、dependencies、attached_stream_ids。 - ModelBuilder:PrepareDeclarativeAttachedStreamRegistry(AssignLogicalStreams 之后建注册表)、FinalizeDeclarativeAttachedStreams(把计划辅流写回 op_desc->SetAttachedStreamIds 并扩展 stream_num)、MaterializeAnnotatedArgsTaskDependencies。 - StreamAllocator:InsertAnnotatedArgsEventTasks 为跨流依赖插入 EVENT_RECORD/EVENT_WAIT 任务;ReconcileAnnotatedArgsEventTasks 在拆流后重映射 event id、剪除同流事件对,并回写 stream/event/notify 总数(RTS 与 GE 两条拆流路径均覆盖)。 - CustomOpsKernelBuilder:物化时按计划流 ID 下发任务(无依赖且无辅流的 legacy 计划仍刷新为节点当前主流,兼容跨流复用);CalcOpRunningParam 改为 DelAttr 清理序列化计划。 **约束校验** - 计划中至少存在一个主流 launch;辅流任务是否汇合回主流由算子自行保证。 - 依赖 token 必须指向更早的 launch,不可重复、不可自依赖。 - mobile OMC 单任务模式不支持依赖与辅流;端侧仍只允许一次 AddLaunch。 **文档**:新增 RequestAttachedStream.md、AddLaunchWithDependencies.md,更新 overview.md、README.md 目录、AddLaunch.md 与 DeclareLaunchArgs.md 约束描述。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue 无 ## 如何测试 描述测试此变更的步骤和前提条件: 1. 编译并运行 UT: - graph_metadef UT:AnnotatedArgsContextUT.AddLaunchWithDependenciesValidatesAndCopiesTokens - ge UT: - stream_allocator_unittest:DeclarativeStreamRegistryTest.*、AnnotatedArgsTaskPlanTest.*(序列化往返、跨流事件插入/重映射/同流剪枝)、ModelBuilderTest.FinalizeDeclarativeAttachedStreams* - custom_ops_kernel_info_store_unittest:计划无回调恢复、辅流不汇合主流、缺主流 launch 报错 - task_generator_unittest:GenerateTask_AnnotatedKernelRecordWait - custom_task_info_unittest:AnnotatedEventWaitUsesExistingWaitAndResetSemantics 2. 编译并运行 ST:graph_engine_test 中 DeclarativeCustomOpAttachedStreamSt.*(按 key 复用辅流 ID、回调缺失返回 UINT32_MAX)。 3. 手工验证:自定义算子在 DeclareLaunchArgs 中调用 RequestAttachedStream + AddLaunchWithDependencies 下发主流/辅流任务,出 OM 后确认 stream_num 扩展、辅流 launch 与 EVENT_RECORD/EVENT_WAIT 任务正确生成且执行结果正确。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 - PR 当前带 stat/needs-squash 标签,38 个 commit 中含多个 CI 规避/revert 提交,合入前需 squash。 - 标题 feat: 使用了全角冒号,建议改为半角 feat: 。 See merge request: cann/ge!4934 | 23 天前 | |
【质量加固】修复若干符合修复规则一和规则二的若干问题的代码问题 Co-authored-by: wys222111<15255468810@163.com> # message auto-generated for no-merge-commit merge: !4594 merge develop into develop 【质量加固】修复若干符合修复规则一和规则二的若干问题的代码问题 Created-by: wys222111 Commit-by: wys222111 Merged-by: cann-robot Description: 修复规则一和规则二的若干问题 See merge request: cann/ge!4594 | 1 个月前 | |
feat: 支持Eager自定义算子辅流资源编译期统计 Co-authored-by: Chang-an-HW<machangan@huawei.com> # message auto-generated for no-merge-commit merge: !5158 merge eager-custom-op-attached-stream-report into develop feat: 支持Eager自定义算子辅流资源编译期统计 Created-by: Chang-an-HW Commit-by: Chang-an-HW Merged-by: cann-robot Description: # Pull Request ## 描述 为 Eager 自定义算子新增辅流资源编译期统计能力: - 新增 ge::ResourceReportingOp 能力接口与 gert::ResourceUsageContext 上下文(继承 ExtendedKernelContext,零成员变量、standard_layout 断言)。算子编译期按节点申报运行期将通过 RequestAttachedStream 请求的辅流 key(ReportAttachedStreamKeys(const std::vector<ge::AscendString>&),元素类型与运行期接口同型)。 - 框架在 ModelBuilder::BuildModelDefForStream 前遍历 device 侧自定义算子节点(跳过声明式 kAnnotatedArgs 节点防双计),按模型对 key 求 union 去重统计,写入模型属性 eager_custom_op_stream_num,随 OM/模型 cache 持久化(无上报算子不写属性,产物零变化);根/子模型聚合求和不去重(各执行实例独立建流)。 - CompiledGraphSummary::SummaryData 新增私有成员,GetStreamNum() 返回"框架流数 + Eager 辅流统计"(唯一合并点,置于动态图 early-return 之前);无上报算子的模型返回值逐一不变。 - 隔离不变量:统计不进入 ATTR_MODEL_STREAM_NUM、runtime_param.stream_num 与 V2 stream_resource,运行时 V1/V2 零改动,纯编译期旁路观测。 - 配套 API 参考文档:新增 ResourceReportingOp/ResourceUsageContext 两组共 8 篇,更新 GetStreamNum 行为说明与 README 索引(并补齐 EagerOpExecutionContext 遗漏的 RequestAttachedStream 索引行)。 ## 聚合与查询路径说明 针对"纯静态图的根模型 eager 属性聚合走哪条路径、summary 读到的是根模型还是子模型"(检视意见)的确认结论: - **在线/离线同一入口**:atc 离线(GeGenerator::GenerateModel → graph_manager_.BuildGraph,ge_generator.cc:1658-1662)与在线 Session 编译均走 GraphBuilder::Build(graph_builder.cc:302)。 - **纯静态图 = 单 GeModel**:Build 仅在 ATTR_NAME_DYNAMIC_SHAPE_PARTITIONED || GetGraphUnknownFlag() 时进入 BuildForDynamicShapeGraph(:323-324);纯静态走 BuildForKnownShapeGraph,整图仅产生一个 GeModel(:330-335)。引擎分区在 known-shape 路径的产物是任务级的(各引擎 TaskDef 下沉同一 DavinciModel),不产生多个子模型,故不存在"静态多子图独立聚合点"。 - **唯一聚合点**:多 GeModel 仅来自动静拆分(BuildForUnknownShapeAllGraphs :717),聚合点唯一为 RefreshInfoOfDynamicShapeGraph(全仓唯一调用点 :620);stream_num/event_num 的既有根模型聚合同在此处,eager 属性在同一循环内同型求和与溢出检查。 - **summary 读取同源**:GetCompiledGraphSummary 在 graph_manager.cc:5335 选取 ge_model 传入 Builder::Build,SetStreamNum 与 SetEagerCustomOpStreamNum 读取同一模型——静态图为 map 唯一 entry(即根模型),动态图为带聚合值的根模型;两属性任何路径下行为一致,无独立漏计面。 - **边界同构**:图展开场景(:619)跳过聚合(stream_num 亦然);单算子编译单模型(single_op_model.cc:874);ATC 动态离线空壳根模型(ge_generator.cc:668-672)两属性一同缺省 0。 ## 变更类型 - [x] ✨ 新功能 - [x] 📝 文档内容更新 ## 关联的Issue 无 ## 如何测试 1. 新增单元测试 14 个,全部通过: - ut_exe_graph --gtest_filter=ResourceUsageContextUT.*:key 上报/去重/空 key 粘滞错误/节点信息与 tensor 访问(5 个); - ut_libge_multiparts_utest --gtest_filter=UtestModelBuilderTest.CollectEagerCustomOpStreamNum*:per-node 按 shape 分桶申报 union 精确、跨节点去重、声明式/未实现接口/非自定义节点跳过、无命中不写属性、失败传播(含算子吞错误码拦截)(4 个); - ut_libge_multiparts_utest --gtest_filter=GraphBuilderTest.RefreshInfo*:聚合求和不去重、全缺省不写根属性、溢出失败(3 个); - ut_libge_common_utest --gtest_filter=UtestGraphCompileSummaryImpl.*:合并点求和、属性缺省 0 与基线一致、隔离回归(新增 2 个)。 2. 回归测试:ut_exe_graph 全量 681 个、UtestModelBuilderTest/GraphBuilderTest/UtestCustomOpFactory 共 79 个全部通过;lowering/stub_lowering/ge_compiler 增量编译零告警。 3. pre-commit(clang-format/codespell/OAT 等 12 项)全部通过。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 - 对外接口面:新增 1 个能力接口(ResourceReportingOp::DeclareResourceUsage)+ 1 个上报方法(ReportAttachedStreamKeys);GetStreamNum 为行为变化(仅含上报算子的模型返回值增大),已在 API 文档声明,提请接口评审关注。 - std::vector<AscendString> 只读传引用参数与已发布的 AnnotatedKernelArgs::ExtractArgsData(9.2.0)跨界形态同类,无所有权/分配器跨界。 - 旧 OM 无新属性缺省按 0,旧算子 so 无需重编译,兼容性回归已覆盖。 See merge request: cann/ge!5158 | 23 天前 | |
feat: 支持Eager自定义算子辅流资源编译期统计 Co-authored-by: Chang-an-HW<machangan@huawei.com> # message auto-generated for no-merge-commit merge: !5158 merge eager-custom-op-attached-stream-report into develop feat: 支持Eager自定义算子辅流资源编译期统计 Created-by: Chang-an-HW Commit-by: Chang-an-HW Merged-by: cann-robot Description: # Pull Request ## 描述 为 Eager 自定义算子新增辅流资源编译期统计能力: - 新增 ge::ResourceReportingOp 能力接口与 gert::ResourceUsageContext 上下文(继承 ExtendedKernelContext,零成员变量、standard_layout 断言)。算子编译期按节点申报运行期将通过 RequestAttachedStream 请求的辅流 key(ReportAttachedStreamKeys(const std::vector<ge::AscendString>&),元素类型与运行期接口同型)。 - 框架在 ModelBuilder::BuildModelDefForStream 前遍历 device 侧自定义算子节点(跳过声明式 kAnnotatedArgs 节点防双计),按模型对 key 求 union 去重统计,写入模型属性 eager_custom_op_stream_num,随 OM/模型 cache 持久化(无上报算子不写属性,产物零变化);根/子模型聚合求和不去重(各执行实例独立建流)。 - CompiledGraphSummary::SummaryData 新增私有成员,GetStreamNum() 返回"框架流数 + Eager 辅流统计"(唯一合并点,置于动态图 early-return 之前);无上报算子的模型返回值逐一不变。 - 隔离不变量:统计不进入 ATTR_MODEL_STREAM_NUM、runtime_param.stream_num 与 V2 stream_resource,运行时 V1/V2 零改动,纯编译期旁路观测。 - 配套 API 参考文档:新增 ResourceReportingOp/ResourceUsageContext 两组共 8 篇,更新 GetStreamNum 行为说明与 README 索引(并补齐 EagerOpExecutionContext 遗漏的 RequestAttachedStream 索引行)。 ## 聚合与查询路径说明 针对"纯静态图的根模型 eager 属性聚合走哪条路径、summary 读到的是根模型还是子模型"(检视意见)的确认结论: - **在线/离线同一入口**:atc 离线(GeGenerator::GenerateModel → graph_manager_.BuildGraph,ge_generator.cc:1658-1662)与在线 Session 编译均走 GraphBuilder::Build(graph_builder.cc:302)。 - **纯静态图 = 单 GeModel**:Build 仅在 ATTR_NAME_DYNAMIC_SHAPE_PARTITIONED || GetGraphUnknownFlag() 时进入 BuildForDynamicShapeGraph(:323-324);纯静态走 BuildForKnownShapeGraph,整图仅产生一个 GeModel(:330-335)。引擎分区在 known-shape 路径的产物是任务级的(各引擎 TaskDef 下沉同一 DavinciModel),不产生多个子模型,故不存在"静态多子图独立聚合点"。 - **唯一聚合点**:多 GeModel 仅来自动静拆分(BuildForUnknownShapeAllGraphs :717),聚合点唯一为 RefreshInfoOfDynamicShapeGraph(全仓唯一调用点 :620);stream_num/event_num 的既有根模型聚合同在此处,eager 属性在同一循环内同型求和与溢出检查。 - **summary 读取同源**:GetCompiledGraphSummary 在 graph_manager.cc:5335 选取 ge_model 传入 Builder::Build,SetStreamNum 与 SetEagerCustomOpStreamNum 读取同一模型——静态图为 map 唯一 entry(即根模型),动态图为带聚合值的根模型;两属性任何路径下行为一致,无独立漏计面。 - **边界同构**:图展开场景(:619)跳过聚合(stream_num 亦然);单算子编译单模型(single_op_model.cc:874);ATC 动态离线空壳根模型(ge_generator.cc:668-672)两属性一同缺省 0。 ## 变更类型 - [x] ✨ 新功能 - [x] 📝 文档内容更新 ## 关联的Issue 无 ## 如何测试 1. 新增单元测试 14 个,全部通过: - ut_exe_graph --gtest_filter=ResourceUsageContextUT.*:key 上报/去重/空 key 粘滞错误/节点信息与 tensor 访问(5 个); - ut_libge_multiparts_utest --gtest_filter=UtestModelBuilderTest.CollectEagerCustomOpStreamNum*:per-node 按 shape 分桶申报 union 精确、跨节点去重、声明式/未实现接口/非自定义节点跳过、无命中不写属性、失败传播(含算子吞错误码拦截)(4 个); - ut_libge_multiparts_utest --gtest_filter=GraphBuilderTest.RefreshInfo*:聚合求和不去重、全缺省不写根属性、溢出失败(3 个); - ut_libge_common_utest --gtest_filter=UtestGraphCompileSummaryImpl.*:合并点求和、属性缺省 0 与基线一致、隔离回归(新增 2 个)。 2. 回归测试:ut_exe_graph 全量 681 个、UtestModelBuilderTest/GraphBuilderTest/UtestCustomOpFactory 共 79 个全部通过;lowering/stub_lowering/ge_compiler 增量编译零告警。 3. pre-commit(clang-format/codespell/OAT 等 12 项)全部通过。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 - 对外接口面:新增 1 个能力接口(ResourceReportingOp::DeclareResourceUsage)+ 1 个上报方法(ReportAttachedStreamKeys);GetStreamNum 为行为变化(仅含上报算子的模型返回值增大),已在 API 文档声明,提请接口评审关注。 - std::vector<AscendString> 只读传引用参数与已发布的 AnnotatedKernelArgs::ExtractArgsData(9.2.0)跨界形态同类,无所有权/分配器跨界。 - 旧 OM 无新属性缺省按 0,旧算子 so 无需重编译,兼容性回归已覆盖。 See merge request: cann/ge!5158 | 23 天前 | |
【PR】: Re-apply "feat: add h2d overlapped with compute compiler plan" Co-authored-by: kobemini<gengchao4@huawei.com> # message auto-generated for no-merge-commit merge: !5187 merge feat/h2d-overlap-compiler-restore into develop 【PR】: Re-apply "feat: add h2d overlapped with compute compiler plan" Created-by: kobemini Commit-by: kobemini Merged-by: cann-robot Description: # Pull Request ## 描述 恢复被 !4072 revert 的 input H2D overlap 编译时特性(原始提交 ed5fd319b)。 本次重新引入该编译时能力,作为 input H2D overlap 特性重新合入的第一部分(编译时)。运行时部分(runtime/v1 执行侧)将在后续 PR 中单独提交,依赖本 PR 先行合入。 与原始提交 ed5fd319b 的差异(revert 后 develop 演进导致的冲突适配): - compiler/graph/build/stream/graph_stream_allocator.h:保留 develop 后续演进的 const 修饰,同时恢复 h2d 所需的 AddExternalWaitRequest / GetStandaloneWaitEvents / GetStreamNum 接口 - tests/ge/ut/ge/graph/build/model_builder_unittest.cc:合并 develop 新增 include(multistream_tuning)与 h2d 测试所需 include - tests/ge/ut/ge/graph/load/om2_package_helper_unittest.cc:!4072 中该文件的改动是与 h2d 无关的搭车重构(sys/stat 手工实现 → std::filesystem),保持 develop 现状不恢复 - 其余 15 个文件与 ed5fd319b 完全一致 ## 变更类型 - [x] ✨ 新功能 ## 关联的Issue ## 如何测试 1. 编译验证:ge_compiler / ut_libge_multiparts_utest / graph_engine_compile_test / ge_common_atc 均编译通过 2. UT 自测:ut_libge_multiparts_utest --gtest_filter="*H2DOverlap*",29 个用例全部通过(UtestModelBuilderTest 24 个 + GraphBuilderTest 5 个) ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 本 PR 为 input H2D overlap 特性分两步合入的第一步(编译时),运行时 PR 将在本 PR 合入后提交。 See merge request: cann/ge!5187 | 23 天前 | |
【PR】: Re-apply "feat: add h2d overlapped with compute compiler plan" Co-authored-by: kobemini<gengchao4@huawei.com> # message auto-generated for no-merge-commit merge: !5187 merge feat/h2d-overlap-compiler-restore into develop 【PR】: Re-apply "feat: add h2d overlapped with compute compiler plan" Created-by: kobemini Commit-by: kobemini Merged-by: cann-robot Description: # Pull Request ## 描述 恢复被 !4072 revert 的 input H2D overlap 编译时特性(原始提交 ed5fd319b)。 本次重新引入该编译时能力,作为 input H2D overlap 特性重新合入的第一部分(编译时)。运行时部分(runtime/v1 执行侧)将在后续 PR 中单独提交,依赖本 PR 先行合入。 与原始提交 ed5fd319b 的差异(revert 后 develop 演进导致的冲突适配): - compiler/graph/build/stream/graph_stream_allocator.h:保留 develop 后续演进的 const 修饰,同时恢复 h2d 所需的 AddExternalWaitRequest / GetStandaloneWaitEvents / GetStreamNum 接口 - tests/ge/ut/ge/graph/build/model_builder_unittest.cc:合并 develop 新增 include(multistream_tuning)与 h2d 测试所需 include - tests/ge/ut/ge/graph/load/om2_package_helper_unittest.cc:!4072 中该文件的改动是与 h2d 无关的搭车重构(sys/stat 手工实现 → std::filesystem),保持 develop 现状不恢复 - 其余 15 个文件与 ed5fd319b 完全一致 ## 变更类型 - [x] ✨ 新功能 ## 关联的Issue ## 如何测试 1. 编译验证:ge_compiler / ut_libge_multiparts_utest / graph_engine_compile_test / ge_common_atc 均编译通过 2. UT 自测:ut_libge_multiparts_utest --gtest_filter="*H2DOverlap*",29 个用例全部通过(UtestModelBuilderTest 24 个 + GraphBuilderTest 5 个) ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 本 PR 为 input H2D overlap 特性分两步合入的第一步(编译时),运行时 PR 将在本 PR 合入后提交。 See merge request: cann/ge!5187 | 23 天前 | |
【PR】: Re-apply "feat: add h2d overlapped with compute compiler plan" Co-authored-by: kobemini<gengchao4@huawei.com> # message auto-generated for no-merge-commit merge: !5187 merge feat/h2d-overlap-compiler-restore into develop 【PR】: Re-apply "feat: add h2d overlapped with compute compiler plan" Created-by: kobemini Commit-by: kobemini Merged-by: cann-robot Description: # Pull Request ## 描述 恢复被 !4072 revert 的 input H2D overlap 编译时特性(原始提交 ed5fd319b)。 本次重新引入该编译时能力,作为 input H2D overlap 特性重新合入的第一部分(编译时)。运行时部分(runtime/v1 执行侧)将在后续 PR 中单独提交,依赖本 PR 先行合入。 与原始提交 ed5fd319b 的差异(revert 后 develop 演进导致的冲突适配): - compiler/graph/build/stream/graph_stream_allocator.h:保留 develop 后续演进的 const 修饰,同时恢复 h2d 所需的 AddExternalWaitRequest / GetStandaloneWaitEvents / GetStreamNum 接口 - tests/ge/ut/ge/graph/build/model_builder_unittest.cc:合并 develop 新增 include(multistream_tuning)与 h2d 测试所需 include - tests/ge/ut/ge/graph/load/om2_package_helper_unittest.cc:!4072 中该文件的改动是与 h2d 无关的搭车重构(sys/stat 手工实现 → std::filesystem),保持 develop 现状不恢复 - 其余 15 个文件与 ed5fd319b 完全一致 ## 变更类型 - [x] ✨ 新功能 ## 关联的Issue ## 如何测试 1. 编译验证:ge_compiler / ut_libge_multiparts_utest / graph_engine_compile_test / ge_common_atc 均编译通过 2. UT 自测:ut_libge_multiparts_utest --gtest_filter="*H2DOverlap*",29 个用例全部通过(UtestModelBuilderTest 24 个 + GraphBuilderTest 5 个) ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 本 PR 为 input H2D overlap 特性分两步合入的第一步(编译时),运行时 PR 将在本 PR 合入后提交。 See merge request: cann/ge!5187 | 23 天前 | |
【PR】: Re-apply "feat: add h2d overlapped with compute compiler plan" Co-authored-by: kobemini<gengchao4@huawei.com> # message auto-generated for no-merge-commit merge: !5187 merge feat/h2d-overlap-compiler-restore into develop 【PR】: Re-apply "feat: add h2d overlapped with compute compiler plan" Created-by: kobemini Commit-by: kobemini Merged-by: cann-robot Description: # Pull Request ## 描述 恢复被 !4072 revert 的 input H2D overlap 编译时特性(原始提交 ed5fd319b)。 本次重新引入该编译时能力,作为 input H2D overlap 特性重新合入的第一部分(编译时)。运行时部分(runtime/v1 执行侧)将在后续 PR 中单独提交,依赖本 PR 先行合入。 与原始提交 ed5fd319b 的差异(revert 后 develop 演进导致的冲突适配): - compiler/graph/build/stream/graph_stream_allocator.h:保留 develop 后续演进的 const 修饰,同时恢复 h2d 所需的 AddExternalWaitRequest / GetStandaloneWaitEvents / GetStreamNum 接口 - tests/ge/ut/ge/graph/build/model_builder_unittest.cc:合并 develop 新增 include(multistream_tuning)与 h2d 测试所需 include - tests/ge/ut/ge/graph/load/om2_package_helper_unittest.cc:!4072 中该文件的改动是与 h2d 无关的搭车重构(sys/stat 手工实现 → std::filesystem),保持 develop 现状不恢复 - 其余 15 个文件与 ed5fd319b 完全一致 ## 变更类型 - [x] ✨ 新功能 ## 关联的Issue ## 如何测试 1. 编译验证:ge_compiler / ut_libge_multiparts_utest / graph_engine_compile_test / ge_common_atc 均编译通过 2. UT 自测:ut_libge_multiparts_utest --gtest_filter="*H2DOverlap*",29 个用例全部通过(UtestModelBuilderTest 24 个 + GraphBuilderTest 5 个) ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 本 PR 为 input H2D overlap 特性分两步合入的第一步(编译时),运行时 PR 将在本 PR 合入后提交。 See merge request: cann/ge!5187 | 23 天前 | |
【PR】: Re-apply "feat: add h2d overlapped with compute compiler plan" Co-authored-by: kobemini<gengchao4@huawei.com> # message auto-generated for no-merge-commit merge: !5187 merge feat/h2d-overlap-compiler-restore into develop 【PR】: Re-apply "feat: add h2d overlapped with compute compiler plan" Created-by: kobemini Commit-by: kobemini Merged-by: cann-robot Description: # Pull Request ## 描述 恢复被 !4072 revert 的 input H2D overlap 编译时特性(原始提交 ed5fd319b)。 本次重新引入该编译时能力,作为 input H2D overlap 特性重新合入的第一部分(编译时)。运行时部分(runtime/v1 执行侧)将在后续 PR 中单独提交,依赖本 PR 先行合入。 与原始提交 ed5fd319b 的差异(revert 后 develop 演进导致的冲突适配): - compiler/graph/build/stream/graph_stream_allocator.h:保留 develop 后续演进的 const 修饰,同时恢复 h2d 所需的 AddExternalWaitRequest / GetStandaloneWaitEvents / GetStreamNum 接口 - tests/ge/ut/ge/graph/build/model_builder_unittest.cc:合并 develop 新增 include(multistream_tuning)与 h2d 测试所需 include - tests/ge/ut/ge/graph/load/om2_package_helper_unittest.cc:!4072 中该文件的改动是与 h2d 无关的搭车重构(sys/stat 手工实现 → std::filesystem),保持 develop 现状不恢复 - 其余 15 个文件与 ed5fd319b 完全一致 ## 变更类型 - [x] ✨ 新功能 ## 关联的Issue ## 如何测试 1. 编译验证:ge_compiler / ut_libge_multiparts_utest / graph_engine_compile_test / ge_common_atc 均编译通过 2. UT 自测:ut_libge_multiparts_utest --gtest_filter="*H2DOverlap*",29 个用例全部通过(UtestModelBuilderTest 24 个 + GraphBuilderTest 5 个) ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 本 PR 为 input H2D overlap 特性分两步合入的第一步(编译时),运行时 PR 将在本 PR 合入后提交。 See merge request: cann/ge!5187 | 23 天前 | |
【质量加固】补充 const 修饰、参数 const 修饰 Co-authored-by: cnsd_turtle<2634163483@qq.com> # message auto-generated for no-merge-commit merge: !4611 merge develop into develop 【质量加固】补充 const 修饰、参数 const 修饰 Created-by: cnsd_turtle Commit-by: cnsd_turtle Merged-by: cann-robot Description: 补充 const 修饰、参数 const 修饰 See merge request: cann/ge!4611 | 1 个月前 | |
【质量加固】补充 const 修饰、参数 const 修饰 Co-authored-by: cnsd_turtle<2634163483@qq.com> # message auto-generated for no-merge-commit merge: !4611 merge develop into develop 【质量加固】补充 const 修饰、参数 const 修饰 Created-by: cnsd_turtle Commit-by: cnsd_turtle Merged-by: cann-robot Description: 补充 const 修饰、参数 const 修饰 See merge request: cann/ge!4611 | 1 个月前 | |
feat:声明式自定义算子的辅流申请功能 Co-authored-by: Chang-an-HW<machangan@huawei.com> # message auto-generated for no-merge-commit merge: !4934 merge declarative-custom-op-attached-stream-pr into develop feat:声明式自定义算子的辅流申请功能 Created-by: Chang-an-HW Commit-by: Chang-an-HW Merged-by: cann-robot Description: # Pull Request ## 描述 为声明式自定义算子( AnnotatedArgsOp / DeclareLaunchArgs)新增**编译期辅流申请与任务依赖声明**能力,使算子可以在 DeclareLaunchArgs 回调内把多个 kernel launch 下发到不同逻辑流,并由 GE 自动完成流分配与事件同步插入。 **对外接口(gert::AnnotatedArgsContext,@since 9.3.0(2026-09))** - 新增 uint32_t RequestAttachedStream(const ge::AscendString &key):按模型级 key 申请逻辑辅流,相同 key 复用同一 ID;key 为空或申请失败返回 UINT32_MAX。 - 新增 graphStatus AddLaunchWithDependencies(launch_info, args, dependencies, dependency_num, token):以 AnnotatedLaunchToken 表达 launch 间前驱依赖,成功后输出本次 launch 的 token。 - AddLaunch 的 ABI 与行为保持不变(不产生 token,也不能作为依赖源)。 **graph_metadef 侧** - AnnotatedArgsHandler:LaunchRecord 增加 token 与依赖列表;新增 SetAttachedStreamRequestFunc / RequestAttachedStream / GetAttachedStreamIds;AddLaunchWithDependencies 校验 token 有效性(依赖必须指向更早 launch、不可重复、不可溢出)。 - stub_offline_launch_runtime.cc 同步补齐 stub 实现;stub_lowering 增加 runtime_headers、slog 链接。 **compiler 侧** - 新增 DeclarativeStreamRegistry:挂到 ComputeGraph ext attr(declarative_stream_registry),从当前逻辑流数之后按 key 去重分配辅流 ID,并做溢出保护。 - 新增 AnnotatedArgsTaskPlan 序列化/反序列化(带 version、长度与依赖边合法性校验):缓存属性由进程内 ext attr 改为可序列化的 _custom_annotated_args_task_plan_bytes,使计划在 ReGetTaskInfo / 二次生成场景下可无回调恢复;计划中新增 launch_stream_ids、dependencies、attached_stream_ids。 - ModelBuilder:PrepareDeclarativeAttachedStreamRegistry(AssignLogicalStreams 之后建注册表)、FinalizeDeclarativeAttachedStreams(把计划辅流写回 op_desc->SetAttachedStreamIds 并扩展 stream_num)、MaterializeAnnotatedArgsTaskDependencies。 - StreamAllocator:InsertAnnotatedArgsEventTasks 为跨流依赖插入 EVENT_RECORD/EVENT_WAIT 任务;ReconcileAnnotatedArgsEventTasks 在拆流后重映射 event id、剪除同流事件对,并回写 stream/event/notify 总数(RTS 与 GE 两条拆流路径均覆盖)。 - CustomOpsKernelBuilder:物化时按计划流 ID 下发任务(无依赖且无辅流的 legacy 计划仍刷新为节点当前主流,兼容跨流复用);CalcOpRunningParam 改为 DelAttr 清理序列化计划。 **约束校验** - 计划中至少存在一个主流 launch;辅流任务是否汇合回主流由算子自行保证。 - 依赖 token 必须指向更早的 launch,不可重复、不可自依赖。 - mobile OMC 单任务模式不支持依赖与辅流;端侧仍只允许一次 AddLaunch。 **文档**:新增 RequestAttachedStream.md、AddLaunchWithDependencies.md,更新 overview.md、README.md 目录、AddLaunch.md 与 DeclareLaunchArgs.md 约束描述。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue 无 ## 如何测试 描述测试此变更的步骤和前提条件: 1. 编译并运行 UT: - graph_metadef UT:AnnotatedArgsContextUT.AddLaunchWithDependenciesValidatesAndCopiesTokens - ge UT: - stream_allocator_unittest:DeclarativeStreamRegistryTest.*、AnnotatedArgsTaskPlanTest.*(序列化往返、跨流事件插入/重映射/同流剪枝)、ModelBuilderTest.FinalizeDeclarativeAttachedStreams* - custom_ops_kernel_info_store_unittest:计划无回调恢复、辅流不汇合主流、缺主流 launch 报错 - task_generator_unittest:GenerateTask_AnnotatedKernelRecordWait - custom_task_info_unittest:AnnotatedEventWaitUsesExistingWaitAndResetSemantics 2. 编译并运行 ST:graph_engine_test 中 DeclarativeCustomOpAttachedStreamSt.*(按 key 复用辅流 ID、回调缺失返回 UINT32_MAX)。 3. 手工验证:自定义算子在 DeclareLaunchArgs 中调用 RequestAttachedStream + AddLaunchWithDependencies 下发主流/辅流任务,出 OM 后确认 stream_num 扩展、辅流 launch 与 EVENT_RECORD/EVENT_WAIT 任务正确生成且执行结果正确。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 - PR 当前带 stat/needs-squash 标签,38 个 commit 中含多个 CI 规避/revert 提交,合入前需 squash。 - 标题 feat: 使用了全角冒号,建议改为半角 feat: 。 See merge request: cann/ge!4934 | 23 天前 | |
feat:声明式自定义算子的辅流申请功能 Co-authored-by: Chang-an-HW<machangan@huawei.com> # message auto-generated for no-merge-commit merge: !4934 merge declarative-custom-op-attached-stream-pr into develop feat:声明式自定义算子的辅流申请功能 Created-by: Chang-an-HW Commit-by: Chang-an-HW Merged-by: cann-robot Description: # Pull Request ## 描述 为声明式自定义算子( AnnotatedArgsOp / DeclareLaunchArgs)新增**编译期辅流申请与任务依赖声明**能力,使算子可以在 DeclareLaunchArgs 回调内把多个 kernel launch 下发到不同逻辑流,并由 GE 自动完成流分配与事件同步插入。 **对外接口(gert::AnnotatedArgsContext,@since 9.3.0(2026-09))** - 新增 uint32_t RequestAttachedStream(const ge::AscendString &key):按模型级 key 申请逻辑辅流,相同 key 复用同一 ID;key 为空或申请失败返回 UINT32_MAX。 - 新增 graphStatus AddLaunchWithDependencies(launch_info, args, dependencies, dependency_num, token):以 AnnotatedLaunchToken 表达 launch 间前驱依赖,成功后输出本次 launch 的 token。 - AddLaunch 的 ABI 与行为保持不变(不产生 token,也不能作为依赖源)。 **graph_metadef 侧** - AnnotatedArgsHandler:LaunchRecord 增加 token 与依赖列表;新增 SetAttachedStreamRequestFunc / RequestAttachedStream / GetAttachedStreamIds;AddLaunchWithDependencies 校验 token 有效性(依赖必须指向更早 launch、不可重复、不可溢出)。 - stub_offline_launch_runtime.cc 同步补齐 stub 实现;stub_lowering 增加 runtime_headers、slog 链接。 **compiler 侧** - 新增 DeclarativeStreamRegistry:挂到 ComputeGraph ext attr(declarative_stream_registry),从当前逻辑流数之后按 key 去重分配辅流 ID,并做溢出保护。 - 新增 AnnotatedArgsTaskPlan 序列化/反序列化(带 version、长度与依赖边合法性校验):缓存属性由进程内 ext attr 改为可序列化的 _custom_annotated_args_task_plan_bytes,使计划在 ReGetTaskInfo / 二次生成场景下可无回调恢复;计划中新增 launch_stream_ids、dependencies、attached_stream_ids。 - ModelBuilder:PrepareDeclarativeAttachedStreamRegistry(AssignLogicalStreams 之后建注册表)、FinalizeDeclarativeAttachedStreams(把计划辅流写回 op_desc->SetAttachedStreamIds 并扩展 stream_num)、MaterializeAnnotatedArgsTaskDependencies。 - StreamAllocator:InsertAnnotatedArgsEventTasks 为跨流依赖插入 EVENT_RECORD/EVENT_WAIT 任务;ReconcileAnnotatedArgsEventTasks 在拆流后重映射 event id、剪除同流事件对,并回写 stream/event/notify 总数(RTS 与 GE 两条拆流路径均覆盖)。 - CustomOpsKernelBuilder:物化时按计划流 ID 下发任务(无依赖且无辅流的 legacy 计划仍刷新为节点当前主流,兼容跨流复用);CalcOpRunningParam 改为 DelAttr 清理序列化计划。 **约束校验** - 计划中至少存在一个主流 launch;辅流任务是否汇合回主流由算子自行保证。 - 依赖 token 必须指向更早的 launch,不可重复、不可自依赖。 - mobile OMC 单任务模式不支持依赖与辅流;端侧仍只允许一次 AddLaunch。 **文档**:新增 RequestAttachedStream.md、AddLaunchWithDependencies.md,更新 overview.md、README.md 目录、AddLaunch.md 与 DeclareLaunchArgs.md 约束描述。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue 无 ## 如何测试 描述测试此变更的步骤和前提条件: 1. 编译并运行 UT: - graph_metadef UT:AnnotatedArgsContextUT.AddLaunchWithDependenciesValidatesAndCopiesTokens - ge UT: - stream_allocator_unittest:DeclarativeStreamRegistryTest.*、AnnotatedArgsTaskPlanTest.*(序列化往返、跨流事件插入/重映射/同流剪枝)、ModelBuilderTest.FinalizeDeclarativeAttachedStreams* - custom_ops_kernel_info_store_unittest:计划无回调恢复、辅流不汇合主流、缺主流 launch 报错 - task_generator_unittest:GenerateTask_AnnotatedKernelRecordWait - custom_task_info_unittest:AnnotatedEventWaitUsesExistingWaitAndResetSemantics 2. 编译并运行 ST:graph_engine_test 中 DeclarativeCustomOpAttachedStreamSt.*(按 key 复用辅流 ID、回调缺失返回 UINT32_MAX)。 3. 手工验证:自定义算子在 DeclareLaunchArgs 中调用 RequestAttachedStream + AddLaunchWithDependencies 下发主流/辅流任务,出 OM 后确认 stream_num 扩展、辅流 launch 与 EVENT_RECORD/EVENT_WAIT 任务正确生成且执行结果正确。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 - PR 当前带 stat/needs-squash 标签,38 个 commit 中含多个 CI 规避/revert 提交,合入前需 squash。 - 标题 feat: 使用了全角冒号,建议改为半角 feat: 。 See merge request: cann/ge!4934 | 23 天前 | |
【PR】: ge_error_codes.h重命名后修改ge仓引用 Co-authored-by: jikai-tyler<jikai5@huawei.com> # message auto-generated for no-merge-commit merge: !4039 merge ge_errorcode into develop 【PR】: ge_error_codes.h重命名后修改ge仓引用 Created-by: jikai-tyler Commit-by: jikai-tyler Merged-by: cann-robot Description: # Pull Request ## 描述 ge_error_codes.h重命名后修改ge仓引用。 ## 变更类型 请选择本次引入的变更类型: <!-- [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!4039 | 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 | 3 个月前 | |
【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 | 3 个月前 | |
【PR】: ge_error_codes.h重命名后修改ge仓引用 Co-authored-by: jikai-tyler<jikai5@huawei.com> # message auto-generated for no-merge-commit merge: !4039 merge ge_errorcode into develop 【PR】: ge_error_codes.h重命名后修改ge仓引用 Created-by: jikai-tyler Commit-by: jikai-tyler Merged-by: cann-robot Description: # Pull Request ## 描述 ge_error_codes.h重命名后修改ge仓引用。 ## 变更类型 请选择本次引入的变更类型: <!-- [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!4039 | 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 | 3 个月前 | |
【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 | 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 | 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 | 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 | 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 | 3 个月前 | |
feat:声明式自定义算子的辅流申请功能 Co-authored-by: Chang-an-HW<machangan@huawei.com> # message auto-generated for no-merge-commit merge: !4934 merge declarative-custom-op-attached-stream-pr into develop feat:声明式自定义算子的辅流申请功能 Created-by: Chang-an-HW Commit-by: Chang-an-HW Merged-by: cann-robot Description: # Pull Request ## 描述 为声明式自定义算子( AnnotatedArgsOp / DeclareLaunchArgs)新增**编译期辅流申请与任务依赖声明**能力,使算子可以在 DeclareLaunchArgs 回调内把多个 kernel launch 下发到不同逻辑流,并由 GE 自动完成流分配与事件同步插入。 **对外接口(gert::AnnotatedArgsContext,@since 9.3.0(2026-09))** - 新增 uint32_t RequestAttachedStream(const ge::AscendString &key):按模型级 key 申请逻辑辅流,相同 key 复用同一 ID;key 为空或申请失败返回 UINT32_MAX。 - 新增 graphStatus AddLaunchWithDependencies(launch_info, args, dependencies, dependency_num, token):以 AnnotatedLaunchToken 表达 launch 间前驱依赖,成功后输出本次 launch 的 token。 - AddLaunch 的 ABI 与行为保持不变(不产生 token,也不能作为依赖源)。 **graph_metadef 侧** - AnnotatedArgsHandler:LaunchRecord 增加 token 与依赖列表;新增 SetAttachedStreamRequestFunc / RequestAttachedStream / GetAttachedStreamIds;AddLaunchWithDependencies 校验 token 有效性(依赖必须指向更早 launch、不可重复、不可溢出)。 - stub_offline_launch_runtime.cc 同步补齐 stub 实现;stub_lowering 增加 runtime_headers、slog 链接。 **compiler 侧** - 新增 DeclarativeStreamRegistry:挂到 ComputeGraph ext attr(declarative_stream_registry),从当前逻辑流数之后按 key 去重分配辅流 ID,并做溢出保护。 - 新增 AnnotatedArgsTaskPlan 序列化/反序列化(带 version、长度与依赖边合法性校验):缓存属性由进程内 ext attr 改为可序列化的 _custom_annotated_args_task_plan_bytes,使计划在 ReGetTaskInfo / 二次生成场景下可无回调恢复;计划中新增 launch_stream_ids、dependencies、attached_stream_ids。 - ModelBuilder:PrepareDeclarativeAttachedStreamRegistry(AssignLogicalStreams 之后建注册表)、FinalizeDeclarativeAttachedStreams(把计划辅流写回 op_desc->SetAttachedStreamIds 并扩展 stream_num)、MaterializeAnnotatedArgsTaskDependencies。 - StreamAllocator:InsertAnnotatedArgsEventTasks 为跨流依赖插入 EVENT_RECORD/EVENT_WAIT 任务;ReconcileAnnotatedArgsEventTasks 在拆流后重映射 event id、剪除同流事件对,并回写 stream/event/notify 总数(RTS 与 GE 两条拆流路径均覆盖)。 - CustomOpsKernelBuilder:物化时按计划流 ID 下发任务(无依赖且无辅流的 legacy 计划仍刷新为节点当前主流,兼容跨流复用);CalcOpRunningParam 改为 DelAttr 清理序列化计划。 **约束校验** - 计划中至少存在一个主流 launch;辅流任务是否汇合回主流由算子自行保证。 - 依赖 token 必须指向更早的 launch,不可重复、不可自依赖。 - mobile OMC 单任务模式不支持依赖与辅流;端侧仍只允许一次 AddLaunch。 **文档**:新增 RequestAttachedStream.md、AddLaunchWithDependencies.md,更新 overview.md、README.md 目录、AddLaunch.md 与 DeclareLaunchArgs.md 约束描述。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue 无 ## 如何测试 描述测试此变更的步骤和前提条件: 1. 编译并运行 UT: - graph_metadef UT:AnnotatedArgsContextUT.AddLaunchWithDependenciesValidatesAndCopiesTokens - ge UT: - stream_allocator_unittest:DeclarativeStreamRegistryTest.*、AnnotatedArgsTaskPlanTest.*(序列化往返、跨流事件插入/重映射/同流剪枝)、ModelBuilderTest.FinalizeDeclarativeAttachedStreams* - custom_ops_kernel_info_store_unittest:计划无回调恢复、辅流不汇合主流、缺主流 launch 报错 - task_generator_unittest:GenerateTask_AnnotatedKernelRecordWait - custom_task_info_unittest:AnnotatedEventWaitUsesExistingWaitAndResetSemantics 2. 编译并运行 ST:graph_engine_test 中 DeclarativeCustomOpAttachedStreamSt.*(按 key 复用辅流 ID、回调缺失返回 UINT32_MAX)。 3. 手工验证:自定义算子在 DeclareLaunchArgs 中调用 RequestAttachedStream + AddLaunchWithDependencies 下发主流/辅流任务,出 OM 后确认 stream_num 扩展、辅流 launch 与 EVENT_RECORD/EVENT_WAIT 任务正确生成且执行结果正确。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 - PR 当前带 stat/needs-squash 标签,38 个 commit 中含多个 CI 规避/revert 提交,合入前需 squash。 - 标题 feat: 使用了全角冒号,建议改为半角 feat: 。 See merge request: cann/ge!4934 | 23 天前 | |
feat:声明式自定义算子的辅流申请功能 Co-authored-by: Chang-an-HW<machangan@huawei.com> # message auto-generated for no-merge-commit merge: !4934 merge declarative-custom-op-attached-stream-pr into develop feat:声明式自定义算子的辅流申请功能 Created-by: Chang-an-HW Commit-by: Chang-an-HW Merged-by: cann-robot Description: # Pull Request ## 描述 为声明式自定义算子( AnnotatedArgsOp / DeclareLaunchArgs)新增**编译期辅流申请与任务依赖声明**能力,使算子可以在 DeclareLaunchArgs 回调内把多个 kernel launch 下发到不同逻辑流,并由 GE 自动完成流分配与事件同步插入。 **对外接口(gert::AnnotatedArgsContext,@since 9.3.0(2026-09))** - 新增 uint32_t RequestAttachedStream(const ge::AscendString &key):按模型级 key 申请逻辑辅流,相同 key 复用同一 ID;key 为空或申请失败返回 UINT32_MAX。 - 新增 graphStatus AddLaunchWithDependencies(launch_info, args, dependencies, dependency_num, token):以 AnnotatedLaunchToken 表达 launch 间前驱依赖,成功后输出本次 launch 的 token。 - AddLaunch 的 ABI 与行为保持不变(不产生 token,也不能作为依赖源)。 **graph_metadef 侧** - AnnotatedArgsHandler:LaunchRecord 增加 token 与依赖列表;新增 SetAttachedStreamRequestFunc / RequestAttachedStream / GetAttachedStreamIds;AddLaunchWithDependencies 校验 token 有效性(依赖必须指向更早 launch、不可重复、不可溢出)。 - stub_offline_launch_runtime.cc 同步补齐 stub 实现;stub_lowering 增加 runtime_headers、slog 链接。 **compiler 侧** - 新增 DeclarativeStreamRegistry:挂到 ComputeGraph ext attr(declarative_stream_registry),从当前逻辑流数之后按 key 去重分配辅流 ID,并做溢出保护。 - 新增 AnnotatedArgsTaskPlan 序列化/反序列化(带 version、长度与依赖边合法性校验):缓存属性由进程内 ext attr 改为可序列化的 _custom_annotated_args_task_plan_bytes,使计划在 ReGetTaskInfo / 二次生成场景下可无回调恢复;计划中新增 launch_stream_ids、dependencies、attached_stream_ids。 - ModelBuilder:PrepareDeclarativeAttachedStreamRegistry(AssignLogicalStreams 之后建注册表)、FinalizeDeclarativeAttachedStreams(把计划辅流写回 op_desc->SetAttachedStreamIds 并扩展 stream_num)、MaterializeAnnotatedArgsTaskDependencies。 - StreamAllocator:InsertAnnotatedArgsEventTasks 为跨流依赖插入 EVENT_RECORD/EVENT_WAIT 任务;ReconcileAnnotatedArgsEventTasks 在拆流后重映射 event id、剪除同流事件对,并回写 stream/event/notify 总数(RTS 与 GE 两条拆流路径均覆盖)。 - CustomOpsKernelBuilder:物化时按计划流 ID 下发任务(无依赖且无辅流的 legacy 计划仍刷新为节点当前主流,兼容跨流复用);CalcOpRunningParam 改为 DelAttr 清理序列化计划。 **约束校验** - 计划中至少存在一个主流 launch;辅流任务是否汇合回主流由算子自行保证。 - 依赖 token 必须指向更早的 launch,不可重复、不可自依赖。 - mobile OMC 单任务模式不支持依赖与辅流;端侧仍只允许一次 AddLaunch。 **文档**:新增 RequestAttachedStream.md、AddLaunchWithDependencies.md,更新 overview.md、README.md 目录、AddLaunch.md 与 DeclareLaunchArgs.md 约束描述。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue 无 ## 如何测试 描述测试此变更的步骤和前提条件: 1. 编译并运行 UT: - graph_metadef UT:AnnotatedArgsContextUT.AddLaunchWithDependenciesValidatesAndCopiesTokens - ge UT: - stream_allocator_unittest:DeclarativeStreamRegistryTest.*、AnnotatedArgsTaskPlanTest.*(序列化往返、跨流事件插入/重映射/同流剪枝)、ModelBuilderTest.FinalizeDeclarativeAttachedStreams* - custom_ops_kernel_info_store_unittest:计划无回调恢复、辅流不汇合主流、缺主流 launch 报错 - task_generator_unittest:GenerateTask_AnnotatedKernelRecordWait - custom_task_info_unittest:AnnotatedEventWaitUsesExistingWaitAndResetSemantics 2. 编译并运行 ST:graph_engine_test 中 DeclarativeCustomOpAttachedStreamSt.*(按 key 复用辅流 ID、回调缺失返回 UINT32_MAX)。 3. 手工验证:自定义算子在 DeclareLaunchArgs 中调用 RequestAttachedStream + AddLaunchWithDependencies 下发主流/辅流任务,出 OM 后确认 stream_num 扩展、辅流 launch 与 EVENT_RECORD/EVENT_WAIT 任务正确生成且执行结果正确。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 - PR 当前带 stat/needs-squash 标签,38 个 commit 中含多个 CI 规避/revert 提交,合入前需 squash。 - 标题 feat: 使用了全角冒号,建议改为半角 feat: 。 See merge request: cann/ge!4934 | 23 天前 | |
feat:声明式自定义算子的辅流申请功能 Co-authored-by: Chang-an-HW<machangan@huawei.com> # message auto-generated for no-merge-commit merge: !4934 merge declarative-custom-op-attached-stream-pr into develop feat:声明式自定义算子的辅流申请功能 Created-by: Chang-an-HW Commit-by: Chang-an-HW Merged-by: cann-robot Description: # Pull Request ## 描述 为声明式自定义算子( AnnotatedArgsOp / DeclareLaunchArgs)新增**编译期辅流申请与任务依赖声明**能力,使算子可以在 DeclareLaunchArgs 回调内把多个 kernel launch 下发到不同逻辑流,并由 GE 自动完成流分配与事件同步插入。 **对外接口(gert::AnnotatedArgsContext,@since 9.3.0(2026-09))** - 新增 uint32_t RequestAttachedStream(const ge::AscendString &key):按模型级 key 申请逻辑辅流,相同 key 复用同一 ID;key 为空或申请失败返回 UINT32_MAX。 - 新增 graphStatus AddLaunchWithDependencies(launch_info, args, dependencies, dependency_num, token):以 AnnotatedLaunchToken 表达 launch 间前驱依赖,成功后输出本次 launch 的 token。 - AddLaunch 的 ABI 与行为保持不变(不产生 token,也不能作为依赖源)。 **graph_metadef 侧** - AnnotatedArgsHandler:LaunchRecord 增加 token 与依赖列表;新增 SetAttachedStreamRequestFunc / RequestAttachedStream / GetAttachedStreamIds;AddLaunchWithDependencies 校验 token 有效性(依赖必须指向更早 launch、不可重复、不可溢出)。 - stub_offline_launch_runtime.cc 同步补齐 stub 实现;stub_lowering 增加 runtime_headers、slog 链接。 **compiler 侧** - 新增 DeclarativeStreamRegistry:挂到 ComputeGraph ext attr(declarative_stream_registry),从当前逻辑流数之后按 key 去重分配辅流 ID,并做溢出保护。 - 新增 AnnotatedArgsTaskPlan 序列化/反序列化(带 version、长度与依赖边合法性校验):缓存属性由进程内 ext attr 改为可序列化的 _custom_annotated_args_task_plan_bytes,使计划在 ReGetTaskInfo / 二次生成场景下可无回调恢复;计划中新增 launch_stream_ids、dependencies、attached_stream_ids。 - ModelBuilder:PrepareDeclarativeAttachedStreamRegistry(AssignLogicalStreams 之后建注册表)、FinalizeDeclarativeAttachedStreams(把计划辅流写回 op_desc->SetAttachedStreamIds 并扩展 stream_num)、MaterializeAnnotatedArgsTaskDependencies。 - StreamAllocator:InsertAnnotatedArgsEventTasks 为跨流依赖插入 EVENT_RECORD/EVENT_WAIT 任务;ReconcileAnnotatedArgsEventTasks 在拆流后重映射 event id、剪除同流事件对,并回写 stream/event/notify 总数(RTS 与 GE 两条拆流路径均覆盖)。 - CustomOpsKernelBuilder:物化时按计划流 ID 下发任务(无依赖且无辅流的 legacy 计划仍刷新为节点当前主流,兼容跨流复用);CalcOpRunningParam 改为 DelAttr 清理序列化计划。 **约束校验** - 计划中至少存在一个主流 launch;辅流任务是否汇合回主流由算子自行保证。 - 依赖 token 必须指向更早的 launch,不可重复、不可自依赖。 - mobile OMC 单任务模式不支持依赖与辅流;端侧仍只允许一次 AddLaunch。 **文档**:新增 RequestAttachedStream.md、AddLaunchWithDependencies.md,更新 overview.md、README.md 目录、AddLaunch.md 与 DeclareLaunchArgs.md 约束描述。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue 无 ## 如何测试 描述测试此变更的步骤和前提条件: 1. 编译并运行 UT: - graph_metadef UT:AnnotatedArgsContextUT.AddLaunchWithDependenciesValidatesAndCopiesTokens - ge UT: - stream_allocator_unittest:DeclarativeStreamRegistryTest.*、AnnotatedArgsTaskPlanTest.*(序列化往返、跨流事件插入/重映射/同流剪枝)、ModelBuilderTest.FinalizeDeclarativeAttachedStreams* - custom_ops_kernel_info_store_unittest:计划无回调恢复、辅流不汇合主流、缺主流 launch 报错 - task_generator_unittest:GenerateTask_AnnotatedKernelRecordWait - custom_task_info_unittest:AnnotatedEventWaitUsesExistingWaitAndResetSemantics 2. 编译并运行 ST:graph_engine_test 中 DeclarativeCustomOpAttachedStreamSt.*(按 key 复用辅流 ID、回调缺失返回 UINT32_MAX)。 3. 手工验证:自定义算子在 DeclareLaunchArgs 中调用 RequestAttachedStream + AddLaunchWithDependencies 下发主流/辅流任务,出 OM 后确认 stream_num 扩展、辅流 launch 与 EVENT_RECORD/EVENT_WAIT 任务正确生成且执行结果正确。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 - PR 当前带 stat/needs-squash 标签,38 个 commit 中含多个 CI 规避/revert 提交,合入前需 squash。 - 标题 feat: 使用了全角冒号,建议改为半角 feat: 。 See merge request: cann/ge!4934 | 23 天前 | |
feat:声明式自定义算子的辅流申请功能 Co-authored-by: Chang-an-HW<machangan@huawei.com> # message auto-generated for no-merge-commit merge: !4934 merge declarative-custom-op-attached-stream-pr into develop feat:声明式自定义算子的辅流申请功能 Created-by: Chang-an-HW Commit-by: Chang-an-HW Merged-by: cann-robot Description: # Pull Request ## 描述 为声明式自定义算子( AnnotatedArgsOp / DeclareLaunchArgs)新增**编译期辅流申请与任务依赖声明**能力,使算子可以在 DeclareLaunchArgs 回调内把多个 kernel launch 下发到不同逻辑流,并由 GE 自动完成流分配与事件同步插入。 **对外接口(gert::AnnotatedArgsContext,@since 9.3.0(2026-09))** - 新增 uint32_t RequestAttachedStream(const ge::AscendString &key):按模型级 key 申请逻辑辅流,相同 key 复用同一 ID;key 为空或申请失败返回 UINT32_MAX。 - 新增 graphStatus AddLaunchWithDependencies(launch_info, args, dependencies, dependency_num, token):以 AnnotatedLaunchToken 表达 launch 间前驱依赖,成功后输出本次 launch 的 token。 - AddLaunch 的 ABI 与行为保持不变(不产生 token,也不能作为依赖源)。 **graph_metadef 侧** - AnnotatedArgsHandler:LaunchRecord 增加 token 与依赖列表;新增 SetAttachedStreamRequestFunc / RequestAttachedStream / GetAttachedStreamIds;AddLaunchWithDependencies 校验 token 有效性(依赖必须指向更早 launch、不可重复、不可溢出)。 - stub_offline_launch_runtime.cc 同步补齐 stub 实现;stub_lowering 增加 runtime_headers、slog 链接。 **compiler 侧** - 新增 DeclarativeStreamRegistry:挂到 ComputeGraph ext attr(declarative_stream_registry),从当前逻辑流数之后按 key 去重分配辅流 ID,并做溢出保护。 - 新增 AnnotatedArgsTaskPlan 序列化/反序列化(带 version、长度与依赖边合法性校验):缓存属性由进程内 ext attr 改为可序列化的 _custom_annotated_args_task_plan_bytes,使计划在 ReGetTaskInfo / 二次生成场景下可无回调恢复;计划中新增 launch_stream_ids、dependencies、attached_stream_ids。 - ModelBuilder:PrepareDeclarativeAttachedStreamRegistry(AssignLogicalStreams 之后建注册表)、FinalizeDeclarativeAttachedStreams(把计划辅流写回 op_desc->SetAttachedStreamIds 并扩展 stream_num)、MaterializeAnnotatedArgsTaskDependencies。 - StreamAllocator:InsertAnnotatedArgsEventTasks 为跨流依赖插入 EVENT_RECORD/EVENT_WAIT 任务;ReconcileAnnotatedArgsEventTasks 在拆流后重映射 event id、剪除同流事件对,并回写 stream/event/notify 总数(RTS 与 GE 两条拆流路径均覆盖)。 - CustomOpsKernelBuilder:物化时按计划流 ID 下发任务(无依赖且无辅流的 legacy 计划仍刷新为节点当前主流,兼容跨流复用);CalcOpRunningParam 改为 DelAttr 清理序列化计划。 **约束校验** - 计划中至少存在一个主流 launch;辅流任务是否汇合回主流由算子自行保证。 - 依赖 token 必须指向更早的 launch,不可重复、不可自依赖。 - mobile OMC 单任务模式不支持依赖与辅流;端侧仍只允许一次 AddLaunch。 **文档**:新增 RequestAttachedStream.md、AddLaunchWithDependencies.md,更新 overview.md、README.md 目录、AddLaunch.md 与 DeclareLaunchArgs.md 约束描述。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue 无 ## 如何测试 描述测试此变更的步骤和前提条件: 1. 编译并运行 UT: - graph_metadef UT:AnnotatedArgsContextUT.AddLaunchWithDependenciesValidatesAndCopiesTokens - ge UT: - stream_allocator_unittest:DeclarativeStreamRegistryTest.*、AnnotatedArgsTaskPlanTest.*(序列化往返、跨流事件插入/重映射/同流剪枝)、ModelBuilderTest.FinalizeDeclarativeAttachedStreams* - custom_ops_kernel_info_store_unittest:计划无回调恢复、辅流不汇合主流、缺主流 launch 报错 - task_generator_unittest:GenerateTask_AnnotatedKernelRecordWait - custom_task_info_unittest:AnnotatedEventWaitUsesExistingWaitAndResetSemantics 2. 编译并运行 ST:graph_engine_test 中 DeclarativeCustomOpAttachedStreamSt.*(按 key 复用辅流 ID、回调缺失返回 UINT32_MAX)。 3. 手工验证:自定义算子在 DeclareLaunchArgs 中调用 RequestAttachedStream + AddLaunchWithDependencies 下发主流/辅流任务,出 OM 后确认 stream_num 扩展、辅流 launch 与 EVENT_RECORD/EVENT_WAIT 任务正确生成且执行结果正确。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 - PR 当前带 stat/needs-squash 标签,38 个 commit 中含多个 CI 规避/revert 提交,合入前需 squash。 - 标题 feat: 使用了全角冒号,建议改为半角 feat: 。 See merge request: cann/ge!4934 | 23 天前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 3 个月前 | ||
| 1 个月前 | ||
| 23 天前 | ||
| 23 天前 | ||
| 1 个月前 | ||
| 23 天前 | ||
| 23 天前 | ||
| 23 天前 | ||
| 23 天前 | ||
| 23 天前 | ||
| 23 天前 | ||
| 23 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 23 天前 | ||
| 23 天前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 23 天前 | ||
| 23 天前 | ||
| 23 天前 | ||
| 23 天前 |