昇腾社区首页
中文
注册

流水类型介绍

在算子执行过程中,算子逻辑的约束要求计算是要保证一定顺序执行的。此外,计算前往往需要把计算数据搬运到计算单元上,这就导致了需要等待上一个步骤完成后才能开始进行下一个步骤的情况。此时就可以使用相关同步指令完成这样的功能。

在AICORE上执行的操作会分配到不同的流水线上执行,流水线统称为pipe,包括以下几种:

  • pipe = S,标量流水线,每条指令首先会通过它。标量加载或存储指令的顺序由硬件处理。
  • pipe = V,向量流水线,也表示为V1。
  • pipe = M,矩阵计算流水线。
  • pipe = MTE1,从L1到L0A或L0B,从L1到UB或L0C,SET_{L0A/L0B}_2D的搬运操作在该流水线完成。
  • pipe = MTE2,搬运操作,包括从OUT到L1,从OUT到L0A或L0B,从OUT到UB,从OUT到稀疏掩码表(SMASK),SET_{L1}_2D。OUT包括L2和DDR,通过地址区分。
  • pipe = MTE3,搬运操作,包括从UB到OUT,从UB到L1,从UB到稀疏掩码表(SMASK)。OUT包括L2和DDR,通过地址区分。
  • pipe = V2,低优先级向量流水线,包括L0C和UB之间的数据移动。
  • pipe = F,Fixpipe流水线,从L0C到{l1/GM/fb}的搬运操作。

以下章节描述的同步指令可以控制同一流水线内的运行顺序,也可以控制不同流水线之间的执行顺序。