| 泛化工程:新增模板LocalPaddingCPaddingCommonMatmul,Padding C矩阵,开局部workspace
Co-authored-by: weixin_42818618<zhusongxiang1@huawei.com>
# message auto-generated for no-merge-commit merge:
!398 merge zsx/local-padding-c into master
泛化工程:新增模板LocalPaddingCPaddingCommonMatmul,Padding C矩阵,开局部workspace
Created-by: weixin_42818618
Commit-by: weixin_42818618
Merged-by: cann-robot
Description: ## 描述
<!--在这里详细描述你的改动,包括改动的原因和所采取的方法。-->
1.新增模板LocalPaddingCPaddingCommonMatmul,Padding C矩阵,使用固定大小局部workspace,由每个Cube对应的两个AIV完成RemovePadding操作。
2.使用m1Factor,n1Factor,按基本块大小(m1*m1Factor,n1*Factor)划分GM C矩阵,每个Cube每次计算m1*m1Factor,n1*n1Factor大小的完整结果块,swizzle的粒度也为(m1*m1Factor,n1*n1Factor)。
3.为PaddingMatrixND增加调用参数useSingleCore ,表示是否使用当前AIC对应的两个AIV进行Padding操作,默认为false,即采用全部AIV进行Padding。因为C矩阵开局部Workspace,每个AICORE有一个workspace,自己的workspace数据的处理由自己对应的两个AIV完成。
## 关联的Issue
<!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #123-->
## 原因
<!--说明此次改动的目的、解决的问题等,应与类型标签匹配 -->
此模板旨在优化C矩阵的写出性能,开局部workspace,一次做一个大块,这样C矩阵的写出缓存命中率会很高,对于C矩阵写出量大且C矩阵非对齐的Shape有明显的优化效果。
## 测试
<!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。-->
针对该单模板,精度测试泛化600组case,无精度问题。
性能测试,在全量79828组case中,有69219组case优于基线,占比86.7%,平均算力利用率0.2491。
优化前,在全量79828组case中,有67940组case优于基线,占比85.1%,平均算力利用率0.2436。
## 文档更新
<!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。-->
## 类型标签
<!-- [x] 表示选中 -->
- [ ] Bug修复
- [x] 新特性
- [x] 性能优化
- [ ] 文档更新
- [ ] 其他,请描述:
See merge request: cann/catlass!398 | 4 个月前 |