CANN PTO反量化指令文档
TDEQUANT【免费下载链接】pto-isaParallel Tile Operation (PTO) is a virtual instruction set architecture designed by Ascend CANN, focusing on tile-level operations. This repository offers high-performance, cross-platform tile operations across Ascend platforms.项目地址: https://gitcode.com/cann/pto-isa简介将低精度量化 TileS8/S16反量化为高精度FP32Tile。对每个元素执行仿射反量化affine dequantization即TQUANT整数量化INT8 对称 / 非对称的逆运算$$ \mathrm{dst}{i,j} (\mathrm{src}{i,j} - \mathrm{offset}{i}) \cdot \mathrm{scale}{i} $$scale与offset为每行一组的 FP32 参数在列方向广播到整行因此可在一条指令内完成去偏移 反缩放的完整反量化。数学语义概念上对于有效区域中的每个元素(i, j)$$ \mathrm{dst}{i,j} \bigl(\mathrm{src}{i,j} - \mathrm{offset}{i}\bigr) \cdot \mathrm{scale}{i} $$src量化后的整数码S8或S16。scale、offset每行的 FP32 反量化参数scale的有效列数paraCols max(1, scale.GetValidCol())参数列下标paraCol min(j, paraCols - 1)即参数沿列方向广播。与TQUANT整数仿射量化互逆TQUANT中 $q \mathrm{round}(x / \mathrm{scale}) \mathrm{offset}$故 $x (q - \mathrm{offset}) \cdot \mathrm{scale}$。除非另有说明语义在有效区域内定义目标相关行为标记为实现定义。scale与offset均为 ISA 可见的 Tile 操作数非编译器 scratch。C 内建接口声明于include/pto/common/pto_instr.hpp。template typename TileDataDst, typename TileDataSrc, typename TileDataPara, typename... WaitEvents PTO_INST RecordEvent TDEQUANT(TileDataDst dst, TileDataSrc src, TileDataPara scale, TileDataPara offset, WaitEvents ...events);参数方向含义dst输出反量化结果 TileFP32行主序src输入量化源 TileS8或S16行主序有效形状与dst相同scale输入每行反缩放系数FP32沿列广播offset输入每行零点偏移FP32沿列广播events...输入等待事件WaitEvents指令前隐式TSYNCscale与offset必须为同一类型TileDataPara且其 dtype 与dst一致均为FP32。Tile 尺寸与数据类型对于源/目的 Tile 有效形状 $M \times N$Tiledtype有效形状布局说明dstfloat32_t$M \times N$RowMajor反量化结果srcint8_t或int16_t$M \times N$RowMajor量化整数码dtype 决定unpack 路径scalefloat32_t$M \times 1$每行ColMajor / 行广播沿列广播BRC_B32offsetfloat32_t$M \times 1$每行ColMajor / 行广播沿列广播BRC_B32scale/offset的有效行数必须等于dst的有效行数列方向以 32 字节块为单位广播故典型用法为每行 1 个标量形状 $M \times 1$。支持的输入 dtype源 dtype目的 dtypescale/offset dtype说明S8(int8_t)FP32FP32UNPK4_B8解包后类型转换为 FP32S16(int16_t)FP32FP32UNPK_B16解包后类型转换为 FP32dst、scale、offset必须 dtype 一致且均为FP32src仅支持S8/S16。其它 dtype 组合为非法实现内static_assert拦截。实现说明TDEQUANT 在向量流水线PIPE_V上执行无需tmpscratch Tile与TQUANT在 A2/A3 上的 5 阶段类型转换链不同加载并解包srcS8经UNPK4_B8、S16经UNPK_B16解包再vcvt转为 FP32kirinX90 上S8走US_B8 交错路径。广播加载参数scale、offset经vlds ... BRC_B32以 32 字节块广播到整行。计算vsub(dst, src, offset)后vmul(dst, dst, scale)即先去偏移、再反缩放。编码TDEQUANT 属于 TEPLTile Elementwise Pipeline复合变换类指令BSTART.TEPL TDEQUANT, DataType B.DATR(optional) B.DIM LB0 B.DIM (LB1/LB2 for 2D) B.IOT字段取值Mode3复合变换Function11TileOp0x6B操作数B.IOTdst, src, scale, offset约束约束适用范围原因dst、src必须行主序所有目标反量化按行广播参数dst与src有效形状相同$M \times N$所有目标逐元素一一对应scale、offset有效行数 dst有效行数所有目标每行一组参数dst/scale/offsetdtype 必须一致且为FP32所有目标反量化输出精度src∈ {S8,S16}所有目标整数量化码字宽示例// src: int8/int16 量化码scale/offset: 每行 FP32 参数 TDEQUANT(dstTile, srcTile, scaleTile, offsetTile);完整 ST 示例见tests/npu/a5/src/st/testcase/tdequant/A5、tests/npu/a2a3/src/st/testcase/tdequant/A2/A3及tests/cpu/st/testcase/tdequant/CPU 参考实现。【免费下载链接】pto-isaParallel Tile Operation (PTO) is a virtual instruction set architecture designed by Ascend CANN, focusing on tile-level operations. This repository offers high-performance, cross-platform tile operations across Ascend platforms.项目地址: https://gitcode.com/cann/pto-isa创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考