文件最后提交记录最后更新时间
基于泛化工程新增streamk_matmul单独样例 Co-authored-by: sunhao_hw<sunhao164@h-partners.com> # message auto-generated for no-merge-commit merge: !410 merge streamk into master 基于泛化工程新增streamk_matmul单独样例 Created-by: sunhao_hw Commit-by: sunhao_hw Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 从泛化工程中抽离出独立的streamk_matmul样例,支持尾轮切分,将尾轮的计算量直接均分到所有计算核心上 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #123--> ## 原因 <!--说明此次改动的目的、解决的问题等,应与类型标签匹配 --> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 泛化200例精度通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/catlass!4105 个月前
基于泛化工程新增streamk_matmul单独样例 Co-authored-by: sunhao_hw<sunhao164@h-partners.com> # message auto-generated for no-merge-commit merge: !410 merge streamk into master 基于泛化工程新增streamk_matmul单独样例 Created-by: sunhao_hw Commit-by: sunhao_hw Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 从泛化工程中抽离出独立的streamk_matmul样例,支持尾轮切分,将尾轮的计算量直接均分到所有计算核心上 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #123--> ## 原因 <!--说明此次改动的目的、解决的问题等,应与类型标签匹配 --> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 泛化200例精度通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/catlass!4105 个月前
基于泛化工程新增streamk_matmul单独样例 Co-authored-by: sunhao_hw<sunhao164@h-partners.com> # message auto-generated for no-merge-commit merge: !410 merge streamk into master 基于泛化工程新增streamk_matmul单独样例 Created-by: sunhao_hw Commit-by: sunhao_hw Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 从泛化工程中抽离出独立的streamk_matmul样例,支持尾轮切分,将尾轮的计算量直接均分到所有计算核心上 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #123--> ## 原因 <!--说明此次改动的目的、解决的问题等,应与类型标签匹配 --> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 泛化200例精度通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/catlass!4105 个月前
README.md

StreamkMatmul Example Readme

代码组织

├── 37_streamk_matmul
│   ├── CMakeLists.txt     # CMake编译文件
│   ├── README.md
│   └── streamk_matmul.cpp # 主文件

模板说明

该模板为切尾轮基本块的多核切K模板,通过切分尾轮基本块的K,划分出更多的任务块,从而利用更多的核心参与尾轮的基本块计算。 该模板切分是将尾轮的计算量直接均分到所有计算核心上。

# 编译指定用例
bash scripts/build.sh 37_streamk_matmul
cd output/bin
# 可执行文件名 |矩阵m轴|n轴|k轴|Device ID
# Device ID可选,默认为0
./37_streamk_matmul 256 512 1024 0

执行结果如下,说明精度比对成功。

Compare success.

使用场景说明

设矩阵Shape为M N K, L1上的分块大小为m1 n1 k1,AI Core数量为C,那么可以划分出来的基本块数量为B = CeilDiv(M, m1) * CeilDiv(N, n1),计算轮次为B / C,如果B % C > 0,那么还需要计算一个尾轮, 当B / C > 1B % C <= C * 0.8时候,采用该模板可能获取较优的性能。

测试性能建议注释掉精度比较代码。