用于深度学习的粗粒度可重构阵列算子设计方法及系统技术方案

技术编号:37987847 阅读:9 留言:0更新日期:2023-06-30 10:02
本发明专利技术提供了一种用于深度学习的粗粒度可重构阵列算子设计方法及系统,涉及深度学习加速器编译器技术领域。该方法包括:提供至少一个具有预设卷积核大小k和预设滑动步长s的算子OP

【技术实现步骤摘要】
用于深度学习的粗粒度可重构阵列算子设计方法及系统


[0001]本专利技术涉及深度学习加速器编译器
,尤其涉及一种用于深度学习的粗粒度可重构阵列算子的设计与实现。

技术介绍

[0002]近年来,深度学习在计算机视觉和语音识别等任务中获得巨大的成功,在各种复杂的任务中在精度上和速度上都超过了人类水平。然而深度学习应用的高计算量、高数据量特性以及不同网络结构对芯片的算力,可编程性都提出了更高的要求。另外,随着深度学习应用在物联网,自动驾驶等嵌入式设备的部署,芯片的能效同样也是重要的考虑因素。
[0003]能效以及吞吐率是深度学习加速器的两个重要指标。深度学习中存在大量的完美嵌套循环,先前的编译器工作关注重点在于循环顺序以及tiling策略。循环顺序以及tiling策略共同影响DRAM与片上存储之间的通信量,从而决定了整个芯片的能效。然而在一些实时应用场景如自动驾驶,目标跟踪等,需要加速器快速处理海量的图像语音等信息,这些应用场景对加速器的吞吐率提出了更高的要求。粗粒度可重构阵列(Coarse

Grained Reconfigurable Array,CGRA)在深度学习应用中获得越来越多的关注。CGRA的吞吐率很大程度依赖于编译器如何高效地将应用映射到CGRA相应的硬件资源上,提高资源利用率,尤其是计算资源,即处理单元阵列(Process Elements Array,PEA)。然而先前CGRA编译器工作鲜有涉及深度学习应用在CGRA上的映射问题。

技术实现思路

[0004]本专利技术提供了一种用于深度学习的粗粒度可重构阵列算子的设计方法及系统,满足能效以及吞吐率应用于深度学习的两个重要指标,高效将应用映射到CGRA相应的硬件资源上。
[0005]本专利技术提供了一种用于深度学习的粗粒度可重构阵列算子设计方法,包括:提供至少一个具有预设卷积核大小k和预设滑动步长s的算子OP
k,s
,k、s≥1且为整数;基于算子OP
k,s
,确定每个算子OP
k,s
所需的处理单元PE的数量,根据所需的处理单元PE以执行行卷积计算,其中,PE≥1且为整数;根据每个算子OP
k,s
所需的处理单元PE的数量,确定算子OP
k,s
所需的各个处理单元PE之间的硬件互连结构,构成算子OP
k,s
库。
[0006]根据本专利技术的实施例,执行行卷积计算包括:将卷积核拆分为i行,i≥1且为整数,基于所需的处理单元PE以对每行卷积核的权重向量与输入向量以窗口滑动的方式进行内积运算,得到每行卷积核的部分和;其中,窗口滑动包括:以预设步长s在每行卷积核上滑动。根据本专利技术的实施例,执行行卷积计算还包括:获取每行卷积核的部分和并累加,得到最终的输出特征图像。
[0007]根据本专利技术的实施例,每个算子OP
k,s
所需的处理单元PE的数量根据以下公式来确定:
[0008][0009]其中,PE
n
表示每个算子OP
k,s
所需的处理单元PE的数量
[0010]根据本专利技术的实施例,执行行卷积计算还包括:获取窗口滑动时相邻窗口的启动间隔;当每行卷积核以窗口滑动的方式进行时,按照启动间隔依次启动内积运算,启动间隔根据以下公式来确定:
[0011][0012]其中,II为启动间隔,PEn为每个算子OP
k,s
所需的处理单元PE的数量,Q为单行滑动窗口内的内积运算中乘累加的数量。
[0013]根据本专利技术的实施例,所需的处理单元PE之间的硬件互连结构包括以行排布、以列排布或以L型排布的多种排布方式。
[0014]根据本专利技术的实施例,提供每行卷积核的权重向量以及输入特征图的向量;获取输入特征图中的起始位置以及数据长度,根据起始位置以及数据长度进行窗口的滑动以及内积运算。
[0015]根据本专利技术的另一实施例,提供了一种用于实现上述任一实施例的用于深度学习的粗粒度可重构阵列算子设计系统,包括:控制器,用于向至少一个处理单元PE输入信息,其中,输入信息包括权重向量、输入向量、状态指令和操作指令,状态指令用于确定操作指令的执行状态,操作指令用于至少一个处理单元PE计算权重向量和输入向量的内积;输入总线,用于向至少一个处理单元PE输入权重向量和输入向量;配置总线,用于向至少一个处理单元PE输入状态指令和操作指令;处理单元阵列PEA,包括多个处理单元PE,每个处理单元PE用于根据操作指令对权重向量与输入向量进行内积运算,得到内积结果;输出总线,用于供至少一个处理单元PE输出内积结果。
[0016]根据本专利技术的另一实施例,处理单元阵列PEA共有M列N行,M≥1且为整数,N≥1且为整数,其中:每列处理单元PE共享一根输入总线;每行处理单元PE共享一根输出总线;每列处理单元PE共享一根配置总线。
[0017]根据本专利技术的另一实施例,处理单元PE包括:指令寄存子单元,用于存储操作指令和状态指令;指令解码子单元,用于解码操作指令和状态指令;权重寄存子单元,用于存储权重向量或输入向量;本地寄存子单元,用于存储中间数据;逻辑运算子单元,用于根据操作指令对权重向量和输入向量进行内积运算,得到内积结果。
[0018]与现有技术相比,本专利技术提供的用于深度学习的粗粒度可重构阵列算子设计方法,至少具有以下有益效果:
[0019]以最大化资源利用率为目标,在满足存储和输入输出带宽资源约束下,将尽可能多的相同或不同的算子实现映射到粗粒度可重构阵列上,基于行卷积计算,在不同数量的处理单元PE下,软件流水化每种算子,同时分析不同的启动间隔下算子对输入数据的需求。同时,不同算子对应不同的硬件实现,实现多种处理单元PE互连结构,所有的硬件实现构成算子库,为深度学习应用映射方法提供了新的解决思路。
附图说明
[0020]通过以下参照附图对本专利技术实施例的描述,本专利技术的上述以及其他目的、特征和优点将更为清楚,在附图中:
[0021]图1为本专利技术实施例用于深度学习的粗粒度可重构阵列算子设计流程图;
[0022]图2a为3
×
3的传统卷积计算以及图2b为本专利技术实施例的行卷积计算示意图;
[0023]图3a、3b为本专利技术实施例的算子OP
3,1
内积运算示意图;
[0024]图4为本专利技术实施例PE数量分别为2和3时算子OP
3,1
软件流水化的结构图;
[0025]图5a、5b为本专利技术实施例的算子OP
3,1
所需处理单元PE之间的互连结构示意图;
[0026]图6为本专利技术实施例的算子OP
5,1
所需处理单元PE之间的互连结构部分示意图;
[0027]图7为本专利技术实施例的算子OP
3,1
在图5a中(a)上的映射示意图。
[0028]图8为本专利技术实施例PEA阵列系统的示意图;
[本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种用于深度学习的粗粒度可重构阵列算子设计方法,其特征在于,包括:提供至少一个具有预设卷积核大小k和预设滑动步长s的算子OP
k,s
,k、s≥1且为整数;基于所述算子OP
k,s
,确定每个所述算子OP
k,s
所需的处理单元PE的数量,根据所述所需的处理单元PE以执行行卷积计算,其中,PE≥1且为整数;根据每个所述算子OP
k,s
所需的处理单元PE的数量,确定算子OP
k,s
所需的各个所述处理单元PE之间的硬件互连结构,构成算子OP
k,s
库。2.根据权利要求1所述的用于深度学习的粗粒度可重构阵列算子设计方法,所述执行行卷积计算包括:将卷积核拆分为i行,i≥1且为整数,基于所述所需的处理单元PE以对每行卷积核的权重向量与输入向量以窗口滑动的方式进行内积运算,得到每行卷积核的部分和;其中,所述窗口滑动包括:以所述预设步长s在所述每行卷积核上滑动。3.根据权利要求2所述的用于深度学习的粗粒度可重构阵列算子设计方法,其特征在于,所述执行行卷积计算还包括:获取每行卷积核的部分和并累加,得到最终的输出特征图像。4.根据权利要求2所述的用于深度学习的粗粒度可重构阵列算子设计方法,其特征在于,所述每个所述算子OP
k,s
所需的处理单元PE的数量根据以下公式来确定:其中,PE
n
表示每个所述算子OP
k,s
所需的处理单元PE的数量。5.根据权利要求4所述的用于深度学习的粗粒度可重构阵列算子设计方法,其特征在于,所述执行行卷积计算还包括:获取窗口滑动时相邻窗口的启动间隔;当所述每行卷积核以窗口滑动的方式进行时,按照启动间隔依次启动内积运算,所述启动间隔根据以下公式来确定:其中,II为启动间隔,PEn为每个所述算子OP
k,s
所需的处理单元PE的数量,Q为单行滑动窗口内的内积运算中乘累加的数量。6.根据权利要求1所述的用于深度学习的粗粒度可重构阵列算子设计方法,...

【专利技术属性】
技术研发人员:陈松倪小兵何凯旋陶永进孙文迪康一
申请(专利权)人:中国科学技术大学
类型:发明
国别省市:

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

1