已合并
docs(01.06): 补充 5.1 节 ScaleA/B 三维 Shape 的硬件对齐背景说明 #752
XieQianyi创建于 29 天前
docs(01.06): 补充 5.1 节 ScaleA/B 三维 Shape 的硬件对齐背景说明 #752
已合并
共 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", |