| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
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: 支持自定义输入输出offset的内存分配 Co-authored-by: tangqunzhang<tangqunzhang@huawei.com> # message auto-generated for no-merge-commit merge: !4015 merge feat/custom-input-output-memory-offset into develop feat: 支持自定义输入输出offset的内存分配 Created-by: tangqunzhang Commit-by: tangqunzhang Merged-by: cann-robot Description: ## 描述 性能优化,为了减少一次片内拷贝,HcomAllgather算子输入输出共用一块内存,输入节点直接按偏移量写入内存指定位置,由优化pass设置属性,内存分配按属性进行偏移(本PR只实现内存分配部分)。 新增 ATTR_NAME_CUSTOM_INPUT_OUTPUT_OFFSET 属性,用于区分普通 ref 场景,实现自定义输入输出 offset。 主要变更: 1. 新增 _custom_input_output_offset 属性定义(ge_attr_define.cc/h) 2. 新增 GetOffsetFromPeerOutputList/GetOffsetFromPeerInputList/GetCustomOffset 三个函数,通过 ATTR_NAME_OUTPUT_OFFSET_LIST_FOR_CONTINUOUS(输入peer)和 ATTR_NAME_INPUT_OFFSET_LIST_FOR_CONTINUOUS(输出peer)计算输出相对输入的偏移量,两个属性互斥校验,同时检测 ref/atomic 冲突 3. CheckRefNodeOffset 中使用 GetCustomOffset 计算自定义 offset 后校验 4. UpdateRefOpOutputOffset 中 custom_offset != 0 时跳过输出 offset 刷新 5. AssignContinuousOutputMemory 中 NoPadding 分支增加 UpdateOffsetsByOffsetListAttr 调用 6. 修复 UpdateOffsetsByOffsetListAttr 日志中 output/input 索引描述错误 7. 补充 4 个 UT 用例和 1 个 ST 用例 ## 变更类型 - [x] ✨ 新功能 - [x] 🐛 Bug 修复 ## 关联的Issue 无 ## 如何测试 1. 对需要自定义输入输出 offset 的算子节点设置 _custom_input_output_offset 和 _output_reuse_input 属性为 true 2. 在输入 peer 设置 _output_offset_list_for_continuous 或在输出 peer 设置 _input_offset_list_for_continuous 指定偏移量 3. 编译图并检查内存分配结果,验证 output_offset - input_offset 是否等于自定义偏移量 4. 验证未设置该属性的算子行为不受影响 5. UT:CustomInputOutputOffset_WithOutputOffsetList_Success、CustomInputOutputOffset_WithInputOffsetList_Success、CustomInputOutputOffset_PeerOutputIsAtomic_Failed、CustomInputOutputOffset_PeerInputIsRef_Failed 6. ST:CustomInputOutputOffset_WithInputOffsetList_Success ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定 ## 其他信息 该属性用于支持特定场景下输入输出需要不同 offset 的内存排布需求,避免 ref 机制强制将输出 offset 刷新为与输入一致。GetCustomOffset 仅在同时设置 ATTR_NAME_CUSTOM_INPUT_OUTPUT_OFFSET 和 ATTR_NAME_OUTPUT_REUSE_INPUT 时生效,且仅支持单输入单输出节点。 See merge request: cann/ge!4015 | 3 个月前 | |
【PR】: feat:autofuse支持extendconv2d Co-authored-by: linchujia525<1165980433@qq.com> # message auto-generated for no-merge-commit merge: !4290 merge develop into develop 【PR】: feat:autofuse支持extendconv2d Created-by: weixin_45675704 Commit-by: linchujia525 Merged-by: cann-robot Description: # Pull Request ## 描述 autofuse原有支持Conv2DV2的自动融合,现新增对ExtendConv2D自动融合的支持。 主要变更: conv2d.cc 增加 IM- PL_OP_INFER_SYMBOL_SHAPE_INNER(ExtendConv2D);pad_mode 在属性下标 7(round_mode 占 6) - LowerExtendConv2D → InnerLowerConv2D(..., true);按 bias/scale0 选 ExtendConv2D / Bias / Scale / BiasScale;未连接的 y1 走 StoreIgnoredOutput,避免 Extern Fallback - lowering 前 CompleteStaticSymbolicShapeForConv:ExtendConv2D 静态输出若没挂 SymbolicDescAttr 则补齐 - IsStaticShape 只看本次 lowering 的连通边,optional 占位不再误判 - CreateConvSubgraphAttr 覆盖 ExtendConv2D:按真实锚点连边;断边 optional 用 Data 占位;缺 IR 名则 AppendIrAttrName("ascendc_op_para_size");缺值则默认 2MB(kDefaultAscendcOpParaSize);filter 同步 FORMAT_FRACTAL_Z - IsCubeNodeType / skip-lifting 增加 4 种 ExtendConv2D ASCIR - backend_utils 等按 cube 处理 ExtendConv2D - vendored ascir_ops.h 增加 ExtendConv2D* - 中英文 autofuse_extend- _conv2d_cv_fusion.md、autofuse_extend_conv2d_llt.md;infer_shape.md 同步 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [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!4290 | 1 个月前 | |
fix: 删除硬编码DT_MAX边界值的测试用例&&gaf用例修复 Co-authored-by: yelongjian<yelongjian1@huawei.com> # message auto-generated for no-merge-commit merge: !4846 merge fix/remove-dtmax-hardcoded-tests into develop fix: 删除硬编码DT_MAX边界值的测试用例&&gaf用例修复 Created-by: yelongjian Commit-by: yelongjian Merged-by: cann-robot Description: # Pull Request ## 描述 新镜像 CANN 包新增 DT_HIFLOAT4_SCALE 数据类型(DT_MAX 从 43 变为 44),导致以下硬编码 DT_MAX 边界值的测试用例失败: - InferenceRuleUtest.InvalidDtype1、InvalidDtype2、InvalidDtype3(C++,inference_rule_unittest.cc) - test_tensor_desc_rejects_data_type_boundary(Python,python_custom_op_proto_test.py) 本次删除这些硬编码 DT_MAX 的测试用例,后续改为动态获取 DT_MAX 值。 ## 变更类型 - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue ## 如何测试 1. 在新镜像(lv6_v2.1006)环境中运行 UT_Test_parser 和 UT_Test_python,确认删除的用例不再报错 2. 确认其余测试用例不受影响 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 删除的用例均因硬编码 DT_MAX=43 导致在新 CANN 包(DT_MAX=44)下断言失败,属于测试用例本身未适配 DT_MAX 动态变化的问题。 See merge request: cann/ge!4846 | 1 个月前 | |
回退: 扩展autofuse lowering算子覆盖并修复lowering后控制边成环 Co-authored-by: xiebangrui2025<xiebangrui@huawei.com> # message auto-generated for no-merge-commit merge: !5165 merge revert-mr-5004-1790222981481-auto into develop 回退: 扩展autofuse lowering算子覆盖并修复lowering后控制边成环 Created-by: xiebangrui2025 Commit-by: xiebangrui2025 Merged-by: cann-robot Description: ## 描述 回退PR https://gitcode.com/cann/ge/pull/5004。 **解决的问题:** 1. **六个算子缺少 lowering 注册**: Expand/ExpandD/Adds/SqueezeV3/UnsqueezeV3/UnsqueezeV3D。lowering 按算子类型**精确字符串匹配**(lowerings_.find(node->GetType()),无别名/fallback 机制),这些算子落在 autofuse 融合簇内时只能整体回退 FallbackLowering,无法参与融合优化。 2. **lowering 后控制边成环(bugfix)**:常量折叠产生的动态常量若仅作为编译期元数据输入(如 Reshape/Expand 的 shape、UnsqueezeV3 的 axes),其值已在编译期固化进 kernel、运行时不读取。原先 lowering 降级时对这类 unused input 无条件挂控制边到 asc 节点,会与 Lifting 阶段 RecoverInitControlEdge 恢复的生成保序边方向相反,当融合簇横跨原图链两端时闭合出拓扑环(CycleDetector 在边恢复之前已运行完毕,对该环不可见),导致图非法。 **修复方案:** | 文件 | 改动 | |------|------| | lowering_impl.cpp | 新增六个 lowering 注册(详见下) | | autofuse_utils.cpp | view_type 纯 view 算子列表补充 SqueezeV3/UnsqueezeV3,纯维度变形算子不计入 compute 统计,避免 SqueezeV3-only 的 kernel box 被误生成 kernel 及 cube 计数偏差 | | lowerings.cpp | lowering 后挂控制边前识别 _is_from_constant_folding 来源的动态常量并跳过(判定方式与 CutCtrEdgeIfNeed 一致);其生成序仍由自身控制入边保证,被跳过的边只传递顺序语义且 asc 节点运行时不读取该值,不丢失必要同步 | **六个 lowering 实现要点:** - **Adds**:Muls 的加法对偶(y = x + value 标量广播加)。标量经 scientific 格式定点字符串构造——fixed(7) 定点格式对绝对值小于 5e-8 的 float 值会输出 0.0000000,精度静默丢失。 - **SqueezeV3**:axes 可作为输入或属性传入;axes 未连接**或已连接但为空 tensor** 时均按参考实现 ProcessSqueezeAxes 语义收集全部可证明为 1 的维度(修复空 tensor 时恒等不 squeeze 的语义分叉);负 axis 按输入 rank 归一化;符号维度无法判定为 1 时跳过,与 shape 推导侧 CalSqueezeOutShape 行为一致。 - **Expand/ExpandD**:与 BroadcastTo 同构(兼容 ONNX Expand 语义,shape 输入的值已由符号化推导固化为输出维度);ExpandD 为 shape 属性变体,复用 Expand 函数体。 - **UnsqueezeV3/UnsqueezeV3D**:**负 axis 按最终输出 rank(input_rank + axes.size())归一化**——修复归一化基准错误(原实现按中间态 rank 归一化,unsqueeze(x, -1) 会得到 [a,1,b],应为 [a,b,1],与参考实现 ProcessUnsqueezeAxes 语义对齐);排序去重后逐维展开。 - SqueezeV3/UnsqueezeV3 按 develop 本地 Squeeze/Unsqueeze 模式补 loop::AddReshapeAxisChange。 **新增测试(4 UT,基于 autofusion_ut 链接生产代码,规避 autofuse_test 中 stub 副本的虚假覆盖):** - UnsqueezeV3 负 axis 按最终输出 rank 归一化:unsqueeze(x, -1) 得到 [a,b,1] 而非 [a,1,b] - SqueezeV3 已连接但为空的 axes tensor:按缺省语义收集全部值为 1 的维度,而非恒等不 squeeze - Adds 小值标量 scientific 格式定点构造:float(1e-8) 保留有效数字(fixed(7) 会静默输出 0.0000000) - Expand lowering 注册:与 BroadcastTo 同构,可证明的符号广播 [s0,1]->[s0,4] 不降级为 extern kernel ## 变更类型 - [x] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue ## 如何测试 1. 全量编译 ge_compiler 通过 2. autofusion_ut 984/984 通过(含 4 个新增用例) ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 单 commit 合入,含生产代码与新增测试(4 UT,位于 loop_lowering_manager_node_lowering_unittest.cpp)。 See merge request: cann/ge!5165 | 28 天前 | |
【PR】: feat:autofuse支持extendconv2d Co-authored-by: linchujia525<1165980433@qq.com> # message auto-generated for no-merge-commit merge: !4290 merge develop into develop 【PR】: feat:autofuse支持extendconv2d Created-by: weixin_45675704 Commit-by: linchujia525 Merged-by: cann-robot Description: # Pull Request ## 描述 autofuse原有支持Conv2DV2的自动融合,现新增对ExtendConv2D自动融合的支持。 主要变更: conv2d.cc 增加 IM- PL_OP_INFER_SYMBOL_SHAPE_INNER(ExtendConv2D);pad_mode 在属性下标 7(round_mode 占 6) - LowerExtendConv2D → InnerLowerConv2D(..., true);按 bias/scale0 选 ExtendConv2D / Bias / Scale / BiasScale;未连接的 y1 走 StoreIgnoredOutput,避免 Extern Fallback - lowering 前 CompleteStaticSymbolicShapeForConv:ExtendConv2D 静态输出若没挂 SymbolicDescAttr 则补齐 - IsStaticShape 只看本次 lowering 的连通边,optional 占位不再误判 - CreateConvSubgraphAttr 覆盖 ExtendConv2D:按真实锚点连边;断边 optional 用 Data 占位;缺 IR 名则 AppendIrAttrName("ascendc_op_para_size");缺值则默认 2MB(kDefaultAscendcOpParaSize);filter 同步 FORMAT_FRACTAL_Z - IsCubeNodeType / skip-lifting 增加 4 种 ExtendConv2D ASCIR - backend_utils 等按 cube 处理 ExtendConv2D - vendored ascir_ops.h 增加 ExtendConv2D* - 中英文 autofuse_extend- _conv2d_cv_fusion.md、autofuse_extend_conv2d_llt.md;infer_shape.md 同步 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [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!4290 | 1 个月前 | |
fix: 删除硬编码DT_MAX边界值的测试用例&&gaf用例修复 Co-authored-by: yelongjian<yelongjian1@huawei.com> # message auto-generated for no-merge-commit merge: !4846 merge fix/remove-dtmax-hardcoded-tests into develop fix: 删除硬编码DT_MAX边界值的测试用例&&gaf用例修复 Created-by: yelongjian Commit-by: yelongjian Merged-by: cann-robot Description: # Pull Request ## 描述 新镜像 CANN 包新增 DT_HIFLOAT4_SCALE 数据类型(DT_MAX 从 43 变为 44),导致以下硬编码 DT_MAX 边界值的测试用例失败: - InferenceRuleUtest.InvalidDtype1、InvalidDtype2、InvalidDtype3(C++,inference_rule_unittest.cc) - test_tensor_desc_rejects_data_type_boundary(Python,python_custom_op_proto_test.py) 本次删除这些硬编码 DT_MAX 的测试用例,后续改为动态获取 DT_MAX 值。 ## 变更类型 - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue ## 如何测试 1. 在新镜像(lv6_v2.1006)环境中运行 UT_Test_parser 和 UT_Test_python,确认删除的用例不再报错 2. 确认其余测试用例不受影响 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 删除的用例均因硬编码 DT_MAX=43 导致在新 CANN 包(DT_MAX=44)下断言失败,属于测试用例本身未适配 DT_MAX 动态变化的问题。 See merge request: cann/ge!4846 | 1 个月前 |