| 【refactor】: 新增表达式转换结构体,重构代码生成参数为表达式类型
Co-authored-by: chenyukai<chenyukai4@huawei.com>
# message auto-generated for no-merge-commit merge:
!583 merge br_c00826661_apicall0530 into develop
【refactor】: 新增表达式转换结构体,重构代码生成参数为表达式类型
Created-by: chenyukai
Commit-by: chenyukai
Merged-by: cann-robot
Description:
# Pull Request
## 描述
"codegen生成ApiParam,用来生成dump图和辅助att建模"需求的前置重构
主要修改:
1. 新增表达式转换框架
- 新增 expression_convert_struct.h/cpp,定义 ExpressionItem 和 CombinedExpression 结构体
- 支持多种表达式转换方式(Size, ActualSize, 组合表达式等)
- 新增工厂函数 ExprItemFactory 和 CombinedExprFactory
- 新增循环变量乘表达式转换方式 kLoopVarTimesSize/kLoopVarTimesActualSize
2. 重构 CodegenApiParam 参数结构体
- DataCopyBaseParams: 将 string 字段改为 CombinedExpression
- DataCopyLoopModeParams: 将 string 字段改为 CombinedExpression
- 新增 DmaParamsExpr 和 LoopModeParamsExpr 表达式版本结构体
3. 新增表达式版本的函数
- SetDmaParamsExpr: SetDmaParams 的表达式版本
- SetLoopModeParamsExpr: SetLoopModeParams 的表达式版本
- CalcInnerOffsetExpr: CalcInnerOffset 的表达式版本,支持循环变量乘stride
4. 重构代码生成函数
- BuildDataCopyApiParamInNormal: 入参 gm_offset 改为 CombinedExpression 类型
- BuildDataCopyBaseParams: 使用 SetDmaParamsExpr
- BuildDataCopyLoopModeParams: 使用 SetLoopModeParamsExpr
- TransposeRegApiCall::BuildApiParam: input/output_inner_offset 改为表达式类型
5. 修改调用方
- reg_load_api_call.cpp: 构建 gm_offset 表达式传入
- reg_store_api_call.cpp: 构建 gm_offset 表达式传入
- reg_transpose_api_call.cpp: 使用 CalcInnerOffsetExpr 计算循环偏移
6. 更新 UT 测试预期
- 组合表达式输出添加括号包裹
## 变更类型
请选择本次引入的变更类型:
<!-- [x] 表示选中 -->
- [ ] 🐛 Bug 修复
- [ ] ✨ 新功能
- [ ] 💄 代码风格更新(格式化,局部变量)
- [x] ♻️ 重构(既不修复错误也不增加功能的代码变动)
- [ ] 📦 构建过程或辅助工具的变动
- [ ] 📝 文档内容更新
## 关联的Issue
<!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 -->
## 如何测试
当前冒烟和每日用例看护
## 核对清单
<!-- [x] 表示选中 -->
- [x] 我的代码遵循了项目的代码风格
- [x] 我已对代码进行了自测
- [ ] 我已更新了相关的文档
- [x] 我在标题中使用了合适的类型标签(如:feat:, fix:)
- [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等
## 其他信息
在此添加任何其他关于本次 PR 的说明。
See merge request: cann/graph-autofusion!583 | 2 天前 |