本技术的一种基于多张量核心处理器的卷积计算数据重用方法,控制核心通过DMA将多个不同的输入特征图分别分配给多个张量核心的片上高速缓存SPM;控制核心通过DMA将卷积核广播到前述多个张量核心的片上高速缓存SPM;前述多个张量核心依据各自的片上高速缓存SPM的输入特征图、卷积核进行计算;前述多个张量核心完成计算后,将计算结果写回内存,之后广播更新卷积核重复步骤s2,直到将所有卷积核广播一遍,得到不同输出特征图的最终结果,写回内存。通过显著降低卷积计算在多张量核心处理器上的内存访存需求,充分发挥众核计算能力,提升多张量核心处理器的计算性能。
背景技术
深度神经网络中的绝大部分计算为卷积计算,卷积神经网络的训练和推理过程中,卷积操作占据了绝大部份的计算量,因此神经网络硬件加速器通常会设计专门的计算部件以实现卷积运算的加速。卷积加速部件一般采用的张量处理器(Tensor ProcessingUnit,TPU),可以高效地集成大量乘法部件,以实现很高的芯片面积利用率和芯片效能比。
对于计算密集型的函数,比如深度学习中的卷积,如何及时地给强大的张量计算核心提供足够多的数据,是当前需要解决的问题。
深度学习中的卷积算子如图1所示:
上述卷积运算也可以描述为以下的7层循环:
for n in N://第6层:输入特征图数量
for m in M://第5层:输出通道
for h in E://第4层:输出特征图高度
for w in F://第3层:输出特征图宽度
for r in R://第2层:卷积核高度
for s in S://第1层:卷积核宽度
for c in C://第0层:输入通道
f_out[n][e][f][m]+=ker[m][r][s][c]*f_in[n][e+r][f+s][c]//加法在R、S、C上累加,合并成1个数
其中f_in代表输入特征图数据,ker代码卷积核数据,f_out代表输出特征图数据。
这7层循环的顺序在数学上是可以互换的。
上述示例,将7层循环按顺序遍历完成即可得到卷积计算的最终结果。另外一种实现方式,就是将该7层循环进行数据格式转换,变成通用的矩阵乘计算,从而达到快速计算的目的。
不论是7重循环遍历,还是转变成矩阵乘运算,均存在着较高的数据重复访存,会显著增加访存的压力,降低张量核心获取数据的速度,从而影响最终的运算速度。
实现思路