文件最后提交记录最后更新时间
新增A8W4伪量化模版 Co-authored-by: z00954147<zhuxiang45@huawei.com> # message auto-generated for no-merge-commit merge: !576 merge master into master 新增A8W4伪量化模版 Created-by: zzzx9 Commit-by: z00954147 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 新增A8W4 Mx Matmul伪量化模版样例。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> ## 原因 <!--说明此次改动的目的、解决的问题等,应与类型标签匹配 --> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述: 新增Tile层MxA8W4模版 See merge request: cann/catlass!57625 天前
[bugfix] 修复A8W4 MX Matmul FIX_M同步缺失、gen_data性能及README执行路径问题 Co-authored-by: longjihui<longjihui@huawei.com> # message auto-generated for no-merge-commit merge: !614 merge bugfix_a8w4_matmul into master [bugfix] 修复A8W4 MX Matmul FIX_M同步缺失、gen_data性能及README执行路径问题 Created-by: longjihui Commit-by: longjihui Merged-by: cann-robot Description: ## 描述 1. block_mmad_mx_a8w4.hpp: 在主循环前添加WaitFlag<FIX_M>同步, 与block_mmad_mx_tla.hpp保持一致,修复L0C_STAGES=2或大shape下 L0C_STAGES=1时卡死的问题。 2. gen_data.py: 参考样例53(FP8)和54(FP4)的优化方式重写量化逻辑, FP8采用searchsorted向量化LUT量化和位提取式E8M0指数计算, FP4采用块级向量化量化和nibble打包,消除逐元素循环。 3. README.md: 执行命令改为先cd output/bin再执行,避免找不到bin文件。 ## 关联的Issue [https://gitcode.com/cann/catlass/issues/188](https://gitcode.com/cann/catlass/issues/188) ## 原因 <!--说明此次改动的目的、解决的问题等,应与类型标签匹配 --> ## 测试 ![image.png](https://raw.gitcode.com/user-images/assets/7631999/4a8b5928-bb44-43e0-a684-cf90b4cff03f/image.png 'image.png') ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [x] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/catlass!61415 天前
新增A8W4伪量化模版 Co-authored-by: z00954147<zhuxiang45@huawei.com> # message auto-generated for no-merge-commit merge: !576 merge master into master 新增A8W4伪量化模版 Created-by: zzzx9 Commit-by: z00954147 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 新增A8W4 Mx Matmul伪量化模版样例。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> ## 原因 <!--说明此次改动的目的、解决的问题等,应与类型标签匹配 --> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述: 新增Tile层MxA8W4模版 See merge request: cann/catlass!57625 天前
[bugfix] 修复A8W4 MX Matmul FIX_M同步缺失、gen_data性能及README执行路径问题 Co-authored-by: longjihui<longjihui@huawei.com> # message auto-generated for no-merge-commit merge: !614 merge bugfix_a8w4_matmul into master [bugfix] 修复A8W4 MX Matmul FIX_M同步缺失、gen_data性能及README执行路径问题 Created-by: longjihui Commit-by: longjihui Merged-by: cann-robot Description: ## 描述 1. block_mmad_mx_a8w4.hpp: 在主循环前添加WaitFlag<FIX_M>同步, 与block_mmad_mx_tla.hpp保持一致,修复L0C_STAGES=2或大shape下 L0C_STAGES=1时卡死的问题。 2. gen_data.py: 参考样例53(FP8)和54(FP4)的优化方式重写量化逻辑, FP8采用searchsorted向量化LUT量化和位提取式E8M0指数计算, FP4采用块级向量化量化和nibble打包,消除逐元素循环。 3. README.md: 执行命令改为先cd output/bin再执行,避免找不到bin文件。 ## 关联的Issue [https://gitcode.com/cann/catlass/issues/188](https://gitcode.com/cann/catlass/issues/188) ## 原因 <!--说明此次改动的目的、解决的问题等,应与类型标签匹配 --> ## 测试 ![image.png](https://raw.gitcode.com/user-images/assets/7631999/4a8b5928-bb44-43e0-a684-cf90b4cff03f/image.png 'image.png') ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [x] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/catlass!61415 天前
README.md

A8W4MxMatmul Example Readme

注意:社区包暂不支持 950 能力,后续支持的版本敬请期待

功能介绍

  • 演示 Ascend 950 上的伪量化场景下的Mx Matmul矩阵乘法:左矩阵 A与伪量化后的右矩阵 B 经 MX 缩放(float8_e8m0)后在 Cube 上完成乘加,输出为 FP32。
  • 本示例中 A元素类型为float8_e4m3_t,B元素类型为 float4_e2m1x2_t;缩放因子为 float8_e8m0_t。未启用 Bias(ElementBiasvoid)。
  • 默认布局为 A RowMajor、B ColumnMajor、C RowMajor,与 gen_data.pytrans_a=0, trans_b=1 时生成的数据一致。

代码组织

├── 59_ascend950_a8w4_mx_matmul
│   ├── CMakeLists.txt     # CMake编译文件
│   ├── README.md
│   ├── gen_data.py
│   └── a8w4_mx_matmul.cpp # 主文件

使用示例

  • 获取代码之后编译相应的算子可执行文件,可参考quickstart,本用例为 Ascend950(3510)算子,编译时需加 -DCATLASS_ARCH=3510
  • 执行算子
# 编译指定用例
bash scripts/build.sh 59_ascend950_a8w4_mx_matmul -DCATLASS_ARCH=3510
# 生成测试样例(在 examples/59_ascend950_a8w4_mx_matmul/data 下生成 input/ 与 golden/)
python3 examples/59_ascend950_a8w4_mx_matmul/gen_data.py 128 128 128 0 1
# 输入参数分别对应 m, n, k, trans_a, trans_b
# trans_a表示A矩阵是否转置,0是不转置,1是转置
# trans_b表示B矩阵是否转置,0是不转置,1是转置
# 执行测试样例
cd output/bin
./59_ascend950_a8w4_mx_matmul 128 128 128 0
# 可执行文件名 |矩阵m轴|n轴|k轴|Device ID
# Device ID可选,默认为0

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

Compare success.

使用说明

1、 gen_data.py的输入支持trans_a和trans_b,但59_ascend950_a8w4_mx_matmul可执行文件不支持,仅仅是trans_a为0及trans_b为1的example示例。

若要对应转置情况请修改example示例中的layout,因为layout隐式表征转置状态,即layout::RowMajor表示不转置,layout::ColumnMajor表示转置。

其对应关系如下表:

trans_a trans_b LayoutA LayoutB
0 0 layout::RowMajor layout::RowMajor
0 1 layout::RowMajor layout::ColumnMajor
1 0 layout::ColumnMajor layout::RowMajor
1 1 layout::ColumnMajor layout::ColumnMajor

2、 本example完成mx量化矩阵乘: C = (MxScaleA x A) * (MxScaleB x B) + Bias A、B支持数据类型为float8_e4m3和float4_e2m1,B矩阵伪量化为float8_e4m3后参与cube计算 MxScaleA、MxScaleB支持数据类型为float8_e8m0

其中对于MxScaleA、MxScaleB的数据排布要求如下: 当A为RowMajor时,MxScaleA的shape为(m, ceil(k/64), 2) 当A为ColumnMajor时,MxScaleA的shape为(ceil(k/64), m, 2) 当B为RowMajor时,MxScaleB的shape为(ceil(k/64), n, 2) 当B为ColumnMajor时,MxScaleB的shape为(n, ceil(k/64), 2)