在Tile之间移动/复制,可选通过模板参数和重载选择实现定义的转换模式。
[object Object] 用于:
- Vec -> Vec移动
- Mat -> Left/Right/Bias/Scaling/Scale(Microscaling) 移动(目标相关)
- Acc -> Mat/Vec移动(目标相关)
在有效区域内将元素从 [object Object] 复制或转换到 [object Object]。具体转换取决于所选模式和目标。
对于纯复制情况:
Cube Unit以 NZ(Normal-ZigZag)fractal格式消费操作数:Tile被划分为 [object Object] fractal,每个fractal以 [object Object]("N"——列主序外层块)和 [object Object]("Z"——fractal内行主序)存储。[object Object] 将RowMajor [object Object]/[object Object] Tile([object Object])重新打包为NZ布局。无需 [object Object]。
[object Object] 目标([object Object])是避免 [object Object] scatter上UB bank冲突的标准用法。
对于MXFP8/MXFP4矩阵乘,每组E8M0指数须以 ZZ 格式送达Cube的scale操作数:[object Object] 块(32Byte = 16列 × 2行组),按Cube每个fractal列对一个块的方式线性化。两种变体:
ND → ZZ([object Object],默认):源指数为ND分组(axis-1)。
其中 ,,,。
DN → ZZ([object Object]):源指数为DN分组(axis-0)。等价于转置后ND→ZZ:
其中 ,,,,。
对于固定的 ,ZZ块的32Byte来自两段连续的16Byte源数据( 和 );因此DN→ZZ使用连续加载 + [object Object](比ND→ZZ的 [object Object] 更高效)。
仅 X→ZZ 转换接受 [object Object] 操作数(3参数重载)。ND→ZZ用作 [object Object] 索引缓冲;DN→ZZ为接口一致接受但不访问([object Object] scatter无需scratch)。ND→NZ无 [object Object]。
PTO AS设计建议将 [object Object] 拆分为一组操作:
声明于 [object Object] 和 [object Object]:
[object Object]
[object Object]有以下重载族:- 纯移动:
[object Object] - relu形式:
[object Object] - 累加器到向量形式:
[object Object] - 向量量化形式:
[object Object] - 标量量化形式:
[object Object]和[object Object]
- 纯移动:
[object Object]取值为[object Object]。[object Object]取值为[object Object]。
- 形状须匹配:
[object Object]且[object Object]。 - 支持的Tile类型对在编译期限制为:
[object Object][object Object][object Object]
- 对于
[object Object]:- 支持的源/目标dtype对为
[object Object]、[object Object]、[object Object] - 源行数必须为
[object Object] [object Object]必须64字节对齐
- 支持的源/目标dtype对为
- 对于
[object Object]:- 目标dtype须等于源dtype且为
[object Object] - 源行数必须为
[object Object] [object Object]必须128字节对齐
- 目标dtype须等于源dtype且为
- 对于
[object Object]:- 额外执行
[object Object]编译期检查 - 纯/relu形式使用由
[object Object]推导的类型转换前量化模式 - 标量量化形式使用
[object Object] - 向量量化形式要求
[object Object]操作数[object Object],使用[object Object]
- 额外执行
[object Object]要求:- 目标/源dtype必须相同
- 支持的元素类型为
[object Object]、[object Object]、[object Object]、[object Object]、[object Object]、[object Object]、[object Object]、[object Object]、[object Object] - 源布局须满足以下之一:
[object Object][object Object][object Object]
[object Object]用于MX路径,要求源/目标dtype一致且支持[object Object]。- 支持的路径包括:
[object Object][object Object][object Object]- 特定的
[object Object]等内部路径变体由Ascend 950PR/Ascend 950DT实现处理
- 对于
[object Object]:- 支持的dtype对为
[object Object]、[object Object]、[object Object]、[object Object] - 源行数必须为
[object Object] [object Object]必须64字节对齐- bias表占用
[object Object]不得超过[object Object]字节
- 支持的dtype对为
- 对于
[object Object]:- 源行数必须为
[object Object] [object Object]必须128字节对齐- fixpipe缓冲占用
[object Object]不得超过[object Object]字节
- 源行数必须为
- 对于
[object Object]:[object Object]选择[object Object]、[object Object]、[object Object]或[object Object]- 双目标模式要求
[object Object] - 双目标模式不支持
[object Object]路径 - 对于32位目标类型(
[object Object]/[object Object]),使用[object Object]时[object Object](分裂前)须为32的倍数 - 目标stride须非零且
[object Object]须为32字节的倍数
- 对于
[object Object]:- 目标stride须非零且
[object Object]须为32字节的倍数 - relu/标量量化/向量量化形式通过相应重载支持
- 目标stride须非零且
ND→NZ的 [object Object]: 无——2参数重载通过 [object Object] 原地重新打包。
给定量化输入形状 (组大小 ),ND分组E8M0指数Tile形状为:
[object Object] 缓冲保存 [object Object] 使用的 [object Object] B16索引缓冲:
- 16 B16 lanes头部空间 + 个gather索引 + 16 B16 lanes尾部空间。
[object Object]dtype =[object Object](E8M0),形状[object Object]。
示例: , → 指数Tile ,,:
DN分组指数形状为 ,其中 。[object Object] 为接口一致接受 [object Object] 操作数但不访问它([object Object] scatter无需scratch)。任意非零尺寸Tile即可满足签名。
[object Object] 生成量化数据 + E8M0指数后,两个 [object Object] 将它们重新打包供Cube Unit使用。完整流水线见 [object Object] / [object Object]。