一种硬件加速器多阵列并行计算方法及系统技术方案

技术编号:34744405 阅读:15 留言:0更新日期:2022-08-31 18:37
本发明专利技术公开了一种硬件加速器多阵列并行计算方法及系统,对硬件加速器中的卷积运算进行分块处理;根据分块处理后的单层卷积,加载GEMM运算对应的输入数据、权重数据,根据加载的输入数据、权重数据以及数据在加速器缓存中的起始地址并行进行计算,通过多阵列的方式实现GEMM的高效运算,理想状态下能够节省GEMM运算接近至少一半的运算时间,提升基于卷积的神经网络在张量加速器上的推理效率,本发明专利技术多阵列的并行计算方式可减少权重数据的重复加载,缩小计算时间和访存时间的差距,提升卷积运算的效率,各计算模块可以并行计算,将不同模块的计算结果直接保存到根据基地址和偏移地址计算出的缓存地址中,保证了计算结果的正确性。性。性。

【技术实现步骤摘要】
一种硬件加速器多阵列并行计算方法及系统


[0001]本专利技术属于神经网络张量加速器设计工程
,具体涉及一种硬件加速器多阵列并行计算方法及系统。

技术介绍

[0002]基于卷积神经网络的算法凭借其快速、高效的特点在自然语言处理、目标检测等领域都发挥了重要作用。卷积神经网络相关应用程序的开发和快速落地也已经逐渐成为热点问题,对于军工等对功耗和效率有高要求的特殊领域也具有重要意义。随着算法的更新迭代,模型越来越复杂,导致只靠通用处理器和图形处理器无法完成高效实时计算。
[0003]通用的张量硬件加速器一般采用通用矩阵乘法(General Matrix Multiplication,GEMM)算法加速矩阵运算,通过对输入矩阵进行分块读取,减小访存压力。同时可以通过对矩阵运算具体实现过程中的多层循环进行分块、展开、重排序等,提升运算效率。
[0004]目前存在的硬件加速器有以下缺点:
[0005]GEMM运算有多种实现方式,但是都只能通过单阵列对矩阵运算进行加速。当缓存资源足够时,访存执行完毕后会等待单阵列GEMM运算结束,才能继续进行访存操作,造成效率低下,缓存资源浪费。

技术实现思路

[0006]本专利技术的目的在于提供一种硬件加速器多阵列并行计算方法及系统,以克服现有技术的不足。
[0007]一种硬件加速器多阵列并行计算方法,包括以下步骤:
[0008]S1,对硬件加速器多阵列中的卷积运算进行分块处理;
[0009]S2,根据分块处理后的单层卷积计算,加载GEMM运算所需的输入数据以及权重数据,根据加载的输入数据、权重数据及数据在缓存中的起始地址进行多阵列并行计算;
[0010]S3,将多阵列并行计算的中间结果数据存入各计算模块对应的累加缓存地址中。
[0011]优选地,将卷积运算的具体分为在芯片或FPGA上实现输入与权重数据读取与计算的片上与片外12层循环控制,其中外层4层循环表示对卷积分块读取后的输入与权重数据的片外循环读取控制,内层的8层循环表示在部署了加速器的硬件片上完成的GEMM运算对应的卷积分块读取与计算循环控制,其中的最内层2层循环表示向量

矩阵乘法。
[0012]优选地,单次GEMM运算加载的输入数据大小为(CI_in
×
ho_in
×
wo_in
×
CHAN_IN);加载权重数据的大小为(CO_in
×
kw
×
kh
×
CHAN_IN
×
CHAN_OUT),根据加载数据大小及权重,得到(CI_in
×
CO_in
×
ho_in
×
wo_in
×
CHAN_OUT)大小的累加运算结果;
[0013]其中ho_in和wo_in分别为fea_inp数据的分块大小,kw、kh为卷积核的大小,CHAN_IN和CHAN_OUT表示GEMM运算中的最小运算单元,即一个计算阵列的大小为(1,CHAN_IN)
×
(CHAN_IN,CHAN_OUT),也表示GEMM核每次最少完成这个大小的向量

矩阵乘法运算。
[0014]优选地,将内层8层循环中除去2层向量矩阵乘循环的中间6层循环对应成三层循环控制。
[0015]优选地,其中最内层循环设定了输入数据、权重数据、累加结果数据在缓存中的基地址,与外两层循环的偏移量相加,得到数据在缓存中的实际地址,访问缓存读取数据,执行向量

矩阵乘法,将乘累加的结果写回累加缓存。
[0016]优选地,最外层循环:fea_inp数据中每kw列作为一个单元,这个单元内的数据与wgt数据乘累加计算完毕后,得到acc矩阵中第一列的结果,按照wo_in次数循环计算。
[0017]优选地,第2层循环:在每个kw列数据组成的小单元中,按从左到右的顺序,fea_inp buffer中第一列的数据先和wgt buffer中第一列的数据进行乘累加运算,结果放在acc buffer中的第一列;接着计算fea_inp buffer和wgt buffer中第二列的数据,结果与acc buffer第一列中已有的结果相加,重新作为acc buffer中第一列的结果;重复第2层循环,直到计算完一个小单元内的kw列数据;得到acc buffer中第一列的最终结果。
[0018]一种硬件加速器多阵列并行计算系统,包括分块模块和处理模块;
[0019]分块模块用于对硬件加速器多阵列中的卷积运算进行分块处理;
[0020]处理模块根据分块处理后的单层卷积计算,加载输入数据以及权重数据,根据加载的输入数据、权重数据以及数据的起始地址并行进行计算。
[0021]优选地,每个模块对权重数据是共享的,同时访问的。
[0022]优选地,各计算模块可以并行计算,将不同模块的计算结果直接保存到根据基地址和偏移地址计算出的缓存地址中。
[0023]与现有技术相比,本专利技术具有以下有益的技术效果:
[0024]本专利技术一种硬件加速器多阵列并行计算方法,对硬件加速器多阵列中的卷积运算进行分块处理;根据分块处理后的单层卷积,加载输入数据以及权重数据,根据加载的输入数据、权重数据以及数据的起始地址并行进行计算,通过多阵列的方式实现GEMM的高效运算,理想状态下能够节省GEMM运算接近一半的运算时间,提升基于卷积的神经网络在张量加速器上的推理效率。
[0025]优选的,本专利技术多阵列的并行计算方式可减少数据的重复加载,缩小计算时间和访存时间的差距,提升卷积运算的效率。
[0026]优选的,各计算模块可以并行计算,将不同模块的计算结果直接保存到根据基地址和偏移地址计算出的缓存地址中,保证了计算结果的正确性。
[0027]本专利技术一种硬件加速器多阵列并行计算系统,能够支持在硬件平台部署张量加速器,并实现多阵列并行计算,提升基于卷积的神经网络的推理性能。
附图说明
[0028]图1是本专利技术实施例中基于通用的张量加速器的单次GEMM运算数据流;
[0029]图2是本专利技术实施例中GEMM运算具体实现时对应的3层循环中的最外层循环;
[0030]图3是本专利技术实施例中GEMM运算具体实现时对应的3层循环中的内层循环;
[0031]图4是本专利技术实施例中GEMM运算具体实现时对应的3层循环中的最内层循环;
[0032]图5是本专利技术实施例中逻辑上按列分块后的输入矩阵;
[0033]图6是本专利技术实施例中逻辑上按列分块后的结果矩阵;
[0034]图7是本专利技术实施例中在通用的硬件张量加速器中卷积并行计算的流程;
[0035]图8是本专利技术实施例中两个并行计算模块对应的输入矩阵;
[0036]图9是本专利技术实施例中两个并行计算模块对应的结果矩阵。
具体实施方式
[00本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种硬件加速器多阵列并行计算方法,其特征在于,包括以下步骤:S1,对硬件加速器多阵列中的卷积运算进行分块处理;S2,根据分块处理后的单层卷积,加载GEMM运算所需的输入数据以及权重数据,根据加载的输入数据、权重数据及数据在缓存中的起始地址进行多阵列并行计算;S3,将多阵列并行计算的中间结果数据存入各计算模块对应的累加缓存地址中。2.根据权利要求1所述的一种硬件加速器多阵列并行计算方法,其特征在于,将卷积运算的具体分为在芯片或FPGA上实现输入与权重数据读取与计算的片上与片外12层循环控制,其中外层4层循环表示对卷积分块读取后的输入与权重数据的片外循环读取控制,内层的8层循环表示在部署了加速器的硬件片上完成的GEMM运算对应的卷积分块读取与计算循环控制,其中的最内层2层循环表示向量

矩阵乘法。3.根据权利要求2所述的一种硬件加速器多阵列并行计算方法,其特征在于,单次GEMM运算加载的输入数据大小为(CI_in
×
ho_in
×
wo_in
×
CHAN_IN);加载权重数据的大小为(CO_in
×
kw
×
kh
×
CHAN_IN
×
CHAN_OUT),根据加载数据大小及权重,得到(CI_in
×
CO_in
×
ho_in
×
wo_in
×
CHAN_OUT)大小的累加运算结果;其中ho_in和wo_in分别为fea_inp数据的分块大小,kw、kh为卷积核的大小,CHAN_IN和CHAN_OUT表示GEMM阵列对输入特征的多通道并行乘累加处理的通道数和并行输出的通道数,即一个计算阵列的大小为(1,CHAN_IN)
×
(CHAN_IN,CHAN_OUT),也表示GEMM核每次最少完成这个大小的向量

矩阵乘法运算。4.根据权利要求2所述的一种硬件加速器多阵列并行计算方法,其特征在于,将内层8层循环中除去2层向量矩阵乘循环的中间6层循环对应成3层循环控制,该3层循...

【专利技术属性】
技术研发人员:梅魁志常含赵英海程军高凡朱雷黄城栋何云新贺政
申请(专利权)人:西安交通大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1