CANN/pto-isa TAXPY指令文档 TAXPY【免费下载链接】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简介对 Tile 执行原位缩放累加AXPY$a \cdot x y$将src0按标量scalar缩放后累加到dst上。$$ \mathrm{dst}{i,j} \leftarrow \mathrm{scalar} \cdot \mathrm{src0}{i,j} \mathrm{dst}_{i,j} $$dst既是累加输入$y$也是输出调用前必须已初始化src0$x$只读scalar$a$为标量。数学语义对于有效区域中的每个元素(i, j)$$ \mathrm{dst}{i,j}^{\text{new}} \mathrm{scalar} \cdot \mathrm{src0}{i,j} \mathrm{dst}_{i,j}^{\text{old}} $$dst读-修改-写RMW。读入旧值作为累加基 $y$写回 $\mathrm{scalar} \cdot x y$。src0只读逐元素参与运算$x$。scalar标量缩放系数$a$类型为TileDataSrc::DType。除非另有说明语义在有效区域内定义目标相关行为标记为实现定义。C 内建接口声明于include/pto/common/pto_instr.hpp。template typename TileDataDst, typename TileDataSrc, typename... WaitEvents PTO_INST RecordEvent TAXPY(TileDataDst dst, TileDataSrc src0, typename TileDataSrc::DType scalar, WaitEvents ...events);参数方向含义dst输入/输出累加基与结果 Tile$y$读-修改-写Vecsrc0输入缩放源 Tile$x$只读Vec有效形状与dst相同scalar输入标量缩放系数$a$类型为TileDataSrc::DTypeevents...输入等待事件WaitEvents指令前隐式TSYNCTile 尺寸与数据类型对于有效形状 $M \times N$Tiledtype有效形状TileType说明dsthalf或float$M \times N$Vec(UB)累加基 结果RMWsrc0half或float$M \times N$Vec(UB)缩放源逐元素dst与src0的有效行数、有效列数必须完全相同。支持的输入 dtypedstdtypesrc0dtypescalardtype说明halfhalfhalf同类型路径直接vaxpyfloatfloatfloat同类型路径直接vaxpyfloathalfhalf差异路径src0拓宽为 FP32 后累加dst与src0必须 dtype 一致或dst为float且src0为half允许 half→float 的拓宽累加。dst为half而src0为float的组合非法实现内static_assert拦截。实现说明TAXPY 在向量流水线PIPE_V上执行使用vaxpy$a \cdot x y$向量内建同类型dst与src0同 dtype逐 repeat 加载src0与dst执行vaxpy(dst, src0, scalar)后写回dst尾部不足一个 repeat 的列由谓词掩码屏蔽。差异类型dstfloatsrc0halfsrc0的 half 数据拓宽为 FP32 后参与累加A5 上经UNPK_B16解包并vcvt转换A2/A3 由vaxpy原生按 4-block src / 8-block dst 处理。A2/A3 上按 repeat-stride 是否溢出、以及列数与行数的关系在 count 模式与 norm 模式间选择以覆盖任意有效形状。约束约束适用范围原因dst、src0必须为TileType::Vec所有目标在 UB向量流水线上执行dst与src0有效形状相同$M \times N$所有目标逐元素一一对应dstdtype ∈ {half,float}所有目标vaxpy支持的浮点字宽dst/src0dtype 一致或 (float,half)所有目标仅允许 half→float 拓宽累加dst调用前必须已初始化所有目标dst作为累加基 $y$ 被读入示例// dst 必须先初始化作为累加基 y结果dst scalar * src0 dst TAXPY(dstTile, srcTile, scalar);完整 ST 示例见tests/npu/a5/src/st/testcase/taxpy/A5、tests/npu/a2a3/src/st/testcase/taxpy/A2/A3、tests/npu/kirin9030/src/st/testcase/taxpy/Kirin9030及tests/cpu/st/testcase/taxpy/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),仅供参考