【技术实现步骤摘要】
乘累加优化方法、系统、设备和介质
[0001]本申请涉及处理器领域,且更具体地,涉及第一张量和第二张量的乘累加优化方法
、
系统
、
电子设备和非暂时存储介质
。
技术介绍
[0002]在卷积神经网络的推理和训练模型中,通用矩阵乘
(General Matrix Multiplication
,
GEMM)
和卷积算子
(Conv)
都是一个非常常见的算子,使用频率非常高,比如在
resnet50
这种模型中,卷积算子非常多
。
所以对卷积算子的优化,对于处理器加速推理与训练模型变得非常重要
。
技术实现思路
[0003]根据本申请的一个方面,提供一种第一张量和第二张量的乘累加优化方法,包括:加载第一张量中要进行乘累加的一部分;重复利用加载的所述一部分与第二张量中的各个部分分别进行相乘运算;将每次所述相乘运算的当前乘法结果累加并寄存到与每次所述相乘运算相对应的寄存器中
。
[0004]根据本申请的另一个方面,提供一种第一张量和第二张量的乘累加优化系统,包括:加载装置,被配置为加载第一张量中要进行乘累加的一部分;相乘装置,被配置为重复利用加载的所述一部分与第二张量中的各个部分分别进行相乘运算;寄存装置,被配置为将每次所述相乘运算的当前乘法结果累加并寄存到与每次所述相乘运算相对应的寄存器中
。
[0005]根据本申请的另一个方面,提供一种电子设备, ...
【技术保护点】
【技术特征摘要】
1.
一种第一张量和第二张量的乘累加优化方法,包括:加载第一张量中要进行乘累加的一部分;重复利用加载的所述一部分与第二张量中的各个部分分别进行相乘运算;将每次所述相乘运算的当前乘法结果累加并寄存到与每次所述相乘运算相对应的寄存器中
。2.
根据权利要求1所述的方法,其中,利用循环嵌套方式来实现所述乘累加优化方法
。3.
根据权利要求1所述的方法,还包括:基于寄存器资源设置用于寄存乘累加结果的寄存器的个数
R_num
;基于
R_num
,确定内循环次数
inner_loop
和外循环次数
outer_loop
,其中,
inner_loop
=
R_num
,
outer_loop
为第二张量中要进行相乘运算的多个维度的总块个数
Iter_NUM
除以
inner_loop。4.
根据权利要求3所述的方法,其中所述加载第一张量中要进行乘累加的一部分包括:在第
out_idx
个外循环运算中,其中
out_idx>
=0且
<outer_loop
:加载第一张量中要进行乘累加的一部分;其中,所述重复利用加载的所述一部分与第二张量中的各个部分分别进行相乘运算包括重复内循环乘累加操作达内循环次数
inner_loop
,其中第
inner_idx
次内循环乘累加操作包括如下步骤,其中
inner_idx>
=0且
<inner_loop
:加载要与所述第一张量的所述一部分进行乘累加的第二张量的第
inner_idx
部分;将第一张量的所述一部分与第二张量的第
inner_idx
部分相乘以得到当前乘法结果
sv
;其中,所述将每次所述相乘运算的当前乘法结果累加并寄存到与每次所述相乘运算相对应的寄存器中包括:将当前乘法结果
sv
累加到第
inner_idx
寄存器先前寄存的先前乘累加结果作为当前乘累加结果且用所述第
inner_idx
寄存器来寄存所述当前乘累加结果
。5.
根据权利要求3所述的方法,其中,在所述第一张量是用于卷积运算的具有
K
和
C
维度的权重张量且所述第二张量是用于卷积运算的具有
N、C、H、W
维度的数据张量的情况下,所述第二张量中要进行相乘运算的多个维度为
N
维度
、H
维度
、W
维度,
Iter_NUM
=
N_num*H_num*W_num
,其中
W
表示第二张量的宽度,
H
表示第二张量的高度,
N
表示批量大小,
C
表示通道数,
K
表示权重核数,
N_num
表示
W
维度的块个数,
H_num
表示
H
维度的块个数,
W_num
表示
W
维度的块个数
。6.
根据权利要求4所述的方法,其中,所述第一张量的所述一部分为矩阵
{k,c,0,0}
,所述第二张量的第
inner_idx
部分为矩阵
{n,c,h,w}
,其中,
k>
=0且
<K
,
c>
=0且
<C,
其中,
iterator
=
out_idx*inner_loop+inner_idx
;
N_num
=
N
,
H_num
=
(H+T
‑
1))/T
,
W_num
=
(W+(T
‑
1))/T
,
w
=
iterator
%
W_num*T
;
h
=
iterator/W_num
%
H_num*T
,
n
=
iterator/W_num/H_num
,其中%表示取余,其中,所述块是每次能够相乘的最小单位,块的大小为
T*T
,其中
T
是正整数
。7.
根据权利要求6所述的方法,其中,在从
k
=0开始
、k+
=
kstep
的各个循环中的每个循环中,都执行
outer_loop
个外循环运
算,其中
kstep
是
k
的步长,在所述
outer_loop
个外循环运算中的第
out_idx
个外循环运算中,执行从
c
=0开始
、c+
=
cstep
的各个循环,在从
c
=0开始
、c+
=
cstep
的各个循环中的每个循环中,加载第一张量中要进行乘累加的矩阵
{k,c,0,0}
,且重复所述乘累加操作达内循环次数
inner_loop
,其中
cstep
是
c
的步长
。8.
根据权利要求1‑7中任一所述的方法,其中,
T
=
8。9.
根据权利要求3所述的方法,其中,在所述第一张量是用于矩阵乘运算的
X2*X3的张量且所述第二张量是用于矩阵乘运算的
X1*X2的张量的情况下,所述第二张量中要进行相乘运算的多个维度为
X1和
X2维度,
Iter_NUM
=
X1_num*X2_num
,其中
X1表示第二张量的高度,
X2表示第二张量的宽度,
X1_num
表示
X1维度的块个数,
X2_num
表示
X2维度的块个数
。10.
根据权利要求3所述的方法,其中,
inner_loop
个内循环乘累加操作被展开为
inner_loop
个具体运算代码,且将所述
inner_loop
个具体运算代码与其他运算代码共同进行编译优化
。11.
一种第一张量和第二张量的乘累加优化系统,包括:加载装置,被配置为加载第一张量中要进行乘累加的一部分;相乘装置,被配置为重复利用加载的所述一部分与第二张量中的各个部分分别进行相乘运算;寄存装置,被配置为将每次所述相乘运算的当前乘法结果累加并寄存到与每次所述相乘运算相对应的寄存器中
。12.
根据权利要求
11<...
【专利技术属性】
技术研发人员:请求不公布姓名,
申请(专利权)人:上海壁仞科技股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。