昇腾社区首页
中文
注册

单目与双目模板参数说明

Vector intrinsic接口在Vector计算单元执行,源操作数和目的操作数均通过Unified Buffer(UB)来进行存储。Vector计算单元每个迭代会从UB中取出8datablock(每个datablock数据块内部地址连续,长度32Byte,合计256Byte)进行计算,并写入对应的8个datablock中。

下图展示了一个基本向量计算的行为模式。

图1 向量计算示意图

  • Repeat:通过Repeat来配置迭代次数,从而控制指令的多次迭代执行。如上图Repeat设置为2,矢量计算单元会进行2个迭代的计算,可计算出2 * 8(每个迭代8个datablock) * 32Byte(每个datablock32Byte) = 512Byte的结果。由于硬件限制,Repeat不能超过255,如果Repeat设置为0,则指令视为NOP指令。
  • RepeatStride:代表每次迭代之间的起始间隔,上图srcRepeatStride设置为0,表示每个迭代都从同一个地址读取数据。dstRepeatStride均设置为16,即两次迭代的目的地址起始地址间隔为16 * 32Byte。如果dstRepeatStride/srcRepeatStride设置为1,表示下一个迭代比上一个迭代间隔1个block,即两次迭代的起始地址间隔 1 * 32Byte。
  • BlockStride:代表每个Repeat计算中读取的8个block的间隔,如上图中srcBlockStride设置为2,则表示连续读取的两个block的起始地址间隔为2个block(即64Byte),而dstBlockStride设置为1,则运算结果的8个block连续存放。

根据计算所需的源操作数的个数可分为表1 单目运算参数说明表表2 双目运算参数说明

表1 单目运算参数说明

参数名

说明

取值范围

单位

dst

目的操作数起始地址

/

/

src

源操作数起始地址

/

/

repeat

指令迭代次数

[0, 2^8-1]

/

dstBlockStride

同一次执行,目的操作数不同block间地址步长。例如,当dstBlockStride为3,每个dst block的起始地址间隔为2个block(64B)。

[0, 2^16-1]

32B

srcBlockStride

同一次执行,源操作数不同block间地址步长。

[0, 2^16-1]

32B

dstRepeatStride

相邻两次执行,目的操作数相同block地址步长。0表示两次迭代的所有对应块指向相同的地址。

[0, 2^12-1]

32B

srcRepeatStride

相邻两次执行,源操作数相同block地址步长。

[0, 2^12-1]

32B

表2 双目运算参数说明

参数名

说明

取值范围

单位

dst

目的操作数起始地址

/

/

src0

源操作数0起始地址

/

/

src1

源操作数1起始地址

/

/

repeat

指令迭代次数

[0, 2^8-1]

/

dstBlockStride

同一次执行,目的操作数不同block间地址步长。例如,当dstBlockStride为3,每个dst block的起始地址间隔为2个block(64B)。

[0, 2^8-1]

32B

src0BlockStride

同一次执行,源操作数0不同block间地址步长。

[0, 2^8-1]

32B

src1BlockStride

同一次执行,源操作数1不同block间地址步长。

[0, 2^8-1]

32B

dstRepeatStride

相邻两次执行,目的操作数相同block地址步长。0表示两次迭代的所有对应块指向相同的地址。

[0, 2^8-1]

32B

src0RepeatStride

相邻两次执行,源操作数0相同block地址步长。

[0, 2^8-1]

32B

src1RepeatStride

相邻两次执行,源操作数1相同block地址步长。

[0, 2^8-1]

32B