文件最后提交记录最后更新时间
【PR】:ge一月份需求合入(包含整改dflow ST、自定义算子执行Context等) Co-authored-by: jikai-tyler<jikai5@huawei.com> # message auto-generated for no-merge-commit merge: !223 merge master into master 【PR】:ge一月份需求合入(包含整改dflow ST、自定义算子执行Context等) Created-by: jikai-tyler Commit-by: jikai-tyler Merged-by: cann-robot Description: # Pull Request ## 描述 ge一月份需求合入: 1、llt测试用例相关重复stub文件清理 2、Triton入图parser解析dlopen的handle关闭 - Triton入图parser解析dlopen的handle关闭 - 补充tensorflow 中其他的入参类型 - 优化parser 解析的的代码 3、UserGraphsManager suppport gert::Tensor - UserGraphsManager及JitExecutor等RunGraphAsync入参由ge::Tensor改为gert::Tensor - 老的兼容接口Session::RunGraph/RunGraphAsync在ge_api.cc 将ge::Tensor转换为gert::Tensor,然后调用InnerSession的接口。 4、整改dflow ST中的HELPER_RES_FILE_PATH - HELPER_RES_FILE_PATH配置文件已经废弃,需要删除并整改用例使用RESOURCE_CONFIG_PATH。 - rtGetIsHeterogenous接口已经废弃,需要删除并整改用例使用RESOURCE_CONFIG_PATH环境变量。 5、注册ge错误码 - 从error_code.json文件中拆分出GE错误码,通过ErrorManager模块的对外接口REG_FORMAT_ERROR_MSG宏完成GE错误码的注册 6、使能acl目录覆盖率拦截项 7、triton入图parser解析优化 8、告警规则处理 9、refactor parser/common/tuple.h 10、fix UserGraphControl SetCompiledFlag/SetCompiledFlag 11、修复Sample问题 - Include stdint and stddef for base mdl - move CheckRunGraphMode to ge_api_v2.cc 12、自定义算子执行Context 13、fix AllRealInputsAreTheSameOutAnchor error log issue - 在Session::AddGraph时会造一个UserGraphControl实例。因此在UserGraphControl中增加compiled_flag 14、bugfix:handling excessively long name - 避免因字符串过长导致二进制匹配耗尽资源而coredump,裁剪name,只保留最开始的128字符 15、acl code check告警处理 16、modify 3rd compile para 17、修改自定义ES_API Sample问题 && README.md 18、Refined inner session to no longer retrieve GraphNode or GraphOptions via graph_id from graph_manager. 19、ES关键类PIMPL实现 && 修改命名空间 - EsCGraphBuilder, CompliantNodeBuilder, EsCTensorHolder改为PIMPL实现 - 修改AddEdgeAndUpdatePeerDesc和CompliantNodeBuilder命名空间至ge::es 20、手动实现log功能, 实现debug_print函数来定位 ## 变更类型 请选择本次引入的变更类型: <!-- [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!2234 个月前
【PR】: [autofuse] Unify Open-source repository and development repository. Co-authored-by: xingzhixiong<xingzhixiong@huawei.com> # message auto-generated for no-merge-commit merge: !237 merge master_ge_dev into master 【PR】: [autofuse] Unify Open-source repository and development repository. Created-by: xingzhixiong Commit-by: xingzhixiong Merged-by: cann-robot Description: # Pull Request ## 描述 将autofuse组件的开发仓代码归一到开源ge仓 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 2. ## 核对清单 <!-- [x] 表示选中 --> - [ ] 我的代码遵循了项目的代码风格 - [ ] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [ ] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [ ] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!2374 个月前
【PR】:ge一月份需求合入(包含整改dflow ST、自定义算子执行Context等) Co-authored-by: jikai-tyler<jikai5@huawei.com> # message auto-generated for no-merge-commit merge: !223 merge master into master 【PR】:ge一月份需求合入(包含整改dflow ST、自定义算子执行Context等) Created-by: jikai-tyler Commit-by: jikai-tyler Merged-by: cann-robot Description: # Pull Request ## 描述 ge一月份需求合入: 1、llt测试用例相关重复stub文件清理 2、Triton入图parser解析dlopen的handle关闭 - Triton入图parser解析dlopen的handle关闭 - 补充tensorflow 中其他的入参类型 - 优化parser 解析的的代码 3、UserGraphsManager suppport gert::Tensor - UserGraphsManager及JitExecutor等RunGraphAsync入参由ge::Tensor改为gert::Tensor - 老的兼容接口Session::RunGraph/RunGraphAsync在ge_api.cc 将ge::Tensor转换为gert::Tensor,然后调用InnerSession的接口。 4、整改dflow ST中的HELPER_RES_FILE_PATH - HELPER_RES_FILE_PATH配置文件已经废弃,需要删除并整改用例使用RESOURCE_CONFIG_PATH。 - rtGetIsHeterogenous接口已经废弃,需要删除并整改用例使用RESOURCE_CONFIG_PATH环境变量。 5、注册ge错误码 - 从error_code.json文件中拆分出GE错误码,通过ErrorManager模块的对外接口REG_FORMAT_ERROR_MSG宏完成GE错误码的注册 6、使能acl目录覆盖率拦截项 7、triton入图parser解析优化 8、告警规则处理 9、refactor parser/common/tuple.h 10、fix UserGraphControl SetCompiledFlag/SetCompiledFlag 11、修复Sample问题 - Include stdint and stddef for base mdl - move CheckRunGraphMode to ge_api_v2.cc 12、自定义算子执行Context 13、fix AllRealInputsAreTheSameOutAnchor error log issue - 在Session::AddGraph时会造一个UserGraphControl实例。因此在UserGraphControl中增加compiled_flag 14、bugfix:handling excessively long name - 避免因字符串过长导致二进制匹配耗尽资源而coredump,裁剪name,只保留最开始的128字符 15、acl code check告警处理 16、modify 3rd compile para 17、修改自定义ES_API Sample问题 && README.md 18、Refined inner session to no longer retrieve GraphNode or GraphOptions via graph_id from graph_manager. 19、ES关键类PIMPL实现 && 修改命名空间 - EsCGraphBuilder, CompliantNodeBuilder, EsCTensorHolder改为PIMPL实现 - 修改AddEdgeAndUpdatePeerDesc和CompliantNodeBuilder命名空间至ge::es 20、手动实现log功能, 实现debug_print函数来定位 ## 变更类型 请选择本次引入的变更类型: <!-- [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!2234 个月前
【PR】:ge一月份需求合入(包含整改dflow ST、自定义算子执行Context等) Co-authored-by: jikai-tyler<jikai5@huawei.com> # message auto-generated for no-merge-commit merge: !223 merge master into master 【PR】:ge一月份需求合入(包含整改dflow ST、自定义算子执行Context等) Created-by: jikai-tyler Commit-by: jikai-tyler Merged-by: cann-robot Description: # Pull Request ## 描述 ge一月份需求合入: 1、llt测试用例相关重复stub文件清理 2、Triton入图parser解析dlopen的handle关闭 - Triton入图parser解析dlopen的handle关闭 - 补充tensorflow 中其他的入参类型 - 优化parser 解析的的代码 3、UserGraphsManager suppport gert::Tensor - UserGraphsManager及JitExecutor等RunGraphAsync入参由ge::Tensor改为gert::Tensor - 老的兼容接口Session::RunGraph/RunGraphAsync在ge_api.cc 将ge::Tensor转换为gert::Tensor,然后调用InnerSession的接口。 4、整改dflow ST中的HELPER_RES_FILE_PATH - HELPER_RES_FILE_PATH配置文件已经废弃,需要删除并整改用例使用RESOURCE_CONFIG_PATH。 - rtGetIsHeterogenous接口已经废弃,需要删除并整改用例使用RESOURCE_CONFIG_PATH环境变量。 5、注册ge错误码 - 从error_code.json文件中拆分出GE错误码,通过ErrorManager模块的对外接口REG_FORMAT_ERROR_MSG宏完成GE错误码的注册 6、使能acl目录覆盖率拦截项 7、triton入图parser解析优化 8、告警规则处理 9、refactor parser/common/tuple.h 10、fix UserGraphControl SetCompiledFlag/SetCompiledFlag 11、修复Sample问题 - Include stdint and stddef for base mdl - move CheckRunGraphMode to ge_api_v2.cc 12、自定义算子执行Context 13、fix AllRealInputsAreTheSameOutAnchor error log issue - 在Session::AddGraph时会造一个UserGraphControl实例。因此在UserGraphControl中增加compiled_flag 14、bugfix:handling excessively long name - 避免因字符串过长导致二进制匹配耗尽资源而coredump,裁剪name,只保留最开始的128字符 15、acl code check告警处理 16、modify 3rd compile para 17、修改自定义ES_API Sample问题 && README.md 18、Refined inner session to no longer retrieve GraphNode or GraphOptions via graph_id from graph_manager. 19、ES关键类PIMPL实现 && 修改命名空间 - EsCGraphBuilder, CompliantNodeBuilder, EsCTensorHolder改为PIMPL实现 - 修改AddEdgeAndUpdatePeerDesc和CompliantNodeBuilder命名空间至ge::es 20、手动实现log功能, 实现debug_print函数来定位 ## 变更类型 请选择本次引入的变更类型: <!-- [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!2234 个月前
【PR】:ge一月份需求合入(包含整改dflow ST、自定义算子执行Context等) Co-authored-by: jikai-tyler<jikai5@huawei.com> # message auto-generated for no-merge-commit merge: !223 merge master into master 【PR】:ge一月份需求合入(包含整改dflow ST、自定义算子执行Context等) Created-by: jikai-tyler Commit-by: jikai-tyler Merged-by: cann-robot Description: # Pull Request ## 描述 ge一月份需求合入: 1、llt测试用例相关重复stub文件清理 2、Triton入图parser解析dlopen的handle关闭 - Triton入图parser解析dlopen的handle关闭 - 补充tensorflow 中其他的入参类型 - 优化parser 解析的的代码 3、UserGraphsManager suppport gert::Tensor - UserGraphsManager及JitExecutor等RunGraphAsync入参由ge::Tensor改为gert::Tensor - 老的兼容接口Session::RunGraph/RunGraphAsync在ge_api.cc 将ge::Tensor转换为gert::Tensor,然后调用InnerSession的接口。 4、整改dflow ST中的HELPER_RES_FILE_PATH - HELPER_RES_FILE_PATH配置文件已经废弃,需要删除并整改用例使用RESOURCE_CONFIG_PATH。 - rtGetIsHeterogenous接口已经废弃,需要删除并整改用例使用RESOURCE_CONFIG_PATH环境变量。 5、注册ge错误码 - 从error_code.json文件中拆分出GE错误码,通过ErrorManager模块的对外接口REG_FORMAT_ERROR_MSG宏完成GE错误码的注册 6、使能acl目录覆盖率拦截项 7、triton入图parser解析优化 8、告警规则处理 9、refactor parser/common/tuple.h 10、fix UserGraphControl SetCompiledFlag/SetCompiledFlag 11、修复Sample问题 - Include stdint and stddef for base mdl - move CheckRunGraphMode to ge_api_v2.cc 12、自定义算子执行Context 13、fix AllRealInputsAreTheSameOutAnchor error log issue - 在Session::AddGraph时会造一个UserGraphControl实例。因此在UserGraphControl中增加compiled_flag 14、bugfix:handling excessively long name - 避免因字符串过长导致二进制匹配耗尽资源而coredump,裁剪name,只保留最开始的128字符 15、acl code check告警处理 16、modify 3rd compile para 17、修改自定义ES_API Sample问题 && README.md 18、Refined inner session to no longer retrieve GraphNode or GraphOptions via graph_id from graph_manager. 19、ES关键类PIMPL实现 && 修改命名空间 - EsCGraphBuilder, CompliantNodeBuilder, EsCTensorHolder改为PIMPL实现 - 修改AddEdgeAndUpdatePeerDesc和CompliantNodeBuilder命名空间至ge::es 20、手动实现log功能, 实现debug_print函数来定位 ## 变更类型 请选择本次引入的变更类型: <!-- [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!2234 个月前
【PR】: 支持同等优先级的策略自动识别&同等优先级Tiling策略&&轴排序代码目录重构 Co-authored-by: zhang_shengjie<804425610@qq.com> # message auto-generated for no-merge-commit merge: !276 merge fix_bug2 into master 【PR】: 支持同等优先级的策略自动识别&同等优先级Tiling策略&&轴排序代码目录重构 Created-by: zhang_shengjie Commit-by: zhang_shengjie Merged-by: cann-robot Description: # Pull Request ## 描述 ### 1.支持同等优先级的策略自动识别 支持图表达的equal_order标记识别并传入到ATT tiling code生成模块; **概念定义**: - **同等优先级(Equal Priority/Order)**:指具有相同order值的切分轴 - 例如:两个轴都具有 order=1,它们被视为同等优先级 **判断逻辑**: ```cpp bool AttUtils::IsEnableEqualOrderTiling(const ModelInfo &model_info) { std::map<size_t, std::vector<std::string>> order_to_axes; // 收集所有切分轴的order信息 for (const auto &arg : model_info.arg_list) { if (AttUtils::IsTileSplitAxis(arg)) { order_to_axes[arg->order].push_back(arg->name); } } // 判断是否存在至少2个同等优先级的轴 for (const auto &pair : order_to_axes) { if (pair.second.size() >= kMaxEqualOrderAxesCount) { // 默认为2 return true; } } return false; } ``` ### 2.同等优先级Tiling策略 #### 2.1 同等优化级Tiling核心算法: **算法优先级** 1. 必须保证硬件约束(不超UB大小,不超核数大小) 2. 优先保证两根轴取相同的值 3. 优先保证UB占用率及cache line 4. 尽可能使用更多的核数 5. 在核数和UB使用率均无法调节后,再调节核内循环 **核心算法模块**: | 算法函数 | 功能描述 | |----------|----------| | GenIdentifyEqualPriorityAxes() | 识别所有同等优先级轴(后续优化到编译时) | | GenBinarySearchEqualPriorityAxes() | 二分搜索优化同等优先级轴的切分 | | GenIterativeSolveEqualPriorityAxes() | 迭代解决同等优先级轴切分 | | GenSolveEqualPriorityAxesWithDualThreshold() | 双阈值策略解决复杂场景 | | GenProcessDualMCAxes() | 处理双多核轴场景 | 其中处理两根轴均和多核切分有关的ProcessDualMCAxes的流程(若仅一根轴与多核切分有关,退化回原算法) ```mermaid flowchart TD Start([开始: ProcessDualMCAxes]) --> Input[输入: 两根多核相关轴a, b<br/>var->mc_related = true] Input --> DetermineAB{确定a轴和b轴} DetermineAB -->|上限较小| AxisA[设为a轴<br/>upper_bound_a = min上限] DetermineAB -->|上限较大| AxisB[设为b轴<br/>upper_bound_b = max上限] AxisA --> CalcLCM[计算 low_bound_both<br/>= LCM a->align, b->align] AxisB --> CalcLCM CalcLCM --> CalcUpper[计算 upper_bound_both<br/>= min upper_bound_a, upper_bound_b] CalcUpper --> Stage1[阶段1: BinaryFindUpperBoundSatisfiedUBLimit<br/>搜索范围: low_bound_both ~ upper_bound_both<br/>目标: 满足UB利用率的下限] Stage1 --> Stage1Result{调用结果?} %% 场景1:调用失败 Stage1Result -->|失败| Scene1[场景1: 调用失败] Scene1 --> Scene1Check{a->align == b->align?} Scene1Check -->|相等| Scene1_1[场景1_1: 无解<br/>返回 false] Scene1Check -->|不相等| Scene1_2[场景1_2: 设x轴为align较小者<br/>在 min~max align 间重新搜索] Scene1_2 --> Scene1_2Result{重新搜索结果?} Scene1_2Result -->|仍失败| Scene1_2_Fail[返回 false + WARNING] Scene1_2Result -->|成功| Scene1_2_Success[继续到阶段2] %% 场景2:调用成功,low_bound_both_ub == upper_bound_both Stage1Result -->|成功 =| Scene2[场景2: UB空间足够大] Scene2 --> Scene2Config[配置调节范围:<br/>a轴: low_bound_both ~ upper_bound_both<br/>b轴: low_bound_both ~ upper_bound_b] %% 场景3:调用成功,low_bound_both_ub < upper_bound_both Stage1Result -->|成功 <| Scene3[场景3: UB空间有限] Scene3 --> Scene3Config[配置调节范围:<br/>a、b轴: low_bound_both ~ low_bound_both_ub] %% 汇聚到阶段2 Scene1_2_Success --> Stage2 Scene2Config --> Stage2 Scene3Config --> Stage2 Stage2[阶段2: BinaryFindLowerBoundSatisfiedUBThresholdCond<br/>搜索范围: low_bound_both ~ low_bound_both_ub<br/>目标: 满足UB利用率上限] Stage2 --> Stage2Result{调用结果?} %% 阶段2 场景1:无法满足UB利用率 Stage2Result -->|low_bound_both_ub<br/>仍无法满足| Stage2Scene1[场景1: 无法满足UB利用率] Stage2Scene1 --> Stage2Scene1Action[upper_bound_both_ub_thr = low_bound_both_ub<br/>两根tile块均取 low_bound_both_ub<br/>返回 true 结束] %% 阶段2 场景2:low_bound_both即可满足 Stage2Result -->|low_bound_both<br/>即可满足| Stage2Scene2[场景2: low_bound_both满足] Stage2Scene2 --> Stage2Scene2Config[更新: low_bound_both = upper_bound_both_ub_thr<br/>a、b轴范围: upper_bound_both_ub_thr ~ low_bound_both_ub] %% 阶段2 场景3:在区间内部找到解 Stage2Result -->|在区间内部| Stage2Scene3[场景3: 在区间找到解] Stage2Scene3 --> Stage2Scene3Config[a轴: upper_bound_both_ub_thr ~ low_bound_both_ub<br/>b轴: upper_bound_both_ub_thr ~ upper_bound_b] %% 汇聚到阶段3 Stage2Scene2Config --> Stage3 Stage2Scene3Config --> Stage3 Stage3[阶段3: BinaryFindLowerBoundSatisfiedCoreNum<br/>支持不同上限:<br/>a轴: upper_bound_both_ub_thr ~ low_bound_both_ub<br/>b轴: upper_bound_both_ub_thr ~ upper_bound_b<br/>目标: 满足核数阈值或最大化核数] Stage3 --> Stage3Result{调用结果?} %% 阶段3 场景1:求解失败 Stage3Result -->|失败| Stage3Scene1[场景1: 均取low_bound_both_ub<br/>仍无法满足] Stage3Scene1 --> Stage3Scene1Action[a轴取 low_bound_both_ub<br/>b轴在 low_bound_both_ub ~ upper_bound_b 继续求解] Stage3Scene1Action --> Stage3Scene1Result{b轴继续求解?} Stage3Scene1Result -->|仍失败| Stage3Scene1Fail[返回 false] Stage3Scene1Result -->|成功| Stage3Scene1Success[取核数较大的解<br/>返回 true] %% 阶段3 场景2:求解成功 Stage3Result -->|成功| Stage3Scene2[场景2: 求解成功] Stage3Scene2 --> Stage3Scene2Action[a、b轴取 lower_bound_left_core_thr<br/>选择核数较大且满足约束的解<br/>返回 true] %% 结束节点 Scene1_1([返回 false]) --> End Scene1_2_Fail([返回 false]) --> End Stage2Scene1Action([返回 true]) --> End Stage3Scene1Fail([返回 false]) --> End Stage3Scene1Success([返回 true]) --> End Stage3Scene2Action([返回 true]) --> End End([结束]) %% 样式定义 classDef startEnd fill:#e74c3c,stroke:#c0392b,color:#fff classDef stage fill:#3498db,stroke:#2980b9,color:#fff classDef scene fill:#f39c12,stroke:#e67e22,color:#fff classDef decision fill:#9b59b6,stroke:#8e44ad,color:#fff classDef action fill:#27ae60,stroke:#229954,color:#fff classDef error fill:#e74c3c,stroke:#c0392b,color:#fff class Start,End startEnd class Stage1,Stage2,Stage3 stage class Scene1,Scene2,Scene3,Stage2Scene1,Stage2Scene2,Stage2Scene3,Stage3Scene1,Stage3Scene2 scene class DetermineAB,Stage1Result,Stage2Result,Stage3Result,Scene1Check,Scene1_2Result,Stage3Scene1Result decision class CalcLCM,CalcUpper,Scene1_2,Scene2Config,Scene3Config,Stage2Scene1Action,Stage2Scene2Config,Stage2Scene3Config,Stage3Scene1Action,Stage3Scene2Action action class Scene1_1,Scene1_2_Fail,Stage3Scene1Fail error ``` #### 2.2 关键函数说明 ##### 2.2.1 BinaryFindUpperBoundSatisfiedUBLimit(改造后) - **输入**:多个var,多个idx - **功能**:同时对多个var进行上限求解 - **约束**:不超UB大小 ##### 2.2.2 BinaryFindLowerBoundSatisfiedUBThresholdCond(改造后) - **输入**:多个var,多个idx - **功能**:同时对多个var进行下限求解 - **约束**:UB利用率上限 ##### 2.2.3 BinaryFindLowerBoundSatisfiedCoreNum(改造后) - **输入**:多个var,多个idx,每个var可有不同上限 - **功能**:支持不同var以不同上限进行调节 - **约束**:核数阈值 - **特殊逻辑**:若某var的二分值>其上限,则该var取其上限 ### 3.轴排序代码目录重构 拆分axes_reorder_solver_code.h超大文件到各个子文件: **重构前**: ``` solver_pass/ ├── axes_reorder_solver_code.cpp (2400+行,单个大文件) └── axes_reorder_solver_code.h ``` **重构后**: ``` solver_pass/ ├── axes_reorder_solver_code.h ├── axes_reorder_solver_autotuning.cpp (自动调优) ├── axes_reorder_solver_equal_priority.cpp (同等优先级策略) ├── axes_reorder_solver_utility.cpp (工具函数) ├── axes_reorder_solver_local_buf.cpp (本地缓冲区) ├── axes_reorder_solver_main.cpp (主入口) ├── axes_reorder_solver_class_def.cpp (类定义) ├── axes_reorder_solver_data_struct.cpp (数据结构) ├── axes_reorder_solver_core_impl.cpp (核心实现) └── axes_reorder_solver_multicore.cpp (多核切分) ``` ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: ### UT测试: tests/autofuse/ut/att/testcase/test_expr/test_is_enable_equal_order_tiling.cpp ### ST测试: 1. TEST_F(STestGenConcat, construct_single_case_for_multi_tile) 2. TEST_F(STestGenConcat, equal_priority_tiling) 3. TEST_F(STestGenConcat, equal_priority_tiling_trade_off) ### BBIT测试: 1. tc_af_auto_performance: ![image.png](https://raw.gitcode.com/user-images/assets/8371840/bea37ba6-b083-46b3-bc74-2fc5708bf278/image.png 'image.png') 2. tc_af_tf1_compare_normal_NewPrec_0013 ![image.png](https://raw.gitcode.com/user-images/assets/8371840/de53ab2f-0d90-462a-8266-a9f1b1e51986/image.png 'image.png') 3. 门槛用例tc_af_tf1_transpose_schedule_0001 ![image.png](https://raw.gitcode.com/user-images/assets/8371840/ad89d283-69c7-422b-8f9e-4f4f439f7a6e/image.png 'image.png') ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!2764 个月前