PTO ISA 概述

本文档为根据 docs/isa/manifest.yaml 自动生成的 ISA 索引。

文档目录

领域 页面 描述
概述 docs/README_zh.md PTO ISA 指南入口与导航。
概述 docs/PTOISA_zh.md 本页(概述 + 全量指令索引)。
ISA 参考 docs/isa/README_zh.md 每条指令参考目录。
ISA 参考 docs/isa/conventions_zh.md 通用符号、操作数、事件与修饰符。
汇编 (PTO-AS) docs/assembly/PTO-AS_zh.md PTO-AS 语法参考。
权威源 include/pto/common/pto_instr.hpp C++ intrinsic API(权威来源)。

指令索引(全部 PTO 指令)

分类 指令 描述
同步 TSYNC 同步 PTO 执行(等待事件或插入每操作流水线屏障)。
手动 / 资源绑定 TASSIGN 将 Tile 对象绑定到实现定义的片上地址(手动放置)。
手动 / 资源绑定 TSETFMATRIX 为类 IMG2COL 操作设置 FMATRIX 寄存器。
手动 / 资源绑定 TSET_IMG2COL_RPT 从 IMG2COL 配置 Tile 设置 IMG2COL 重复次数元数据。
手动 / 资源绑定 TSET_IMG2COL_PADDING 从 IMG2COL 配置 Tile 设置 IMG2COL 填充元数据。
逐元素(Tile-Tile) TADD 两个 Tile 的逐元素加法。
逐元素(Tile-Tile) TABS Tile 的逐元素绝对值。
逐元素(Tile-Tile) TAND 两个 Tile 的逐元素按位与。
逐元素(Tile-Tile) TOR 两个 Tile 的逐元素按位或。
逐元素(Tile-Tile) TSUB 两个 Tile 的逐元素减法。
逐元素(Tile-Tile) TMUL 两个 Tile 的逐元素乘法。
逐元素(Tile-Tile) TMIN 两个 Tile 的逐元素最小值。
逐元素(Tile-Tile) TMAX 两个 Tile 的逐元素最大值。
逐元素(Tile-Tile) TCMP 比较两个 Tile 并写入一个打包的谓词掩码。
逐元素(Tile-Tile) TDIV 两个 Tile 的逐元素除法。
逐元素(Tile-Tile) TSHL 两个 Tile 的逐元素左移。
逐元素(Tile-Tile) TSHR 两个 Tile 的逐元素右移。
逐元素(Tile-Tile) TXOR 两个 Tile 的逐元素按位异或。
逐元素(Tile-Tile) TLOG Tile 的逐元素自然对数。
逐元素(Tile-Tile) TRECIP Tile 的逐元素倒数。
逐元素(Tile-Tile) TPRELU 带逐元素斜率 Tile 的逐元素参数化 ReLU (PReLU)。
逐元素(Tile-Tile) TADDC 三元逐元素加法:src0 + src1 + src2
逐元素(Tile-Tile) TSUBC 三元逐元素运算:src0 - src1 + src2
逐元素(Tile-Tile) TCVT 带指定舍入模式的逐元素类型转换。
逐元素(Tile-Tile) TSEL 使用掩码 Tile 在两个 Tile 之间进行选择(逐元素选择)。
逐元素(Tile-Tile) TRSQRT 逐元素倒数平方根。
逐元素(Tile-Tile) TSQRT 逐元素平方根。
逐元素(Tile-Tile) TEXP 逐元素指数运算。
逐元素(Tile-Tile) TNOT Tile 的逐元素按位取反。
逐元素(Tile-Tile) TRELU Tile 的逐元素 ReLU。
逐元素(Tile-Tile) TNEG Tile 的逐元素取负。
逐元素(Tile-Tile) TREM 两个 Tile 的逐元素余数,余数符号与除数相同。
逐元素(Tile-Tile) TFMOD 两个 Tile 的逐元素余数,余数符号与被除数相同。
Tile-标量 / Tile-立即数 TEXPANDS 将标量广播到目标 Tile 中。
Tile-标量 / Tile-立即数 TCMPS 将 Tile 与标量比较并写入逐元素比较结果。
Tile-标量 / Tile-立即数 TSELS 使用掩码 Tile 在源 Tile 和标量之间进行选择(源 Tile 逐元素选择)。
Tile-标量 / Tile-立即数 TMINS Tile 与标量的逐元素最小值。
Tile-标量 / Tile-立即数 TADDS Tile 与标量的逐元素加法。
Tile-标量 / Tile-立即数 TSUBS 从 Tile 中逐元素减去一个标量。
Tile-标量 / Tile-立即数 TDIVS 与标量的逐元素除法(Tile/标量 或 标量/Tile)。
Tile-标量 / Tile-立即数 TMULS Tile 与标量的逐元素乘法。
Tile-标量 / Tile-立即数 TFMODS 与标量的逐元素余数:fmod(src, scalar)
Tile-标量 / Tile-立即数 TREMS 与标量的逐元素余数:remainder(src, scalar)
Tile-标量 / Tile-立即数 TMAXS Tile 与标量的逐元素最大值:max(src, scalar)
Tile-标量 / Tile-立即数 TANDS Tile 与标量的逐元素按位与。
Tile-标量 / Tile-立即数 TORS Tile 与标量的逐元素按位或。
Tile-标量 / Tile-立即数 TSHLS Tile 按标量逐元素左移。
Tile-标量 / Tile-立即数 TSHRS Tile 按标量逐元素右移。
Tile-标量 / Tile-立即数 TXORS Tile 与标量的逐元素按位异或。
Tile-标量 / Tile-立即数 TLRELU 带标量斜率的 Leaky ReLU。
Tile-标量 / Tile-立即数 TADDSC 与标量和第二个 Tile 的融合逐元素加法:src0 + scalar + src1
Tile-标量 / Tile-立即数 TSUBSC 融合逐元素运算:src0 - scalar + src1
轴归约 / 扩展 TROWSUM 通过对列求和来归约每一行。
轴归约 / 扩展 TROWPROD 通过跨列乘积来归约每一行。
轴归约 / 扩展 TCOLSUM 通过对行求和来归约每一列。
轴归约 / 扩展 TCOLPROD 通过跨行乘积来归约每一列。
轴归约 / 扩展 TCOLMAX 通过取行间最大值来归约每一列。
轴归约 / 扩展 TROWMAX 通过取列间最大值来归约每一行。
轴归约 / 扩展 TROWMIN 通过取列间最小值来归约每一行。
轴归约 / 扩展 TROWEXPAND 将每个源行的第一个元素广播到目标行中。
轴归约 / 扩展 TROWEXPANDDIV 行广播除法:将 src0 的每一行除以一个每行标量向量 src1
轴归约 / 扩展 TROWEXPANDMUL 行广播乘法:将 src0 的每一行乘以一个每行标量向量 src1
轴归约 / 扩展 TROWEXPANDSUB 行广播减法:从 src0 的每一行中减去一个每行标量向量 src1
轴归约 / 扩展 TROWEXPANDADD 行广播加法:加上一个每行标量向量。
轴归约 / 扩展 TROWEXPANDMAX 行广播最大值:与每行标量向量取最大值。
轴归约 / 扩展 TROWEXPANDMIN 行广播最小值:与每行标量向量取最小值。
轴归约 / 扩展 TROWEXPANDEXPDIF 行指数差运算:计算 exp(src0 - src1),其中 src1 为每行标量。
轴归约 / 扩展 TCOLMIN 通过取行间最小值来归约每一列。
轴归约 / 扩展 TCOLEXPAND 将每个源列的第一个元素广播到目标列中。
轴归约 / 扩展 TCOLEXPANDDIV 列广播除法:将每一列除以一个每列标量向量。
轴归约 / 扩展 TCOLEXPANDMUL 列广播乘法:将每一列乘以一个每列标量向量。
轴归约 / 扩展 TCOLEXPANDADD 列广播加法:对每一列加上每列标量向量。
轴归约 / 扩展 TCOLEXPANDMAX 列广播最大值:与每列标量向量取最大值。
轴归约 / 扩展 TCOLEXPANDMIN 列广播最小值:与每列标量向量取最小值。
轴归约 / 扩展 TCOLEXPANDSUB 列广播减法:从每一列中减去一个每列标量向量。
轴归约 / 扩展 TCOLEXPANDEXPDIF 列指数差运算:计算 exp(src0 - src1),其中 src1 为每列标量。
内存(GM <-> Tile) TLOAD 从 GlobalTensor (GM) 加载数据到 Tile。
内存(GM <-> Tile) TPREFETCH 将数据从全局内存预取到 Tile 本地缓存/缓冲区(提示)。
内存(GM <-> Tile) TSTORE 将 Tile 中的数据存储到 GlobalTensor (GM),可选使用原子写入或量化参数。
内存(GM <-> Tile) TSTORE_FP 使用缩放 (fp) Tile 作为向量量化参数,将累加器 Tile 存储到全局内存。
内存(GM <-> Tile) MGATHER 使用逐元素索引从全局内存收集加载元素到 Tile 中。
内存(GM <-> Tile) MSCATTER 使用逐元素索引将 Tile 中的元素散播存储到全局内存。
矩阵乘 TGEMV_MX 带缩放 Tile 的 GEMV 变体,支持混合精度/量化矩阵向量计算。
矩阵乘 TMATMUL_MX 带额外缩放 Tile 的矩阵乘法 (GEMM),用于支持目标上的混合精度/量化矩阵乘法。
矩阵乘 TMATMUL 矩阵乘法 (GEMM),生成累加器/输出 Tile。
矩阵乘 TMATMUL_ACC 带累加器输入的矩阵乘法(融合累加)。
矩阵乘 TMATMUL_BIAS 带偏置加法的矩阵乘法。
矩阵乘 TGEMV 通用矩阵-向量乘法,生成累加器/输出 Tile。
矩阵乘 TGEMV_ACC 带显式累加器输入/输出 Tile 的 GEMV。
矩阵乘 TGEMV_BIAS 带偏置加法的 GEMV。
数据搬运 / 布局 TEXTRACT 从源 Tile 中提取子 Tile。
数据搬运 / 布局 TEXTRACT_FP 带 fp/缩放 Tile 的提取(向量量化参数)。
数据搬运 / 布局 TIMG2COL 用于类卷积工作负载的图像到列变换。
数据搬运 / 布局 TINSERT 在 (indexRow, indexCol) 偏移处将子 Tile 插入到目标 Tile 中。
数据搬运 / 布局 TINSERT_FP 带 fp/缩放 Tile 的插入(向量量化参数)。
数据搬运 / 布局 TFILLPAD 复制 Tile 并在有效区域外使用编译时填充值进行填充。
数据搬运 / 布局 TFILLPAD_INPLACE 原地填充/填充变体。
数据搬运 / 布局 TFILLPAD_EXPAND 填充/填充时允许目标大于源。
数据搬运 / 布局 TMOV 在 Tile 之间移动/复制,可选应用实现定义的转换模式。
数据搬运 / 布局 TMOV_FP 使用缩放 (fp) Tile 作为向量量化参数,将累加器 Tile 移动/转换到目标 Tile。
数据搬运 / 布局 TRESHAPE 将 Tile 重新解释为另一种 Tile 类型/形状,同时保留底层字节。
数据搬运 / 布局 TTRANS 使用实现定义的临时 Tile 进行转置。
复杂指令 TPRINT 调试/打印 Tile 中的元素(实现定义)。
复杂指令 TMRGSORT 用于多个已排序列表的归并排序(实现定义的元素格式和布局)。
复杂指令 TSORT32 对固定大小的 32 元素块进行排序并生成索引映射。
复杂指令 TGATHER 使用索引 Tile 或编译时掩码模式来收集/选择元素。
复杂指令 TCI 生成连续整数序列到目标 Tile 中。
复杂指令 TTRI 生成三角(下/上)掩码 Tile。
复杂指令 TPARTADD 部分逐元素加法,对不匹配的有效区域具有实现定义的处理方式。
复杂指令 TPARTMUL 部分逐元素乘法,对有效区域不一致的处理为实现定义。
复杂指令 TPARTMAX 部分逐元素最大值,对不匹配的有效区域具有实现定义的处理方式。
复杂指令 TPARTMIN 部分逐元素最小值,对不匹配的有效区域具有实现定义的处理方式。
复杂指令 TGATHERB 使用字节偏移量收集元素。
复杂指令 TSCATTER 使用逐元素行索引将源 Tile 的行散播到目标 Tile 中。
复杂指令 TQUANT 量化 Tile(例如 FP32 到 FP8),生成指数/缩放/最大值输出。
通信 TPUT 远程写:将本地数据传输到远端 NPU 内存(GM → UB → GM)。
通信 TGET 远程读:将远端 NPU 数据读取到本地内存(GM → UB → GM)。
通信 TPUT_ASYNC 异步远程写(本地 GM → DMA 引擎 → 远端 GM)。
通信 TGET_ASYNC 异步远程读(远端 GM → DMA 引擎 → 本地 GM)。
通信 TNOTIFY 向远端 NPU 发送标志通知。
通信 TWAIT 阻塞等待,直到信号满足比较条件。
通信 TTEST 非阻塞检测信号是否满足比较条件。
通信 TGATHER 从所有 rank 收集数据并沿 DIM_3 拼接。
通信 TSCATTER 将数据沿 DIM_3 拆分并分发到所有 rank。
通信 TREDUCE 从所有 rank 收集数据并逐元素归约到本地。
通信 TBROADCAST 将当前 NPU 的数据广播到所有 rank。