矩阵乘操作【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills1. 概述HFusion 方言提供矩阵乘操作包括微缩放格式矩阵乘matmul_mx和分组矩阵乘group_matmul。这些操作是 NPU Cube 计算单元的核心负载。源码参考HFusionOps.td、HFusionNamedStructuredOps.yaml2. matmul_mx2.1 功能执行微缩放Microscaling格式的矩阵乘法输入通过缩放因子隐式缩放。常用于 FP8/FP4 等量化数据类型。计算公式C (A * scale_a) dot (B * scale_b)。微缩放格式遵循 OCP Microscaling Formats (MX) 规范https://www.opencompute.org/documents/ocp-microscaling-formats-mx-v1-0-spec-final-pdf2.2 操作签名操作数/结果类型说明inputAShapedTypeOf[F8E4M3FN, F8E5M2]左矩阵inputBShapedTypeOf[F8E4M3FN, F8E5M2]右矩阵scaleAShapedTypeOf[UI8, I8]左矩阵缩放因子scaleBShapedTypeOf[UI8, I8]右矩阵缩放因子accShapedTypeOf[AnyFloat]累加器DPS initresultShapedTypeOf[AnyFloat]输出结果2.3 TraitsPureDestinationStyleOpInterfaceBiShengIRAggregatedOpInterface支持 decomposeOperation2.4 MLIR 示例%result hfusion.matmul_mx ins(%a, %b, %sa, %sb : tensor16x32xf8E4M3FN, tensor32x64xf8E4M3FN, tensor2x2xui8, tensor2x4xui8) outs(%acc : tensor16x64xf32) - tensor16x64xf322.5 BuilderOpBuilder(ins Value:$inputA, Value:$inputB, Value:$scaleA, Value:$scaleB, Value:$acc)3. group_matmul3.1 功能执行分组矩阵乘法用于 MoEMixture of Experts等场景。每个 Expert 的权重矩阵与其分配的 Token 进行矩阵乘。3.2 操作签名操作数/结果类型角色w1input_tensor (type_var: T1)Expert 权重矩阵shape_map:(d0, d1, d2) - (d2, d1, d0)tokensinput_tensor (type_var: T2)Token 嵌入shape_map:(d0, d1, d2) - (d1, d2)tokens_per_expertinput_tensor (type_var: T3)每 Expert 的 Token 数shape_map:(d0, d1, d2) - (1)outputoutput_tensor (type_var: T4)输出shape_map:(d0, d1, d2) - (d0, d0)3.3 Indexing Mapsaffine_map(d0, d1, d2) - (d2, d1, d0) // w1 affine_map(d0, d1) - (d0, d1) // tokens affine_map(d0) - (0) // tokens_per_expert affine_map(d0, d1, d2) - (d0, d0) // output3.4 Iterator Types[parallel, parallel, reduction]3.5 MLIR 示例%result hfusion.group_matmul ins(%w1, %tokens, %tokens_per_expert : tensor?x?x?xf32, tensor?x?xf32, tensor1xi64) outs(%output : tensor?x?xf32)4. MmMapMode 枚举枚举值助记符说明CoreOpcore_op核心操作模式MacroInstrmacro_instr宏指令模式5. 数据格式说明5.1 FP8 格式类型说明F8E4M3FN4 位指数、3 位尾数无无穷用于前向传播F8E5M25 位指数、2 位尾数支持无穷用于反向传播5.2 微缩放格式微缩放格式将一组元素共享一个缩放因子典型配置为每 32 个元素共享 1 个 UI8 缩放因子。这种格式在保持精度的同时大幅减少了存储和计算开销。【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考