昇腾社区首页
中文
注册

接口基本信息

卷积运算的输入数据搬运由3D加载指令完成,具体操作是将滑动在特征图中的3D核窗口数据转换为矩阵数据块(称为分形块),3D加载指令也称为img2col。

表1 img2col参数说明

参数名

说明

取值范围

单位

dst

目的地址

/

/

src

源数据地址

/

/

stepK

从起始位置开始,沿K方向进行扩展大小

如果它没有覆盖k方向末端的分形矩阵:

b32类型应为8的倍数

f16类型应为16的倍数

s8类型应为32的倍数

s4类型应为64的倍数

[0, 2^16-1]

B

stepM

从起始位置开始,M方向的扩展大小

如果它没有覆盖M方向末端的分形矩阵:

f16/s8/s4类型应为16的倍数

[0, 2^16-1]

B

posK

目标矩阵的K方向起始位置。

b32类型应为8的倍数

f16类型应为16的倍数

s8类型应为32的倍数

s4类型应为64的倍数

[0,2^16-1]

B

posM

目标矩阵的M方向起始位置

[0, 32767]

B

strideW

W方向stride

[1,63]

elem

strideH

H方向stride

[1,63]

elem

Wk

W方向卷积核尺寸(膨胀前)

[0,511]

elem

Hk

H方向卷积核尺寸(膨胀前)

[0,511]

elem

dilationW

W方向dilation大小

[1, 255]

elem

dilationH

H方向dilation大小

[1, 255]

elem

filterW

W方向卷积核尺寸(膨胀前)(最高bit) 与Wk拼接为最终大小

[0,1]

2^8

filterH

H方向卷积核尺寸(膨胀前)(最高bit) 与Hk拼接为最终大小

[0,1]

2^8

transpose

是否转置

[0,1]

/

fmatrixCtrl

如果此位设置为0,则使用SPR.FMATRIX来描述此指令的特征图

如果此位设置为1,则使用SPR.FMATRIX_B来描述此指令的特征图

[0,1]

/

sizeChannel

通道数

[0, 2^16-1]

elem

分形块的大小在微架构中,16x16是类型为f16的基本分形,而16x32是类型为b8的基本分形。

此外,可以通过对特殊寄存器FMATRIX进行设置,通过该寄存器对feature map进行描述。共有两个FMATRIX寄存器(FMATRIX, FMATRIX_B),可根据需要配置使用。

表2 虚拟矩阵配置

FMATRIX

位宽

说明

取值范围

Feature Map Size

[15:0]

W方向大小

[0, 32768]

[31:16]

H方向大小

[0, 32768]

Padding Size

[39:32]

左pad大小

[0, 255]

[47:40]

右pad大小

[0, 255]

[55:48]

顶部pad大小

[0, 255]

[63:56]

底部pad大小

[0, 255]

L1循环缓冲区支持定制化配置,其范围从L1地址0开始,到config - 1结束(单位为字节)。config的最小值为1024,若设置为1至1023之间,可能导致未知行为。该配置决定了img2col指令的访问边界。如果该指令的初始地址不在边界内,则结果未知。如果指令中更新的地址超过了边界,它将被四舍五入到循环缓冲区的起始位置。如果L1_3D_SIZE为零,则整个L1 SRAM即为循环缓冲区,设置的intrinsic接口如下:

void set_l1_3d_size(uint64_t config);