文件最后提交记录最后更新时间
文档低错整改 Co-authored-by: sunhao_hw<sunhao203@huawei.com> # message auto-generated for no-merge-commit merge: !638 merge debug into master 文档低错整改 Created-by: sunhao_hw Commit-by: sunhao_hw Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> ## 原因 <!--说明此次改动的目的、解决的问题等,应与类型标签匹配 --> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/catlass!6385 天前
泛化工程:新增模板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!3984 个月前
代码清理 Co-authored-by: yuantao<taoyuan18@huawei.com> # message auto-generated for no-merge-commit merge: !520 merge common into master 代码清理 Created-by: yuantao_ Commit-by: yuantao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 函数增加static 位移运算符采用无符号参数 解决自包含问题 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> ## 原因 <!--说明此次改动的目的、解决的问题等,应与类型标签匹配 --> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码更新 See merge request: cann/catlass!5202 个月前
python扩展支持build.sh的编译选项,支持异步模式 Co-authored-by: yuantao<taoyuan18@huawei.com> # message auto-generated for no-merge-commit merge: !439 merge pyext into master python扩展支持build.sh的编译选项,支持异步模式 Created-by: yuantao_ Commit-by: yuantao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #123--> ## 原因 <!--说明此次改动的目的、解决的问题等,应与类型标签匹配 --> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 1. 使用OpApiV2调用,支持异步模式 2. 使用临时环境变量传入CMake编译选项,使python extension支持打印、msdebug、sanitizer等功能 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [x] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/catlass!4392 个月前
切换最低兼容版本为CANN 8.5.0;使用AscendC CMake构建系统编译 Co-authored-by: yuantao<taoyuan18@huawei.com> # message auto-generated for no-merge-commit merge: !461 merge asc into master 切换最低兼容版本为CANN 8.5.0;使用AscendC CMake构建系统编译 Created-by: yuantao_ Commit-by: yuantao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 1. 适配asc+CMake编译系统。 2. 对于适配的调试特性(DumpTensor),在新编译系统引入后不再需要,去除相关代码,相关编译选项添加Warning。 3. 更新对应相关文档。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue --> ## 原因 <!--说明此次改动的目的、解决的问题等,应与类型标签匹配 --> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/catlass!4611 个月前
文档新增中英文目录、低错整改,及代码实践类文档更新 Co-authored-by: sunhao_hw<sunhao203@huawei.com> # message auto-generated for no-merge-commit merge: !555 merge docs into master 文档新增中英文目录、低错整改,及代码实践类文档更新 Created-by: sunhao_hw Commit-by: sunhao_hw Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> - docs下新增zh和en目录,原始文档迁移到zh下 - 仓内文档的批量低错整改 - docs/zh/01_Practice下补充完善部分文档 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> ## 原因 <!--说明此次改动的目的、解决的问题等,应与类型标签匹配 --> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/catlass!5551 个月前
代码风格清理 Co-authored-by: yuantao<taoyuan18@huawei.com> # message auto-generated for no-merge-commit merge: !515 merge common into master 代码风格清理 Created-by: yuantao_ Commit-by: yuantao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> - 函数入口都用static - 头文件保证直接引用 - 条件语句的条件保证为bool - 补充extern "C" 标志 - 删除没有用到的函数 - 删除没有用到的注释 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> ## 原因 <!--说明此次改动的目的、解决的问题等,应与类型标签匹配 --> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/catlass!5152 个月前
README.md

DynamicOptimizedMatmul Example Readme

1 背景

在当今高性能计算和深度学习领域,矩阵乘法(Matmul)作为核心算子,其计算效率和泛化性的重要性无需赘述。对计算效率来说,常见的评价指标是算力利用率,也就是实际Flops/理论Flops。而泛化性很难以单一指标评价,在一些业务场景中,Matmul的输入范围变化很大,如推荐场景,MNK变化范围在100000量级,要求在这个范围下,整体有一个不错的性能,也就是泛化性的要求。相比于特定场景(某一类shape)、特定shape的性能要求来说,泛化性提出了更高的要求。

2 文档索引和约束说明

2.1 工程说明

泛化Matmul工程结构说明请参考:工程结构说明

工程默认编译成静态库,如果想编译成动态库,请把CMakeLists.txt中的STATIC改为SHARED,并手动export动态库路径。 工程编译前会调用python脚本生成代码,具体包括调用各模板的外围代码,以及launch_map.h(包含tilingKey和具体Kernel的映射关系)。

DynamicOptimizedMatmul根据shape动态确定Tiling参数,并尝试选择最好的模板进行计算,尽力获取最优性能,但是不保证是最优性能。

2.2 模板文档

模板名称 说明
CommonMatmul 基础模板
SmallMatmul 文档待补充...
MultiCoreSplitkMatmul 多核切K模板(适用于C矩阵较小场景)
StreamkMatmul 负载更均衡的多核切K模板
SingleCoreSplitkMatmul 单核切K模板

2.3 相关约束

  1. A、B、C矩阵的数据类型支持fp16。

  2. A、B、C矩阵的数据格式支持ND(RowMajor和ColumnMajor)。

3 使用示例

  • 获取代码之后编译相应的算子可执行文件,可参考quickstart
  • 执行算子
# 编译指定用例
bash scripts/build.sh 102_dynamic_optimized_matmul
# 动态库编译,需要手动添加动态库路径到LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$PWD/output/shared_lib:$LD_LIBRARY_PATH
cd output/bin
# 可执行文件名 |矩阵m轴|n轴|k轴|LayoutA|LayoutB|Device ID
# 0 is RowMajor, 1 is ColumnMajor
./102_dynamic_optimized_matmul 256 512 1024 0 1 0

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

Compare success.

如果需要进行批量性能测试,请注释掉精度比较代码,由于精度比较使用CPU计算golden,耗时较长。