文件最后提交记录最后更新时间
【feat】支持AscirParam层统一ATT/Codegen公共参数(支持Reduce) Co-authored-by: zhang_shengjie<804425610@qq.com> # message auto-generated for no-merge-commit merge: !556 merge fix_reduce_perf_model_ascir_common into develop 【feat】支持AscirParam层统一ATT/Codegen公共参数(支持Reduce) Created-by: zhang_shengjie Commit-by: zhang_shengjie Merged-by: cann-robot Description: # Pull Request ## 描述 ### 一、主要解决的问题 #### 1.1 Reduce 参数在 Parser/Codegen/ATT 三处重复计算且不一致 此前 Reduce 算子的 ReduceSpecificParams 由 Parser 侧(reduce_specific_params_builder)独立计算并存储在 NodeInfo 结构体中,Codegen 侧(reduce_api_call_base)和 ATT 性能模型侧(ascir_reduce_api_perf_v2)各自再独立计算或直接从 NodeInfo 读取。三条路径之间没有共享机制,导致: - Parser 与 Codegen 的 merge_size / merge_times / pattern 可能不一致,难以定位问题。 - ATT 性能模型使用的 merge_size 来源于 codegen 侧的 tiling 后表达式,丢失了语义维度的信息,影响性能预估精度。 #### 1.2 缺少 Parser 与 Codegen 参数一致性校验手段 没有自动化手段在 Codegen 阶段校验 Parser 预计算参数是否与 Codegen 实时计算结果一致,参数偏差只能在运行时暴露。 ### 二、修改方案 #### 2.1 新增公共模块 ascir_node_param(4 个新文件) 新增 autofuse/common/ascir_node_param/ 目录,定义统一的 ASCIR 节点参数数据结构与构建逻辑: - **ascir_node_param.h/cpp** — 定义 AscirNodeParams(通过 OpDesc::ExtAttr 挂载到 AscNode)、ReduceNodeParams(包含 canonical_params + exprs 语义配方)、ParamExprProduct(乘法因子表达式)等核心类型。提供 GetAscirNodeParams()GetCanonicalReduceParams()ResolveForAtt()ValidateReduceNodeParams() 等公共接口。 - **ascir_param_builder.h/cpp** — 实现 EnrichAscirGraphNodeParams(),遍历图中所有节点,对 Reduce 类算子(Max/Min/Mean/Sum/Prod/Any/All 等 14 种)构建 ReduceNodeParams 并注册到节点 ExtAttr;非 Reduce 算子标记为 kSkipped。 #### 2.2 Codegen 阶段集成参数富化与 Shadow 校验 - **codegen.cpp** — 在 GenerateKernel() 入口处调用 EnrichScheduledResultAscirParams(),对所有 ScheduleGroup 中的 AscGraph 执行参数富化(去重已处理的 graph)。 - **reduce_api_call_base.cpp/h** — 新增 CheckReduceSpecificParamsForCodegen(),在 Codegen 阶段重新构建 shadow 参数并与 Parser 预计算参数逐字段比较(valid / pattern / merge_mode / merge_size / merge_times / reuse / merged_dims),不一致时通过 GELOGW 输出差异详情。 - **reduce_api_call.cpp** / **reg_reduce_api_call.cpp** — 在 Generate() 中调用 shadow check。 #### 2.3 Parser 侧重构,写入共享参数 - **reduce_specific_params_builder.cpp** — 大幅重构(净减约 120 行),FillReduceSpecificParams() 改为先调用 EnrichAscirGraphNodeParams() 注册共享参数,再从节点 ExtAttr 读取 ReduceNodeParams 回填到 NodeInfo。 - **tuning_space.h** — NodeInfo::reduce_specific_params 类型从 codegen::ReduceSpecificParams 改为 ascir_param::ReduceNodeParams。 #### 2.4 ATT 性能模型适配新结构 - **ascir_reduce_api_perf_v2.cpp** — BuildReduceContext() 改为通过 GetCanonicalReduceParams() 读取规范参数;merge_size 优先使用语义表达式(exprs.merge_size)从 output shape 重建,merge_times 通过 ResolveForAtt() 解析语义配方,提升性能预估精度。 #### 2.5 新增测试 | 测试文件 | 覆盖内容 | |---------|---------| | test_ascir_node_params.cpp(新增,239 行) | EnrichAscirGraphNodeParams 对 AR/RA/AllAxis/BlockSplit/MergedAxis 等多种 Reduce 场景的参数构建与校验 | | ascir_reduce_test_helpers.h(新增,111 行) | 测试辅助工具:ReduceTestEnvBuildParserTensorBuildReduceNodeInfo | | test_codegen_reduce_api_call.cpp(扩展,+340 行) | Shadow check 的边界场景(node 为空 / status 非 built / specific_params 类型不匹配 / shadow build 失败)及 Parser-Codegen 参数一致性验证 | | test_ascir_perf_v2.cpp(扩展) | FillReduceSpecificParams 与共享参数的集成测试 | | test_reduce_min_max_api_perf_v2.cpp(扩展) | 语义 merge_size/merge_times 在 ATT 性能模型中的验证 | ### 三、代码修改流程图 #### 3.1 模块调用关系图 ```mermaid graph TD A["codegen.cpp<br/>GenerateKernel"] -->|"EnrichScheduledResultAscirParams"| B["ascir_param_builder.cpp<br/>EnrichAscirGraphNodeParams"] B -->|"遍历节点, 构建参数"| C["ascir_node_param.cpp<br/>AscirNodeParams / ReduceNodeParams"] C -->|"SetExtAttr 挂载到 AscNode"| D["AscNode.OpDesc.ExtAttr"] D -->|"GetExtAttr 读取"| E["reduce_specific_params_builder.cpp<br/>FillReduceSpecificParams"] D -->|"GetExtAttr 读取"| F["reduce_api_call_base.cpp<br/>CheckReduceSpecificParamsForCodegen"] D -->|"GetCanonicalReduceParams"| G["ascir_reduce_api_perf_v2.cpp<br/>BuildReduceContext"] E -->|"回填 NodeInfo"| H["NodeInfo.reduce_specific_params"] H --> G F -->|"shadow 构建 + 比较"| I["GELOGW 输出差异"] style A fill:#FFD700,stroke:#B8860B,stroke-width:2px style B fill:#90EE90,stroke:#006400,stroke-width:2px style C fill:#90EE90,stroke:#006400,stroke-width:2px style D fill:#e1f5ff,stroke:#4682B4,stroke-width:2px style E fill:#FFD700,stroke:#B8860B,stroke-width:2px style F fill:#FFD700,stroke:#B8860B,stroke-width:2px style G fill:#FFD700,stroke:#B8860B,stroke-width:2px style H fill:#FFD700,stroke:#B8860B,stroke-width:2px style I fill:#FF69B4,stroke:#C71585,stroke-width:2px ``` #### 3.2 Reduce 参数构建与校验流程 ```mermaid flowchart TD Start(["EnrichAscirGraphNodeParams(graph)"]) --> Loop["遍历 graph 所有节点"] Loop --> Check{"IsReduceParamSupported?<br/>(Max/Min/Sum/Mean/Prod/Any/All...)"} Check -->|"否"| Skip["RegisterSkippedAscirNodeParams<br/>status = kSkipped"] Check -->|"是"| BuildCtx["BuildAscirParamContext<br/>提取 input/output tensor views<br/>+ loop axis views"] BuildCtx --> BuildInput["BuildReduceInput<br/>pattern / merge_size / merge_times<br/>need_multi_reduce / reuse"] BuildInput --> BuildParams["BuildReduceSpecificParams<br/>(复用 codegen 公共函数)"] BuildParams --> BuildExprs["构建语义配方<br/>exprs.merge_size / exprs.merge_times"] BuildExprs --> Validate{"ValidateReduceNodeParams<br/>语义表达式与规范参数一致性"} Validate -->|"通过"| Register["RegisterAscirNodeParams<br/>SetExtAttr 到 OpDesc<br/>status = kBuilt"] Validate -->|"失败"| Invalid["status = kInvalid"] Skip --> Next(["下一个节点"]) Register --> Next Invalid --> Next style Start fill:#90EE90,stroke:#006400,stroke-width:2px style Skip fill:#FFD700,stroke:#B8860B,stroke-width:2px style Register fill:#90EE90,stroke:#006400,stroke-width:2px style Invalid fill:#FF6347,stroke:#8B0000,stroke-width:2px style Validate fill:#FF69B4,stroke:#C71585,stroke-width:2px ``` ## 变更类型 - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 ### 一 测试用例说明 #### 1.1 单元测试 | 测试文件 | 测试用例数 | 覆盖场景 | |---------|-----------|---------| | test_ascir_node_params.cpp | 12 | AR/RA/AllAxis/MergedAxis/BlockSplit 参数构建、语义表达式校验、不支持 API 跳过、缺失 vectorized_strides 报错 | | test_codegen_reduce_api_call.cpp | 新增 6 个 shadow check 用例 | node 为空/status 非 built/类型不匹配/shadow build 失败/Rmin tile split 匹配/original parent axis 匹配 | | test_ascir_perf_v2.cpp | 新增 1 个集成用例 | FillReduceSpecificParams 写入共享参数验证 | | test_reduce_min_max_api_perf_v2.cpp | 新增 4 个用例 | 共享参数注册、不支持 API 跳过、参数缺失降级、语义 merge params 性能验证 | #### 1.2 系统测试 暂无新增 STC 用例,现有 Reduce 相关 STC 可回归验证。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 ### 验证方法 1. 编译项目确保无编译错误 2. 运行新增 UT:test_ascir_node_paramstest_codegen_reduce_api_calltest_ascir_perf_v2test_reduce_min_max_api_perf_v2 3. 回归现有 Reduce 相关 STC ### 注意事项 - NodeInfo::reduce_specific_params 类型已从 codegen::ReduceSpecificParams 变为 ascir_param::ReduceNodeParams,所有直接访问 .valid / .pattern / .merge_mode 等字段的代码需改为通过 .canonical_params.xxx 访问 - Shadow check 当前仅输出 WARNING 日志,不阻断流程,后续可根据日志结果决定是否升级为硬校验 See merge request: cann/graph-autofusion!55623 小时前
【PR】: [feat] [autofuse] add llt to autofuse. Co-authored-by: xingzhixiong<xingzhixiong@huawei.com> # message auto-generated for no-merge-commit merge: !372 merge master_llt into master 【PR】: [feat] [autofuse] add llt to autofuse. Created-by: xingzhixiong Commit-by: xingzhixiong Merged-by: cann-robot Description: # Pull Request ## 描述 增加autofuse组件的llt。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 跑ci流水线能全部通过即可 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/graph-autofusion!37221 天前
【PR】: [feat] [autofuse] add llt to autofuse. Co-authored-by: xingzhixiong<xingzhixiong@huawei.com> # message auto-generated for no-merge-commit merge: !372 merge master_llt into master 【PR】: [feat] [autofuse] add llt to autofuse. Created-by: xingzhixiong Commit-by: xingzhixiong Merged-by: cann-robot Description: # Pull Request ## 描述 增加autofuse组件的llt。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 跑ci流水线能全部通过即可 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/graph-autofusion!37221 天前
【PR】: [feat] [autofuse] add llt to autofuse. Co-authored-by: xingzhixiong<xingzhixiong@huawei.com> # message auto-generated for no-merge-commit merge: !372 merge master_llt into master 【PR】: [feat] [autofuse] add llt to autofuse. Created-by: xingzhixiong Commit-by: xingzhixiong Merged-by: cann-robot Description: # Pull Request ## 描述 增加autofuse组件的llt。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 跑ci流水线能全部通过即可 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/graph-autofusion!37221 天前
【PR】: [feat] [autofuse] add llt to autofuse. Co-authored-by: xingzhixiong<xingzhixiong@huawei.com> # message auto-generated for no-merge-commit merge: !372 merge master_llt into master 【PR】: [feat] [autofuse] add llt to autofuse. Created-by: xingzhixiong Commit-by: xingzhixiong Merged-by: cann-robot Description: # Pull Request ## 描述 增加autofuse组件的llt。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 跑ci流水线能全部通过即可 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/graph-autofusion!37221 天前
【PR】: [feat] [autofuse] add llt to autofuse. Co-authored-by: xingzhixiong<xingzhixiong@huawei.com> # message auto-generated for no-merge-commit merge: !372 merge master_llt into master 【PR】: [feat] [autofuse] add llt to autofuse. Created-by: xingzhixiong Commit-by: xingzhixiong Merged-by: cann-robot Description: # Pull Request ## 描述 增加autofuse组件的llt。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 跑ci流水线能全部通过即可 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/graph-autofusion!37221 天前
add l Co-authored-by: JaydenChu<zhumin54@huawei.com> Co-authored-by: xingzhixiong<xingzhixiong@huawei.com> # message auto-generated for no-merge-commit merge: !370 merge 5_11_1 into master 【PR】: 同步GE仓最新修改到AF仓(4.14上午11时~5.15晚,总计129个PR需要同步) Created-by: JaydenChu Commit-by: JaydenChu;xingzhixiong Merged-by: cann-robot Description: # Pull Request ## 描述 同步GE仓最新修改到AF仓(4.14上午11时~5.15晚,总计129个PR需要同步) 所有涉及PR(包含检查过不需要同步的)从编号#1904(4.14 https://gitcode.com/cann/ge/pull/1904)到#2904(5.15 http://gitcode.com/cann/ge/pull/1904) 每个实际已同步pr都对应此pr的一个commit(部分同步pr为了方便同步合并到了一个commit中) ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [x] ✨ 新功能 - [x] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [x] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 业务代码和llt编译通过 2. llt执行通过 3. 全量rdv验证通过 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/graph-autofusion!37017 天前
add l Co-authored-by: JaydenChu<zhumin54@huawei.com> Co-authored-by: xingzhixiong<xingzhixiong@huawei.com> # message auto-generated for no-merge-commit merge: !370 merge 5_11_1 into master 【PR】: 同步GE仓最新修改到AF仓(4.14上午11时~5.15晚,总计129个PR需要同步) Created-by: JaydenChu Commit-by: JaydenChu;xingzhixiong Merged-by: cann-robot Description: # Pull Request ## 描述 同步GE仓最新修改到AF仓(4.14上午11时~5.15晚,总计129个PR需要同步) 所有涉及PR(包含检查过不需要同步的)从编号#1904(4.14 https://gitcode.com/cann/ge/pull/1904)到#2904(5.15 http://gitcode.com/cann/ge/pull/1904) 每个实际已同步pr都对应此pr的一个commit(部分同步pr为了方便同步合并到了一个commit中) ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [x] ✨ 新功能 - [x] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [x] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 业务代码和llt编译通过 2. llt执行通过 3. 全量rdv验证通过 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/graph-autofusion!37017 天前
【PR】: [feat] [autofuse] add llt to autofuse. Co-authored-by: xingzhixiong<xingzhixiong@huawei.com> # message auto-generated for no-merge-commit merge: !372 merge master_llt into master 【PR】: [feat] [autofuse] add llt to autofuse. Created-by: xingzhixiong Commit-by: xingzhixiong Merged-by: cann-robot Description: # Pull Request ## 描述 增加autofuse组件的llt。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 跑ci流水线能全部通过即可 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/graph-autofusion!37221 天前
【Feat】: 生成apicall tmpbuf参数顺序统一 Co-authored-by: chenyanggong<chenyanggong@huawei.com> # message auto-generated for no-merge-commit merge: !568 merge tmp_buf_0529 into develop 【Feat】: 生成apicall tmpbuf参数顺序统一 Created-by: Yanggong98 Commit-by: chenyanggong Merged-by: cann-robot Description: # Pull Request ## 描述 统一apicall字符串生成过程中tmpbuf和actual_size参数顺序,为ApiParam适配做铺垫 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 不影响原来测试用例 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/graph-autofusion!5681 天前
【PR】: [feat] [autofuse] add llt to autofuse. Co-authored-by: xingzhixiong<xingzhixiong@huawei.com> # message auto-generated for no-merge-commit merge: !372 merge master_llt into master 【PR】: [feat] [autofuse] add llt to autofuse. Created-by: xingzhixiong Commit-by: xingzhixiong Merged-by: cann-robot Description: # Pull Request ## 描述 增加autofuse组件的llt。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 跑ci流水线能全部通过即可 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/graph-autofusion!37221 天前
【PR】: [feat] [autofuse] add llt to autofuse. Co-authored-by: xingzhixiong<xingzhixiong@huawei.com> # message auto-generated for no-merge-commit merge: !372 merge master_llt into master 【PR】: [feat] [autofuse] add llt to autofuse. Created-by: xingzhixiong Commit-by: xingzhixiong Merged-by: cann-robot Description: # Pull Request ## 描述 增加autofuse组件的llt。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 跑ci流水线能全部通过即可 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/graph-autofusion!37221 天前
【PR】: [feat] [autofuse] add llt to autofuse. Co-authored-by: xingzhixiong<xingzhixiong@huawei.com> # message auto-generated for no-merge-commit merge: !372 merge master_llt into master 【PR】: [feat] [autofuse] add llt to autofuse. Created-by: xingzhixiong Commit-by: xingzhixiong Merged-by: cann-robot Description: # Pull Request ## 描述 增加autofuse组件的llt。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 跑ci流水线能全部通过即可 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/graph-autofusion!37221 天前
add l Co-authored-by: JaydenChu<zhumin54@huawei.com> Co-authored-by: xingzhixiong<xingzhixiong@huawei.com> # message auto-generated for no-merge-commit merge: !370 merge 5_11_1 into master 【PR】: 同步GE仓最新修改到AF仓(4.14上午11时~5.15晚,总计129个PR需要同步) Created-by: JaydenChu Commit-by: JaydenChu;xingzhixiong Merged-by: cann-robot Description: # Pull Request ## 描述 同步GE仓最新修改到AF仓(4.14上午11时~5.15晚,总计129个PR需要同步) 所有涉及PR(包含检查过不需要同步的)从编号#1904(4.14 https://gitcode.com/cann/ge/pull/1904)到#2904(5.15 http://gitcode.com/cann/ge/pull/1904) 每个实际已同步pr都对应此pr的一个commit(部分同步pr为了方便同步合并到了一个commit中) ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [x] ✨ 新功能 - [x] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [x] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 业务代码和llt编译通过 2. llt执行通过 3. 全量rdv验证通过 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/graph-autofusion!37017 天前
【bugfix】解决GenerateTopnSolution函数在inductor动态shape场景编译问题 Co-authored-by: zhang_shengjie<804425610@qq.com> # message auto-generated for no-merge-commit merge: !558 merge fix_gettopn_symbol_bug into develop 【bugfix】解决GenerateTopnSolution函数在inductor动态shape场景编译问题 Created-by: zhang_shengjie Commit-by: zhang_shengjie Merged-by: cann-robot Description: # Pull Request ## 描述 ### 一、主要解决的问题 #### 1.1 TopN 搜索 tiling 生成错误 autofuse/att 生成的 tiling_func 在 TopN 搜索路径中会生成 search_tiling.set_ks0(...)。 多 group 场景下,动态 shape 变量 ks0 不在根 AutofuseTilingData 上生成 setter,而是在各 group tiling data 上生成 setter,因此编译时报 set_ks0 方法不存在。 #### 1.2 TopN 路径未复用已有 shape dim 映射规则 普通 tiling 路径已经通过 TilingSetShapeDim 按 schedule group 分发 shape 变量,并包含 IsVarUsedInScheduleGroupvar_relations 过滤逻辑。 TopN 初始化 search_tiling 时原先直接访问根 tiling data,导致多 group tiling data 结构不匹配。 ### 二、修改方案 #### 2.1 扩展 TilingSetShapeDimTilingSetShapeDim 增加 tiling_expr 参数,默认值保持为 tiling->,不影响原有普通 tiling 生成路径。 #### 2.2 TopN 搜索路径复用 group 映射 GenTopnInitSearchTiling 先将 request.symbol_values 转为局部 uint32_t 变量,再调用 TilingSetShapeDim(..., "search_tiling.")。 单 group 场景仍生成根 setter,多 group 场景生成到对应 group tiling data: ```cpp const uint32_t ks0 = static_cast<uint32_t>(request.symbol_values[idx]); search_tiling.graph0_result0_g0_tiling_data.set_ks0(ks0); search_tiling.graph0_result0_g1_tiling_data.set_ks0(ks0); ``` #### 2.3 增加多 group TopN 单元测试 新增 MultiGroupTopnShouldSetShapeDimOnGroupTilingData,覆盖 ks0 在多 group TopN 搜索 tiling 中的生成结果: - 不生成 search_tiling.set_ks0( - 生成 search_tiling.graph0_result0_g0_tiling_data.set_ks0(ks0); - 生成 search_tiling.graph0_result0_g1_tiling_data.set_ks0(ks0); ### 三、代码修改流程图 #### 3.1 多文件调用关系图 ```mermaid graph TD A[GenTopnInitSearchTiling<br/>TopN搜索tiling初始化] B[TilingSetShapeDim<br/>shape变量写入统一入口] C[codegen_tiling.h<br/>声明默认tiling表达式] D[test_codegen_tiling.cpp<br/>多group TopN UT] E[search_tiling.graph0_result0_g0_tiling_data.set_ks0<br/>group0 setter] F[search_tiling.graph0_result0_g1_tiling_data.set_ks0<br/>group1 setter] G[避免search_tiling.set_ks0<br/>根tiling data无ks0 setter] A -.-> B C -.-> B B -.-> E B -.-> F B -.-> G D -.-> A style A fill:#FFD700,stroke:#B8860B,stroke-width:2px style B fill:#FFD700,stroke:#B8860B,stroke-width:2px style C fill:#FFD700,stroke:#B8860B,stroke-width:2px style D fill:#90EE90,stroke:#006400,stroke-width:2px style E fill:#90EE90,stroke:#006400,stroke-width:2px style F fill:#90EE90,stroke:#006400,stroke-width:2px style G fill:#FF69B4,stroke:#C71585,stroke-width:2px ``` #### 3.2 函数修改流程图 ```mermaid flowchart TD Start([GenTopnInitSearchTiling]) ReadSymbol[读取origin_vars中的动态symbol] LocalVar[生成局部uint32_t变量] Dispatch[调用TilingSetShapeDim并传入search_tiling表达式] Single{是否单group} RootSetter[生成search_tiling.set_var] GroupSetter[生成search_tiling.graphX_resultY_gZ_tiling_data.set_var] Done([完成search_tiling初始化]) Start -.-> ReadSymbol ReadSymbol -.-> LocalVar LocalVar -.-> Dispatch Dispatch -.-> Single Single -.-> RootSetter Single -.-> GroupSetter RootSetter -.-> Done GroupSetter -.-> Done style Start fill:#90EE90,stroke:#006400,stroke-width:2px style Dispatch fill:#FFD700,stroke:#B8860B,stroke-width:2px style GroupSetter fill:#90EE90,stroke:#006400,stroke-width:2px ``` ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> 暂无。 ## 如何测试 ### 一 测试用例说明 #### 1.1 单元测试 新增 C++ UT MultiGroupTopnShouldSetShapeDimOnGroupTilingData,构造含 ks0 动态 size var 的多 group schedule result,验证 TopN 搜索 tiling 生成到 group tiling data。 #### 1.2 系统测试 执行 codegen 模块测试,覆盖 C++ UT 与 Python UT。 验证结果: - 脚本退出码:0 - C++ UT:662 passed, 6 skipped - Python UT:129 passed, 5 skipped ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/graph-autofusion!5586 天前
add l Co-authored-by: JaydenChu<zhumin54@huawei.com> Co-authored-by: xingzhixiong<xingzhixiong@huawei.com> # message auto-generated for no-merge-commit merge: !370 merge 5_11_1 into master 【PR】: 同步GE仓最新修改到AF仓(4.14上午11时~5.15晚,总计129个PR需要同步) Created-by: JaydenChu Commit-by: JaydenChu;xingzhixiong Merged-by: cann-robot Description: # Pull Request ## 描述 同步GE仓最新修改到AF仓(4.14上午11时~5.15晚,总计129个PR需要同步) 所有涉及PR(包含检查过不需要同步的)从编号#1904(4.14 https://gitcode.com/cann/ge/pull/1904)到#2904(5.15 http://gitcode.com/cann/ge/pull/1904) 每个实际已同步pr都对应此pr的一个commit(部分同步pr为了方便同步合并到了一个commit中) ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [x] ✨ 新功能 - [x] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [x] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 业务代码和llt编译通过 2. llt执行通过 3. 全量rdv验证通过 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/graph-autofusion!37017 天前
add l Co-authored-by: JaydenChu<zhumin54@huawei.com> Co-authored-by: xingzhixiong<xingzhixiong@huawei.com> # message auto-generated for no-merge-commit merge: !370 merge 5_11_1 into master 【PR】: 同步GE仓最新修改到AF仓(4.14上午11时~5.15晚,总计129个PR需要同步) Created-by: JaydenChu Commit-by: JaydenChu;xingzhixiong Merged-by: cann-robot Description: # Pull Request ## 描述 同步GE仓最新修改到AF仓(4.14上午11时~5.15晚,总计129个PR需要同步) 所有涉及PR(包含检查过不需要同步的)从编号#1904(4.14 https://gitcode.com/cann/ge/pull/1904)到#2904(5.15 http://gitcode.com/cann/ge/pull/1904) 每个实际已同步pr都对应此pr的一个commit(部分同步pr为了方便同步合并到了一个commit中) ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [x] ✨ 新功能 - [x] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [x] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 业务代码和llt编译通过 2. llt执行通过 3. 全量rdv验证通过 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/graph-autofusion!37017 天前