PTO ISA 参考¶
本目录是 PTO Tile Lib ISA 的指令参考(每条指令一页)。
- 权威来源(C++ 内建函数):
include/pto/common/pto_instr.hpp - 通用约定(操作数、事件、修饰符)
同步¶
- TSYNC - 同步 PTO 执行(等待事件或插入每操作流水线屏障)。
手动 / 资源绑定¶
- TASSIGN - 将 Tile 对象绑定到实现定义的片上地址(手动放置)。
- TSETFMATRIX - 为类 IMG2COL 操作设置 FMATRIX 寄存器。
- TSET_IMG2COL_RPT - 从 IMG2COL 配置 Tile 设置 IMG2COL 重复次数元数据。
- TSET_IMG2COL_PADDING - 从 IMG2COL 配置 Tile 设置 IMG2COL 填充元数据。
逐元素(Tile-Tile)¶
- TADD - 两个 Tile 的逐元素加法。
- TABS - Tile 的逐元素绝对值。
- TAND - 两个 Tile 的逐元素按位与。
- TOR - 两个 Tile 的逐元素按位或。
- TSUB - 两个 Tile 的逐元素减法。
- TMUL - 两个 Tile 的逐元素乘法。
- TMIN - 两个 Tile 的逐元素最小值。
- TMAX - 两个 Tile 的逐元素最大值。
- TCMP - 比较两个 Tile 并写入一个打包的谓词掩码。
- TDIV - 两个 Tile 的逐元素除法。
- TSHL - 两个 Tile 的逐元素左移。
- TSHR - 两个 Tile 的逐元素右移。
- TXOR - 两个 Tile 的逐元素按位异或。
- TLOG - Tile 的逐元素自然对数。
- TRECIP - Tile 的逐元素倒数。
- TPRELU - 带逐元素斜率 Tile 的逐元素参数化 ReLU (PReLU)。
- TADDC - 三元逐元素加法:
src0 + src1 + src2。 - TSUBC - 三元逐元素运算:
src0 - src1 + src2。 - TCVT - 带指定舍入模式的逐元素类型转换。
- TSEL - 使用掩码 Tile 在两个 Tile 之间进行选择(逐元素选择)。
- TRSQRT - 逐元素倒数平方根。
- TSQRT - 逐元素平方根。
- TEXP - 逐元素指数运算。
- TNOT - Tile 的逐元素按位取反。
- TRELU - Tile 的逐元素 ReLU。
- TNEG - Tile 的逐元素取负。
- TREM - 两个 Tile 的逐元素余数,余数符号与除数相同。
- TFMOD - 两个 Tile 的逐元素余数,余数符号与被除数相同。
Tile-标量 / Tile-立即数¶
- TEXPANDS - 将标量广播到目标 Tile 中。
- TCMPS - 将 Tile 与标量比较并写入逐元素比较结果。
- TSELS - 使用掩码 Tile 在源 Tile 和标量之间进行选择(源 Tile 逐元素选择)。
- TMINS - Tile 与标量的逐元素最小值。
- TADDS - Tile 与标量的逐元素加法。
- TSUBS - 从 Tile 中逐元素减去一个标量。
- TDIVS - 与标量的逐元素除法(Tile/标量 或 标量/Tile)。
- TMULS - Tile 与标量的逐元素乘法。
- TFMODS - 与标量的逐元素余数:
fmod(src, scalar)。 - TREMS - 与标量的逐元素余数:
remainder(src, scalar)。 - TMAXS - Tile 与标量的逐元素最大值:
max(src, scalar)。 - TANDS - Tile 与标量的逐元素按位与。
- TORS - Tile 与标量的逐元素按位或。
- TSHLS - Tile 按标量逐元素左移。
- TSHRS - Tile 按标量逐元素右移。
- TXORS - Tile 与标量的逐元素按位异或。
- TLRELU - 带标量斜率的 Leaky ReLU。
- TADDSC - 与标量和第二个 Tile 的融合逐元素加法:
src0 + scalar + src1。 - 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。
- TPREFETCH - 将数据从全局内存预取到 Tile 本地缓存/缓冲区(提示)。
- TSTORE - 将 Tile 中的数据存储到 GlobalTensor (GM),可选使用原子写入或量化参数。
- TSTORE_FP - 使用缩放 (
fp) Tile 作为向量量化参数,将累加器 Tile 存储到全局内存。 - MGATHER - 使用逐元素索引从全局内存收集加载元素到 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),生成指数/缩放/最大值输出。
通信¶
完整的通信 ISA 指令参考(点对点、异步、同步原语及集合通信)见 comm/README_zh.md。