已合并
docs(01.06): 补充 5.1 节 ScaleA/B 三维 Shape 的硬件对齐背景说明 #752
docs(01.06): 补充 5.1 节 ScaleA/B 三维 Shape 的硬件对齐背景说明 #752
已合并
XieQianyi创建于 29 天前
1 个文件变更+6-0
@@ -363,6 +363,12 @@
363 "\n",363 "\n",
364 "其中 G 为 group size,在 MX 量化场景固定取值为32。\n",364 "其中 G 为 group size,在 MX 量化场景固定取值为32。\n",
365 "\n",365 "\n",
366+ "**ScaleA/ScaleB Shape 说明**:以 ScaleA 为例,按照 3.4 节 G 量化的定义,group size=32 时 ScaleA 的逻辑形状应为 `(m, ceil(k/32))`,ScaleB 同理。上表中的三维形状 `(m, ceil(k/64), 2)` 是出于硬件访存对齐的考虑:\n",
367+ "\n",
368+ "- `float8_e8m0` 仅占 1 字节,而硬件访存的最小粒度通常为 2 字节\n",
369+ "- 因此将 K 轴方向相邻的两个 scale 打包成 2 字节一起读取,以减少访存次数、提升带宽利用率\n",
370+ "- 当 K 为 64 的倍数时(见 5.3 节约束),`ceil(k/64) * 2 = ceil(k/32)`,二者元素总数等价\n",
371+ "\n",
366 "### 5.2 MX 量化算子实现原理\n",372 "### 5.2 MX 量化算子实现原理\n",
367 "\n",373 "\n",
368 "与传统非量化 MatMul 算子相比,MX 量化场景新增了输入变量 `scaleA` 和 `scaleB`,需要将其搬运至 L1 缓冲区,再搬运至 `L0A_MX` 和 `L0B_MX` 独立缓冲区。通过约束 `L0A`、`L0B`、`L0A_MX`、`L0B_MX` 中 Tensor 的地址映射关系,芯片的 `MMAD` 指令支持自动完成 MXFP8 矩阵乘,并将 Float32 结果写入 `L0C` 缓冲区。通过设置 `Fixpipe` 指令的量化模式,输出预期的数据类型结果。因此算子实现仅依赖 CUBE 核,不涉及 MIX 场景。\n",374 "与传统非量化 MatMul 算子相比,MX 量化场景新增了输入变量 `scaleA` 和 `scaleB`,需要将其搬运至 L1 缓冲区,再搬运至 `L0A_MX` 和 `L0B_MX` 独立缓冲区。通过约束 `L0A`、`L0B`、`L0A_MX`、`L0B_MX` 中 Tensor 的地址映射关系,芯片的 `MMAD` 指令支持自动完成 MXFP8 矩阵乘,并将 Float32 结果写入 `L0C` 缓冲区。通过设置 `Fixpipe` 指令的量化模式,输出预期的数据类型结果。因此算子实现仅依赖 CUBE 核,不涉及 MIX 场景。\n",