A8W4MxMatmul Example Readme【免费下载链接】catlass本项目是CANN的算子模板库提供NPU上高性能矩阵乘及其相关融合类算子模板样例。项目地址: https://gitcode.com/cann/catlass注意社区包暂不支持 950 能力后续支持的版本敬请期待功能介绍演示 Ascend 950 上的伪量化场景下的Mx Matmul矩阵乘法左矩阵 A与伪量化后的右矩阵 B 经 MX 缩放float8_e8m0后在 Cube 上完成乘加输出为 FP32。本示例中 A元素类型为float8_e4m3_tB元素类型为float4_e2m1x2_t缩放因子为float8_e8m0_t。未启用 BiasElementBias为void。默认布局为 ARowMajor、BColumnMajor、CRowMajor与gen_data.py在trans_a0, trans_b1时生成的数据一致。代码组织├── 59_ascend950_a8w4_mx_matmul │ ├── CMakeLists.txt # CMake编译文件 │ ├── README.md │ ├── gen_data.py │ └── a8w4_mx_matmul.cpp # 主文件使用示例获取代码之后编译相应的算子可执行文件可参考quickstart本用例为 Ascend9503510算子编译时需加-DCATLASS_ARCH3510。执行算子# 编译指定用例 bash scripts/build.sh 59_ascend950_a8w4_mx_matmul -DCATLASS_ARCH3510 # 生成测试样例在 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是转置 # 执行测试样例 ./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_atrans_bLayoutALayoutB00layout::RowMajorlayout::RowMajor01layout::RowMajorlayout::ColumnMajor10layout::ColumnMajorlayout::RowMajor11layout::ColumnMajorlayout::ColumnMajor2、 本example完成mx量化矩阵乘 C (MxScaleA x A) * (MxScaleB x B) Bias A、B支持数据类型为float8_e4m3和float4_e2m1B矩阵伪量化为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【免费下载链接】catlass本项目是CANN的算子模板库提供NPU上高性能矩阵乘及其相关融合类算子模板样例。项目地址: https://gitcode.com/cann/catlass创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考