PTO Tile Lib

PTO ISA 参考

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

逐元素(Tile × Tile)

  • TADD — 两个 tile 的逐元素相加。
  • TABS — tile 的逐元素绝对值。
  • TSUB — 两个 tile 的逐元素相减。
  • TMUL — 两个 tile 的逐元素相乘。
  • TDIV — 两个 tile 的逐元素相除。
  • TREM — 两个 tile 的逐元素取余。
  • TSHL — 两个 tile 的逐元素左移。
  • TSHR — 两个 tile 的逐元素右移。
  • TAND — 两个 tile 的逐元素按位与。
  • TOR — 两个 tile 的逐元素按位或。
  • TXOR — 两个 tile 的逐元素按位异或。
  • TMIN — 两个 tile 的逐元素最小值。
  • TMAX — 两个 tile 的逐元素最大值。
  • TEXP — 逐元素指数。
  • TLOG — tile 的逐元素自然对数。
  • TSQRT — 逐元素平方根。
  • TRSQRT — 逐元素倒平方根。
  • TRECIP — 逐元素倒数。
  • TNEG — 逐元素取负。
  • TNOT — 逐元素按位取反。
  • TRELU — 逐元素 ReLU。
  • TPRELU — 逐元素 PReLU(带每元素 slope tile 的参数化 ReLU)。
  • TADDC — 逐元素三元加法:src0 + src1 + src2
  • TSUBC — 逐元素三元运算:src0 - src1 + src2
  • TSEL — 通过 mask tile 在两张 tile 之间逐元素选择。
  • TCMP — 比较两张 tile 并写入压缩的谓词 mask。
  • TCVT — 带指定舍入模式的逐元素类型转换。

Tile × 标量 / 立即数

  • TADDS — tile 逐元素加一个标量。
  • TSUBS — tile 逐元素减一个标量。
  • TDIVS — 与标量的逐元素除法(tile/scalar 或 scalar/tile)。
  • TMULS — tile 逐元素乘一个标量。
  • TREMS — 与标量的逐元素取余:fmod(src, scalar)(或整数的 %)。
  • TMAXS — tile 与标量逐元素取 max:max(src, scalar)
  • TMINS — tile 与标量逐元素取 min。
  • TANDS — tile 与标量逐元素按位与。
  • TORS — tile 与标量逐元素按位或。
  • TXORS — tile 与标量逐元素按位异或。
  • TCMPS — tile 与标量比较,并写入逐元素的比较结果。
  • TEXPANDS — 将标量广播到目标 tile。
  • TSELS — 使用标量 selectMode 在两张 tile 之间选择(全局选择)。
  • TLRELU — 带标量 slope 的 Leaky ReLU。
  • TADDSC — 逐元素融合加法:src0 + scalar + src1
  • TSUBSC — 逐元素融合运算:src0 - scalar + src1
  • TSHLS — tile 逐元素左移标量对应位数。
  • TSHRS — tile 逐元素右移标量对应位数。

轴向归约 / 展开

  • TROWSUM — 对每行按列求和。
  • TROWMAX — 对每行按列取最大值。
  • TROWMIN — 对每行按列取最小值。
  • TROWEXPAND — 将源 tile 每行的第一个元素广播到目标行。
  • TROWEXPANDDIV — 行级广播除法:对 src0 的每一行除以每行标量向量 src1
  • TROWEXPANDMUL — 行级广播乘法:对 src0 的每一行乘以每行标量向量 src1
  • TROWEXPANDSUB — 行级广播减法:对 src0 的每一行减去每行标量向量 src1
  • TCOLSUM — 对每列按行求和。
  • TCOLMAX — 对每列按行取最大值。
  • TCOLMIN — 对每列按行取最小值。
  • TCOLEXPAND — 将源 tile 每列的第一个元素广播到目标列。

Padding

  • TFILLPAD — 将源 tile 拷贝到目标 tile,并用 TileDataDst::PadVal 选择的编译期 pad 值填充剩余(padding)元素(例如 PadValue::Min / PadValue::Max)。

内存(GM <-> Tile)

  • TLOAD — 从 GlobalTensor(GM)加载到 Tile。
  • TSTORE — 将 Tile 存回 GlobalTensor(GM),可选原子写或量化参数。
  • TSTORE_FP — 将 accumulator tile 存回 GM,并使用缩放(fp)tile 作为向量量化参数。
  • MGATHER — 使用逐元素索引从 GM gather-load 到 tile。
  • MSCATTER — 使用逐元素索引从 tile scatter-store 到 GM。

矩阵乘

  • TMATMUL — 矩阵乘(GEMM),产生 accumulator / 输出 tile。
  • TMATMUL_MX — 带额外缩放 tiles 的矩阵乘(用于支持目标上的混合精度/量化 matmul)。
  • TMATMUL_ACC — 带 accumulator 输入的矩阵乘(融合 accumulate)。
  • TMATMUL_BIAS — 带 bias add 的矩阵乘。

数据搬运 / 布局

  • TMOV — tile 间搬运/拷贝,可选实现定义的转换模式。
  • TMOV_FP — 从 accumulator tile 搬运/转换到目标 tile,并使用缩放(fp)tile 作为向量量化参数。
  • TTRANS — 转置(需要实现定义的临时 tile)。
  • TEXTRACT — 从源 tile 提取 sub-tile。
  • TRESHAPE — 在保持底层字节不变的前提下,将 tile 解释为另一种 tile 类型/形状。
  • TASSIGN — 将 Tile 对象绑定到实现定义的片上地址(手动 placement)。

复杂指令

  • TCI — 在目标 tile 中生成连续的整数序列。
  • TGATHER — 使用索引 tile 或编译期 mask 模式进行 gather/select。
  • TGATHERB — 使用字节偏移进行 gather。
  • TSCATTER — 使用逐元素行索引将源 tile 的行 scatter 到目标 tile。
  • TSORT32 — 对固定大小 32 元素块排序并产生索引映射。
  • TMRGSORT — 多个已排序列表的归并排序(元素格式与布局为实现定义)。
  • TPARTADD — 部分逐元素 add(有效区域不一致时的处理为实现定义)。
  • TPARTMAX — 部分逐元素 max(有效区域不一致时的处理为实现定义)。
  • TPARTMIN — 部分逐元素 min(有效区域不一致时的处理为实现定义)。

同步

  • TSYNC — PTO 执行同步(等待事件或插入 per-op 的 pipeline barrier)。