面向FPGA的深度与逐点卷积统一乘加计算装置及方法
本发明实施例涉及神经网络硬件加速,尤其涉及一种面向fpga的深度与逐点卷积统一乘加计算装置及方法。
背景技术:
1、随着卷积神经网络在目标检测、图像分类、智能安防、工业检测和机器人视觉等领域的广泛应用,如何在资源受限的边缘设备上实现低功耗、低延迟的神经网络推理,已成为神经网络硬件加速的重要研究方向。现场可编程门阵列(fpga)具有并行计算能力强、数据通路可配置和处理延迟低等特点,适合用于构建卷积神经网络加速器。但fpga内部的数字信号处理单元、块随机存取存储器、查找表和触发器等资源有限,因此需要在计算性能、数据传输效率和硬件资源占用之间进行平衡。
2、现有fpga实现通常分别设置深度卷积计算核和逐点卷积计算核。虽然两类卷积的计算维度和数据访问方式不同,但均包含输入与权重读取、乘法、加法归约、部分和累加及结果输出等过程。分别设置专用计算核会重复配置乘加阵列、片上缓存、地址生成和控制逻辑。当两类计算核分时运行时,未工作的计算核仍占用数字信号处理单元、块随机存取存储器、查找表和触发器等资源,降低了硬件资源利用率。
3、采用共享计算核可减少资源重复,但若仅降低并行度或增加时间复用次数,容易增加计算周期和处理延迟;若提高并行度,则可能受到片上存储端口数量限制,造成数据供给不足、端口冲突或流水效率下降。此外,逐点卷积主要沿输出通道和输入通道方向计算,深度卷积主要沿特征通道和卷积核抽头方向计算,两者直接映射到同一阵列时,还可能出现并行维度不匹配、计算单元闲置、抽头分组不规则及部分和连续读写依赖等问题。
技术实现思路
1、本发明实施例提供了一种面向fpga的深度与逐点卷积统一乘加计算装置及方法,使深度卷积与逐点卷积两类卷积复用同一套统一乘加阵列、相关缓存和输出处理逻辑。通过卷积模式控制和运算维度重映射,使同一阵列适应两种卷积不同的并行方向;通过多路并行输入缓存、权重重排、抽头分组及相应调度方式,解决并行维度不匹配、计算单元闲置、抽头分组不规则及部分和连续读写依赖问题,从而在减少硬件资源占用的同时,兼顾计算效率和可扩展性。
2、第一方面,本发明实施例提供了一种面向fpga的深度与逐点卷积统一乘加计算装置,所述装置包括:
3、参数与模式控制模块,用于接收不同卷积模式的控制信号,所述卷积模式包括逐点卷积模式和深度卷积模式;
4、多副本并行输入缓存组,用于存储从外部存储器加载的输入特征数据,所述缓存组包含多个具有独立读取能力的缓存副本;
5、权重缓存,用于存储经过重排后的卷积权重数据;
6、统一乘加阵列,具有第一并行维度p和第二并行维度r,所述统一乘加阵列为由多个并行乘法器及相应加法归约结构组成的计算阵列;
7、操作数选择与维度映射模块,连接于所述多副本并行输入缓存组、权重缓存及统一乘加阵列之间,用于根据所述参数与模式控制模块发出的控制信号,对所述统一乘加阵列的运算维度进行重映射;
8、部分和缓存,用于存储所述统一乘加阵列输出的中间累加结果;
9、输出处理模块,用于对所述部分和缓存中的数据执行后处理并写回外部存储器;
10、其中,在所述逐点卷积模式下,所述第一并行维度p映射为输出通道维度,所述第二并行维度r映射为输入通道维度;在所述深度卷积模式下,所述第一并行维度p映射为特征通道维度,所述第二并行维度r映射为卷积核抽头维度。
11、在一些实施例中,所述多副本并行输入缓存组还用于:
12、在逐点卷积模式下,所述多个缓存副本存储相同的输入特征数据,并响应于所述操作数选择与维度映射模块的请求,向所述统一乘加阵列的同一行或不同行并行提供相同的输入数据;
13、在深度卷积模式下,所述多个缓存副本存储相同的输入特征数据,并响应于所述操作数选择与维度映射模块的请求,向所述统一乘加阵列的第二并行维度r的不同列并行提供同一特征通道内不同空间位置的输入数据。
14、在一些实施例中,在所述深度卷积模式下,所述操作数选择与维度映射模块根据统一乘加阵列第二并行维度r的并行度,将卷积核的有效抽头划分为若干抽头组;
15、当有效抽头数量不能被所述第二并行维度r整除时,在最后一个抽头组中设置无效抽头位置,并对该无效抽头位置对应的输入数据和/或权重置零,以使每个抽头组均能复用相同的乘加和加法归约结构。
16、在一些实施例中,所述装置采用抽头组优先的调度机制执行深度卷积计算,固定当前处理的抽头组,遍历当前空间分块内的多个输出位置,完成当前处理的抽头组在所有输出位置上的乘加运算后,再切换至下一个抽头组进行处理,以增大同一部分和缓存地址相邻两次更新操作之间的时间间隔。
17、在一些实施例中,还包括权重装载与重排模块,所述权重装载与重排模块用于根据所述卷积模式读取相应权重,并按照所述统一乘加阵列所需的数据排列顺序写入权重缓存。
18、第二方面,本发明实施例还提供了一种面向fpga的深度与逐点卷积统一乘加计算方法,应用于如第一方面所述的面向fpga的深度与逐点卷积统一乘加计算装置,所述方法包括:
19、接收卷积模式配置参数,确定当前执行深度卷积或逐点卷积;
20、加载输入特征数据至多副本并行输入缓存组,并加载卷积权重数据至权重缓存;
21、根据当前卷积模式,对统一乘加阵列的运算维度进行重映射:若为逐点卷积模式,将阵列第一并行维度映射为输出通道,第二并行维度映射为输入通道;若为深度卷积模式,将阵列第一并行维度映射为特征通道,第二并行维度映射为卷积核抽头;
22、基于重映射后的维度关系,从所述多副本并行输入缓存组及权重缓存中并行读取操作数送入所述统一乘加阵列执行乘加运算,生成中间累加结果;
23、将所述中间累加结果存入部分和缓存,并对所述部分和缓存中的数据进行后处理,生成最终的输出特征数据。
24、在一些实施例中,所述从所述多副本并行输入缓存组中并行读取操作数,包括:
25、在逐点卷积模式下,控制多个缓存副本向统一乘加阵列的多个计算行并行输出相同的输入数据;
26、在深度卷积模式下,控制多个缓存副本向统一乘加阵列的第二并行维度的多个计算列并行输出同一特征通道内不同空间位置的输入数据。
27、在一些实施例中,在执行所述深度卷积模式时,还包括:
28、根据统一乘加阵列第二并行维度的并行度,对卷积核的抽头进行分组;
29、判断当前抽头组内有效抽头数量是否满足并行度要求,若不满足,则在运算时对无效抽头位置对应的输入数据和/或权重执行置零操作;
30、采用抽头组优先策略进行调度:保持当前抽头组不变,遍历计算当前空间分块内的所有输出位置,完成后再切换至下一抽头组继续计算,直至所有抽头组计算完毕。
31、在一些实施例中,还包括:
32、设定输入特征数据及权重的量化位宽为第一预设位宽;
33、设定统一乘加阵列内部乘法结果及部分和缓存的位宽为第二预设位宽;
34、其中,所述第二预设位宽大于所述第一预设位宽,且所述第二预设位宽的位数足以容纳卷积运算全过程中的最大累加值。
35、在一些实施例中,所述后处理包括偏置相加、数据位宽转换、边界饱和及激活处理。
36、根据本发明实施例提供的面向fpga的深度与逐点卷积统一乘加计算装置及方法,其中,面向fpga的深度与逐点卷积统一乘加计算装置包括:参数与模式控制模块,用于接收不同卷积模式的控制信号,卷积模式包括逐点卷积模式和深度卷积模式;多副本并行输入缓存组,用于存储从外部存储器加载的输入特征数据,缓存组包含多个具有独立读取能力的缓存副本;权重缓存,用于存储经过重排后的卷积权重数据;统一乘加阵列,具有第一并行维度p和第二并行维度r,统一乘加阵列为由多个并行乘法器及相应加法归约结构组成的计算阵列;操作数选择与维度映射模块,连接于多副本并行输入缓存组、权重缓存及统一乘加阵列之间,用于根据参数与模式控制模块发出的控制信号,对统一乘加阵列的运算维度进行重映射;部分和缓存,用于存储统一乘加阵列输出的中间累加结果;输出处理模块,用于对部分和缓存中的数据执行后处理并写回外部存储器;其中,在逐点卷积模式下,第一并行维度p映射为输出通道维度,第二并行维度r映射为输入通道维度;在深度卷积模式下,第一并行维度p映射为特征通道维度,第二并行维度r映射为卷积核抽头维度。本发明通过运算维度重映射,使同一乘加阵列在逐点卷积模式下用于输出通道与输入通道的并行计算,在深度卷积模式下用于特征通道与卷积核抽头的并行计算,从而使两种卷积复用主要乘加数据通路。本发明不是单纯通过降低并行度换取资源节省,而是结合并行输入缓存、权重重排、抽头规则化及组优先调度,在减少硬件资源重复配置的同时,保持较高的计算阵列利用率和数据供给效率。基于此,本发明实施例面向fpga的深度与逐点卷积统一乘加计算装置及方法,能够使深度卷积与逐点卷积两类卷积复用同一套统一乘加阵列、相关缓存和输出处理逻辑。通过卷积模式控制和运算维度重映射,使同一阵列适应两种卷积不同的并行方向;通过多路并行输入缓存、权重重排、抽头分组及相应调度方式,解决并行维度不匹配、计算单元闲置、抽头分组不规则及部分和连续读写依赖问题,从而在减少硬件资源占用的同时,兼顾计算效率和可扩展性。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com