如何使用Tensor高维切分计算API

  • 本章节对矢量计算基础API中的tensor高维切分计算接口做解释说明。如果您不需要使用此类接口,可略过该章节。
  • 下文中的repeatTimes、dataBlockStriderepeatStridemask为通用描述,其命名不一定与具体指令中的参数命名完全对应。

    比如,单次迭代内不同datablock间地址步长dataBlockStride参数,在单目指令中,对应为dstBlkStride、srcBlkStride参数;在双目指令中,对应为dstBlkStride、src0BlkStride、src1BlkStride参数。

    您可以在具体接口的参数说明中,找到参数含义的描述。

使用tensor高维切分计算API可充分发挥硬件优势支持开发者控制指令的迭代执行和操作数的地址间隔,功能更加灵活。

矢量计算通过Vector计算单元完成,矢量计算的源操作数和目的操作数均通过Unified Buffer(UB)来进行存储。Vector计算单元每个迭代会从UB中取出8datablock(每个datablock数据块内部地址连续,长度32Byte),进行计算,并写入对应的8个datablock中。下图为单次迭代内的8个datablock进行Exp计算的示意图。

图1 单次迭代内的8个datablock进行Exp计算示意图

下文中给出了dataBlockStriderepeatStridemask的详细配置说明和示例。

dataBlockStride

dataBlockStride是指同一迭代内不同datablock的地址步长。

repeatStride

repeatStride是指相邻迭代间相同datablock的地址步长。

mask参数

mask用于控制每次迭代内参与计算的元素。可通过连续模式和逐bit模式两种方式进行设置。