PTO Tile Lib

PTO ISA 参考

本目录是 PTO Tile Lib ISA 的指令参考(每条指令一页)。

同步

  • 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