CN106875012A - 一种基于fpga的深度卷积神经网络的流水化加速*** - Google Patents
一种基于fpga的深度卷积神经网络的流水化加速*** Download PDFInfo
- Publication number
- CN106875012A CN106875012A CN201710072223.2A CN201710072223A CN106875012A CN 106875012 A CN106875012 A CN 106875012A CN 201710072223 A CN201710072223 A CN 201710072223A CN 106875012 A CN106875012 A CN 106875012A
- Authority
- CN
- China
- Prior art keywords
- module
- address
- value
- calculation
- characteristic pattern
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Image Analysis (AREA)
Abstract
本发明提出了一种基于FPGA的深度卷积神经网络的流水化加速***,该流水化加速***主要由输入数据分配控制模块、输出数据分配控制模块、卷积计算顺序序列化实现模块、池化计算顺序序列化实现模块、卷积计算模块、池化计算模块和卷积计算结果分配控制模块组成,此外所述流水化加速***还包含一个内部***级联接口。按照本发明设计的流水化加速***,能够在FPGA上高效并行流水化实现,并且有效地解决了计算过程中由于各类填充操作而导致的资源浪费和有效计算延误问题,能有效地降低***功耗和大大提高运算处理速度。
Description
技术领域
本发明属于神经网络计算领域,具体涉及一种基于FPGA的深度卷积神经网络的流水化加速***。
背景技术
伴随着深度学习掀起的新的机器学习热潮,深度卷积神经网络已经广泛应用于语音识别、图像识别和自然语音处理等不同的大规模机器学习问题中,并取得了一系列突破性的研究成果,其强大的特征学习与分类能力引起了广泛的关注,具有重要的分析与研究价值。
深度卷积神经网络模型具有模型深度高、层次复杂、数据量级大、并行度高、计算密集和存储密集等特征,大批量的卷积运算和池化操作往往使其在应用过程当中成为一大计算瓶颈,大量中间结果的存储也对计算机存储结构提出了较高的要求,这对于实时性较强而投入成本有限的应用场景来说是十分不利的。
当下比较常用的两种加速器是CPU和GPU,CPU基于其串行执行的结构特点在计算性能上并不能较理想地满足要求,GPU虽然在计算性能上优势明显但却与CPU一样无法突破功耗壁垒,并且CPU和GPU在可扩展性上都存在较为严重的限制。考虑到诸如上述因素,FPGA基于其配置灵活、高度并行、设计灵活、低功耗和性价比高等特点成为深度卷积神经网络模型十分理想的替代加速器,但如何结合FPGA芯片特点和平台优势充分挖掘出深度卷积神经网络计算模型的并行性以及流水性,合理高效地充分利用FPGA片上的有限资源仍是有待解决的问题。
发明内容
本发明提供了一种基于FPGA的深度卷积神经网络的流水化加速***,其目的在于同时结合深度卷积神经网络模型结构特点和FPGA芯片特点及平台优势,对传统软件层中已有实现的深度卷积神经网络计算结构进行重新调整并且设计相应的模块,充分挖掘深度卷积神经网络在计算过程当中潜在的并行性以及各计算层之间的流水性,使之更匹配于FPGA的设计特点,并且配合FPGA的相应的设计,以合理高效地利用FPGA设计的计算资源,为深度卷积神经网络的实现提供一套高性能的流水化加速方案。
本发明提供了基于FPGA的深度卷积神经网络的流水化加速***,其特征在于,该***包括:
输入数据分配控制模块、输出数据分配控制模块、卷积计算顺序序列化实现模块、池化计算顺序序列化实现模块、卷积计算模块、池化计算模块和卷积计算结果分配控制模块,此外所述流水化加速***还包含一个内部***级联接口;
所述输入数据分配控制模块同时与FPGA***接口和所述内部***级联接口、卷积计算顺序序列化实现模块相连;所述输出数据分配控制模块同时与FPGA***接口和所述内部***级联接口、卷积计算结果分配控制模块以及池化计算模块相连;所述卷积计算结果分配控制模块同时与所述卷积计算模块、输出数据分配控制模块以及池化计算顺序序列化实现模块相连;所述卷积计算顺序序列化实现模块与卷积计算模块之间直接相连;所述池化计算顺序序列化实现模块与池化计算模块之间直接相连;
所述输入数据分配控制模块实时监视所述卷积计算顺序序列化实现模块的数据消耗状况,向DDR片外存储器发送相关读数据命令并及时接收FPGA***接口和所述内部***级联接口传送来的输入数据,除此之外,所述输入数据分配控制模块还需将接收到的数据传送给所述卷积计算顺序序列化实现模块;
所述输出数据分配控制模块接收所述池化计算模块或所述卷积计算结果分配控制模块传送来的输入数据,并根据当前所处的计算阶段将接收到的数据传送给所述内部***级联接口或所述FPGA***接口,向所述DDR片外存储器发送相关写数据命令和相关中断通知;除此之外,所述输出数据分配控制模块还实时响应所述FPGA***接口发送的命令;
所述卷积计算顺序序列化实现模块结合调整参数将深度卷积神经网络中相关卷积操作的结构化计算顺序序列化,并为所述卷积计算模块及时传送序列化后的数据集;所述池化计算顺序序列化实现模块结合相关调整参数将深度卷积神经网络中相关池化操作的结构化计算顺序序列化,并为所述池化计算模块及时传送序列化后的数据集;
所述卷积计算模块完成深度卷积神经网络中的相关卷积计算,并将计算结果及时传送给所述卷积计算结果分配控制模块;所述池化计算模块主要负责完成深度卷积神经网络中的相关池化操作,并将计算结果及时传送给所述输出数据分配控制模块;
所述卷积计算结果分配控制模块接收所述卷积计算模块传来的计算结果数据,并根据当前所处的计算阶段将接收到的数据有组织有规格地传送给所述池化计算顺序序列化实现模块或所述输出数据分配控制模块。
所述内部***级联接口主要负责为所述FPGA片上***内部子***之间的级联或内部模块之间的连接提供有效接口,用于连接所述输出数据分配控制模块和输入数据分配控制模块。
进一步地,
所述卷积计算顺序序列化实现模块由特征图元组选择功能子模块和卷积核参数选择功能子模块组成。特征图元组选择功能子模块实现特征图元组选择功能,卷积核参数选择功能子模块实现卷积核参数选择功能。
所述池化计算顺序序列化实现模块与所述卷积计算顺序序列化实现模块中的特征图元组选择功能子模块的组成结构和实现的功能基本类似。
进一步地,
所述特征图元组选择功能子模块主要由特征图元组存储器、新旧选择器、标记参数存储器、地址参数存储器、计算窗口缓冲存储器和特征图元组计数器组成;
所述特征图元组存储器采用双端口RAM实现,用于存储所述输入数据分配控制模块送入的特征图元组;所述新旧选择器维护两个地址寄存器,分别为新值地址寄存器和旧值地址寄存器,用于从所述特征图元组存储器中选择相应的特征图元组并输出给所述卷积计算模块;所述标记参数存储器用于存储有效分析序号的新旧值选取标记和窗口计算提前结束标记,所述地址参数存储器用于存储有效分析序号的旧值选取地址,对于一个给定的深度卷积神经网络模型,所述标记参数存储器和所述地址参数存储器一次写入多次循环读取;所述计算窗口缓冲存储器采用双端口RAM实现,用于缓存所述新旧选择器输出的特征图元组并将其输出给所述卷积计算模块;所述特征值图元组计数器用于统计所述新旧选择器选择输出的特征图元组个数;
所述特征图元组选择功能子模块每节拍从所述输入数据分配控制模块获取一个特征图元组的KFP个特征值,这KFP个特征值组成一个输入特征值组;所述新旧选择器每次选择特征图元组进行输出时,查看当前新旧值选取标记值,若当前新旧值选取标记值为选新值标记,则从新值地址寄存器提供的起始地址处开始以特征值组为单位进行特征图元组的输出,每输出一个特征组后,新值地址寄存器自动加一,当当前选取的特征图元组输出完毕后,从所述标记参数存储器中顺序获取下一个新旧值选取标记作为当前新旧值选取标记;若当前新旧值选取标记值为选旧值标记,则将当前旧值选取地址送入旧值地址寄存器,并以此地址为起始地址以特征值组为单位进行特征图元组的输出,每输出一个特征组后,旧值地址寄存器自动加一,当当前选取的特征图元组输出完毕后,从所述标记参数存储器中顺序获取下一个新旧值选取标记作为当前新旧值选取标记,并从所述地址参数存储器中顺序获取下一个旧值选取地址作为当前旧值选取地址;
每当所述新旧选择器输出完一个特征图元组后,所述特征图元组计数器自动加一,若此时所述新旧选择器选择输出的特征图元组达到一个无填充元素的计算窗口大小,所述新旧选择器将暂停输出,直至位于所述计算窗口缓冲存储器中的当前计算窗口的特征图元组重复使用((DON-1)/KGP+1)次为止;若此时所述新旧选择器选择输出的特征图元组尚未达到一个无填充元素的计算窗口大小,但当前特征图元组计数器值与当前窗口计算提前结束标记值相同,此时所述新旧选择器也将提前暂停输出,直至位于所述计算窗口缓冲存储器中的当前计算窗口的特征图元组重复使用((DON-1)/KGP+1)次为止,并且在所述新旧选择器提前暂停输出的同时,从所述标记参数存储器中顺序获取下一个窗口计算提前结束标记作为当前窗口计算提前结束标记。
进一步地,
所述卷积核参数选择功能子模块中卷积核参数阵列的输出与所述特征图元组选择功能子模块中输出特征值组的输出同步进行;
所述卷积核参数选择功能子模块主要由第一卷积核参数存储器、第二卷积核参数存储器、选择器、标记参数存储器、地址参数存储器和核参阵列组计数器组成;
所述第一卷积核参数存储器和所述第二卷积核参数存储器皆采用双端口RAM实现,用于存储所述输入数据分配控制模块送入的卷积核参数;所述标记参数存储器用于存储核参地址跳跃标记参数,所述地址参数存储器用于存储跳跃目的核参地址参数,对于一个给定的深度卷积神经网络模型,所述标记参数存储器和所述地址参数存储器一次写入多次循环读取;所述选择器维护一个地址寄存器和一个跳转地址生成器,用于从所述第一卷积核参数存储器或所述第二卷积核参数存储器中选择相应的卷积核参数阵列组输出给所述卷积计算模块,其中跳转地址生成器从所述地址参数存储器获取跳跃目的核参地址参数,为所述选择器提供对应的跳跃目的核参地址;所述核参阵列组计数器用于统计输出的卷积核参数阵列组个数;
所述选择器每次选择卷积核参数阵列组进行输出时,比较当前核参地址跳跃标记参数值与当前核参阵列组计数器计数值是否相等;若相等,则将跳转地址生成器的当前跳转地址送入地址寄存器,并以此地址为起始地址,以卷积核参数阵列为单位进行卷积核参数阵列组的输出,每输出一个卷积核参数阵列,地址寄存器自动加一,当当前选取的卷积核参数阵列组输出完毕后,所述核参阵列组计数器自动增一,跳转地址生成器计算输出下一个跳转地址作为当前跳转地址;若不相等,则直接从地址寄存器提供的起始地址处开始,以卷积核参数阵列为单位进行卷积核参数阵列组的输出,每输出一个卷积核参数阵列,地址寄存器自动加一,当当前选取的卷积核参数阵列组输出完毕后,所述核参阵列组计数器自动增一;在所述选择器选择卷积核参数阵列组进行输出的过程中,所述第一卷积核参数存储器和所述第二卷积核参数存储器轮流切换为所述选择器提供卷积参数阵列组,切换操作发生当前计算层结束时刻,从所述输入数据分配控制模块送入的卷积核参数也以计算层为单位轮流依次送入所述第一卷积核参数存储器和所述第二卷积核参数存储器。
进一步地,
所述卷积计算顺序序列化实现模块和所述池化计算顺序序列化实现模块中的所述特征图元组存储器在其所在计算层中进行分时循环利用,所述特征图元组存储器并不为上一层传送过来的每一特征图元组都单独提供存储单元,其容量大小的设定结合所在计算域中同一特征图元组新值存入和旧值重取之间的最大地址间隔给出;
旧值选取地址参数在经所述上层主机传送到所述DDR片外存储器之前需做相应的取余操作,取余模长为其所在计算域的所述特征图元组存储器容量大小。
进一步地,
所述卷积计算模块由多个卷积核计算单元并列组成,卷积核计算单元主要由乘加树、加法树、加偏器和激活器组成,乘加树由若干乘法器和加法器互连组成,加法树由若干加法器互连组成;
所述乘加树、加法树共同完成所述卷积核计算单元中的乘累加操作,所述加偏器完成所述卷积核计算单元中的偏置相加操作,所述激活器完成所述卷积核计算单元中的激活操作。
所述卷积核计算单元在每个有效节拍同时获取来自所述卷积核参数选择功能子模块的KFP个特征值和来自所述卷积核参数选择功能子模块的KFP个卷积核参数,所述乘加树对KFP个特征值和KFP卷积核参数进行乘累加操作,并将乘累加结果按序依次送入加法树中进行二次集中累加,待到加法树首层入口处的操作数全部就绪或当前计算窗口的最后一组特征值就绪后,所述加法树启动计算完成二次累加;待到当前计算窗口的全部累加操作完成,所述加法树将最后的累加结果送入加法器中进行偏置相加操作,偏置相加操作完成后,相加结果被送入激活器进行激活,激活后的结果即所述卷积核计算单元的最终计算结果,所述卷积核计算单元的最终计算结果将被送入所述卷积计算结果分配控制模块。
进一步地,所述池化计算模块主要由分配器、最大值池化单元、平均值池化单元和选择器组成;
所述池化计算模块在每个有效节拍同时获取来自所述池化计算顺序序列化实现模块的PFP个特征值,并将该输入特征值组送入所述分配器进行分配;所述分配器则根据当前计算层的池化方式将输入的特征图元组分配给所述最大值池化单元或所述平均值池化单元;其中,所述最大值池化单元取每张特征图中当前计算窗口的最大特征图元素进行池化,所述平均值池化单元取每张特征图中当前计算窗口的所有特征图元素平均值进行池化;池化操作完成后,所述选择器根据当前计算层的池化方式选择最大值池化单元或平均值池化单元的池化结果送给所述输出数据分配控制模块。
进一步地:
由所述FPGA***扩展形成的加速***为由多个结构相同的所述FPGA***级联而成。
与现有的深度卷积神经网络的加速***相比,本发明提供的流水化加速***的重要创新点如下:
(1)将深度卷积神经网络复杂计算分模块进行,各模块之间采用流水线设计思路,处理速度快;各模块基于FPGA实现,集成度与并行度高、性能稳定、低功率、成本低廉。
(2)加入卷积计算顺序序列化实现模块和池化计算顺序序列化实现模块,用于对深度卷积神经网络的计算结构进行重新调整,不仅打破了传统卷积神经网络中计算窗口结构固定的束缚,使得每一计算层先参与计算的数据能够先到达,充分挖掘出深度卷积神经网络中的计算并行性以及各计算层之间的流水性,有效地减少了大量中间结果的存储,并且自动过滤掉了计算过程中存在的各类填充元素,避免了无效计算的投入,节约了FPGA的片上资源。
(3)卷积计算模块和池化计算模块皆采用并行设计思路,在每个有效节拍同时获取多个特征图元素进行并行处理,卷积计算模块更进一步由若干个卷积核计算单元组成,多个卷积核计算单元同步并行完成一个计算窗口与多个卷积核的卷积操作,大大提高了计算处理的速度,此外,卷积计算模块中采用加法树进行二次集中累加,有效地缓解了深度卷积神经网络中处于卷积计算部分的一大计算瓶颈障碍。
(4)加速***具有良好的灵活性,FPGA片上各类模型配置参数皆经由上层主机传送配置,因而加速***对不同的深度卷积神经网络模型兼具一定通用性;卷积计算模块和池化计算模块中的并行度设置可结合具体型号的FPGA片上资源灵活设置,以更进一步地充分利用已有FPGA的片上资源;池化计算模块实现多种池化方式以适应多种不同的深度卷积神经网络模型。
(5)加速***具有良好的扩展性,加速***基于中高端FPGA实现时可通过内部***级联接口进行扩展,扩展后的FPGA片上***能够成倍地提高计算并行度,充分利用片上充足逻辑资源的同时,能更加合理高效地利用FPGA片上的存储资源。
附图说明
图1为本发明实现的FPGA片上***与上层主机之间的交互结构示意图;
图2为本发明提出的深度卷积神经网络计算结构调整参数的结构框图;
图3为本发明提出的深度卷积神经网络计算结构调整算法的数据处理流程图;
图4为本发明实现的基于FPGA的深度卷积神经网络流水化加速***的整体模块组成结构示意图;
图5为按照本发明实现的FPGA片上***中卷积计算模块的数据处理示意图;
图6为按照本发明实现的FPGA片上***中池化计算模块的数据处理示意图;
图7为按照本发明实现的FPGA片上***中卷积计算顺序序列化实现模块的特征图元组选择功能子模块工作流程结构示意图;
图8为按照本发明实现的FPGA片上***中卷积计算顺序序列化实现模块的卷积核参数选择功能子模块工作流程结构示意图;
图9为按照本发明实现的FPGA片上***中的池化计算顺序序列化实现模块的组成结构示意图;
图10为按照本发明实现的FPGA片上***中卷积计算模块的工作流程结构示意图;
图11为按照本发明实现的FPGA片上***中的卷积核计算单元的实现原理图;
图12为按照本发明实现的FPGA片上***中池化计算模块的工作流程结构示意图;
图13为按照本发明实现的FPGA片上***中最大池化单元的实现原理图;
图14为按照本发明实现的FPGA片上***中的平均池化单元的实现原理图。
具体实施方式
以下结合附图及实施例,对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
作为具体实施例的深度卷积神经网络模型具有以下特点:
(1)所有计算层(计算层包括起始输入图像层、卷积层、池化层和全连接层)单张特征图的长宽相同,所有计算层计算窗口的长宽相同。
(2)各计算层的连接方式依次为:起始输入图像层、卷积层1、池化层1、卷积层2、池化层2、卷积层3、池化层3、全连接层1和全连接层2。
(3)池化操作仅存在两种方式:取最大值池化和取平均值池化;激活操作采用Relu激活方式。
(4)各计算层图像大小、图像填充大小、计算窗口大小、计算窗口移动步长和池化方式信息如下表所示:
(5)FPGA片上存储资源能够存储任意连续两个卷积层用到所有卷积核参数,但不能同时容纳所有卷积层的卷积核参数。
如图1所示,整个深度卷积神经网络从模型参数的生成、部署到最终计算结果的回传,整个过程的处理流程如下:
A1.上层主机通过相关训练方法训练得到对应深度卷积神经网络模型的所有卷积核参数,这些卷积核参数将在后面将作为FPGA片上***中卷积操作实现部分的输入数据参与计算。
A2.上层主机调用本发明提出的深度卷积神经网络计算结构调整算法生成所有需要的调整参数。如图1中①、②所示。其中①表示将给定的深度卷积神经网络模型的模型参数作为输入数据送入到所述调整算法中,这些模型参数具体包括:深度卷积神经网络的计算层数信息、每一计算层单张特征图(起始输入图像层也看作是由多张特征图组成)的宽度信息、每一计算层计算窗口的宽度信息、每一计算层计算窗口移动步长信息、每一计算层特征图填充大小信息、每一计算层特征图元组大小(每一计算层所有参加计算的特征图在同一二维位置处的所有特征值的有序集合称为该二维位置处的特征图元组,特征图元组所包含的特征值个数称为特征图元组的大小)信息以及每一池化层的池化方式信息等。其中②表示通过所述调整算法生成所有相关调整参数。
A3.上层主机将生成的调整参数通过PCIe总线传送到板上的DDR片外存储器中,并在传送完毕后向FPGA片上***发送读调整参数命令,如图1中③所示;FPGA片上***接收到读调整参数命令后,启动DMA读操作通过PCIe总线从DDR片外存储器中获取调整参数并分别存入对应的FPGA片上存储器中。
A4.将所述训练好的卷积核参数通过PCIe总线送入板上的DDR片外存储器中,并在传送完毕后向FPGA片上***发送读卷积核参数命令,如图1中④所示。由于FPGA片上***的存储资源不能一次性容纳所有的卷积核参数,在接收到读调整参数命令后,FPGA片上***启动DMA读操作通过PCIe总线从DDR片外存储器中预先获取前两个卷积层所用到的卷积核参数存入FPGA片上的卷积核参数存储器中,其它卷积层所用到的卷积核参数将在计算过程中适时地分批次加载。
A5.上层主机通过生成的所述调整参数中的原始输入图像位置重排参数对所有输入图像进行像素点位置重排,如图1中⑤所示;并将重排后的图像通过PCIe总线送入板上的DDR片外存储器中,传送完毕后向FPGA片上***发送计算启动命令,如图1中⑥所示。
A6.FPGA片上***在收到计算启动命令后,启动DMA读操作通过PCIe总线从DDR片外存储器中获取重排后的图像数据开始计算,计算过程中,FPGA片上***需要多次适时地从DDR片外存储器继续获取其他卷积层的卷积核参数,在调整参数和卷积核参数的协同参与下完成相关计算过程。待到生成相关计算结果后,再启动DMA写操作将计算结果回传到DDR片外存储器中,并向上层主机发送计算完成中断通知,如图1中⑦所示。
A7.上层主机接收到FPGA片上***发送的计算完成中断通知后,从DDR片外存储器的指定位置读取计算结果继而进行后续所需操作,如图1中⑧所示。
如图2所示,调整参数主要分为两类:计算顺序序列化参数和填充过滤参数。其中,计算顺序序列化参数可进一步细分为原始输入图像位置重排参数、新旧值选取标记参数和旧值选取地址参数;在深度卷积神经网络的卷积层中,填充过滤参数可进一步细分为核参地址跳跃标记参数、跳跃目的核参地址参数和窗口计算提前结束标记参数;在深度卷积神经网络的池化层中,填充过滤参数单指窗口计算提前结束标记参数。
计算顺序序列化参数打破了传统卷积神经网络中计算窗口结构固定的束缚,使得每一计算层先参与计算的数据能够先到达,充分挖掘出深度卷积神经网络中的计算并行性以及层与层之间的流水性,有效地减少了大量中间结果的存储,使之更有利于在FPGA上高效并行流水化实现。其中,原始输入图像位置重排参数用于对上层主机中的输入图像进行像素点位置重排以得到重排后的图像;新旧值选取标记参数为其所在层的计算顺序序列化实现过程提供新旧值数据选取标记,标记值指定是从上一层的特征图(起始输入图像层也看作是由多张特征图组成)中顺序获取下一个参与计算的新值数据还是从已经获取过的新值数据中选取旧值数据。当新旧值选取标记参数指定从已经获取过的新值数据中选取旧值数据时,旧值选取地址参数为其提供选取旧值数据的地址。
填充过滤参数针对深度卷积神经网络的卷积层中可能存在的特征图尺寸填充现象和池化层中可能存在的窗口越界填充现象所带来的无效计算问题,在基于FPGA的计算实现过程中,自动过滤掉填充元素,避免无效计算的投入,有效地解决了深度卷积神经网络中由于各类填充操作而导致的资源浪费和有效计算延误问题。其中核参地址跳跃标记参数在深度卷积神经网络的卷积层中指明当前计算位置之后是否存在填充元素,当存在填充元素时,则需要执行跳跃过滤操作,跳跃目的核参地址参数为其提供卷积核参数的跳跃目的地址。当一个原始计算窗口中存在填充元素时,由于跳跃过滤操作的存在,计算窗口中真正投入进计算的元素数量将小于原始计算窗口大小,此时,窗口计算提前结束标记参数为其提供窗口计算提前结束标记。
深度卷积神经网络计算结构调整算法,通过分析位于深度卷积神经网络中各个卷积层和池化层的神经元结构特性,根据后一层期望得到的单张特征图的元素排列顺序逆序推出前一层中对应参与计算的单张特征图的元素排列顺序,排列顺序以一维位置序号序列表示。该算法采用队列(记为Q)为主要数据结构遍历各层,以首层全连接层为起点,以起始输入图像层为终点,遍历过程中生成与每层相关的调整参数,每一层中的所有特征图在后续参与计算时共享与该层对应的一套调整参数。
深度卷积神经网络计算结构调整算法,以首层全连接层中所输入的单张特征图的元素排列顺序为初始排列顺序,并将表示该初始排列顺序的一维位置序号序列依次存入至所述队列中,深度卷积神经网络计算结构调整算法每次取队列队首位置序号进行扩充,根据所在层的神经元结构找到与该位置序号所在元素相对应的上层特征图中的计算窗口位置,并依次分析该计算窗口中的每个元素在其所在的单张特征图中的位置,每一层中的每一次分析行为对应一个唯一的分析序号。当分析到的元素处于其所在的单张特征图中的填充位置时,该分析序号称为无效分析序号;否则,该分析序号称为有效分析序号。
因而,每个无效分析序号都与上一层单张特征图中的一个填充位置的元素相对应,每个有效分析序号都与上一层单张特征图中的一个参与有效计算的非填充位置的元素相对应。
每个有效分析序号都拥有与其相对应的新旧值选取标记,新旧值选取标记的取值有两个:选新值标记和选旧值标记。每个新旧值选取标记取值为选旧值标记的有效分析序号都额外拥有一个与之相对应的旧值选取地址,每个含有填充元素的计算窗口中的最后一个有效分析序号都额外拥有一个与之相对应的窗口计算提前结束标记。该层中所有新旧值选取标记的有序集合即为该层待求的所述新旧值选取标记参数;该层中所有旧值选取地址的有序集合即为该层待求的所述旧值选取地址参数;该层中所有窗口计算提前结束标记的有序集合即为该层待求的所述窗口计算提前结束标记参数。
若该层为深度卷积神经网络中的卷积层,则该层中每一段连续的无效分析序号或单个成段的无效分析序号还需为其正前面的一个有效分析序号额外产生一个核参地址跳跃标记和跳跃目的核参地址,跳跃目的核参地址即处于该段正后面的一个有效分析序号所对应位置的元素在其计算窗口中的位置序号。该层中所有核参地址跳跃标记的有序集合即为该层待求的所述核参地址跳跃标记参数;该层中所有跳跃目的核参地址的有序集合即为该层待求的所述跳跃目的核参地址参数。
由于上一层不同计算窗口之间可能存在交集,因而不同的分析序号可能对应到上一层单张特征图中同一个位置的元素。
当一个有效分析序号所对应位置的元素于其所在的单张特征图中被首次分析到时,则将此有效分析序号的新旧值选取标记取值为选新值标记,并将该元素在其所处的单张特征图中的一维位置序号添加到所述队列尾部,上一层所有被首次分析到的元素在其所处的单张特征图中的一维位置序号的有序集合即上一层单张特征图期望得到的元素排列顺序,根据求得的上一层单张特征图期望得到的元素排列顺序,按照上述方法,更进一步可以求得上上层单张特征图期望得到的元素排列顺序,直至求得起始图像输入层期望得到的元素排列顺序为止,起始图像输入层期望得到的元素排列顺序即待求的所述原始输入图像位置重排参数;
当一个有效分析序号所对应位置的元素于其所在的单张特征图中并非被首次分析到时,则将此有效分析序号的新旧值选取标记取值为选旧值标记,并找到该元素在其所处的单张特征图中的一维位置序号在整张特征图期望得到的元素排列顺序中的位置,此位置即此有效分析序号额外拥有的旧值选取地址。
如图3所示,算法的数据处理流程如下:
A1.以首层全连接层中所输入的单张特征图的元素排列顺序为初始排列顺序,并将表示该初始排列顺序的一维位置序号序列依次存入队列Q中。此实施例中首层全连接层中所输入的单张特征图大小对应到前一层池化层3生成的特征图二维大小为4*4,由于全连接层只有一个计算窗口,所以输入的单张特征图的元素排列顺序为1~16;因而将1~16依次存入Q中。
A2.判断队列Q是否为空,为空时,算法结束;否则,转至A3;
A3.取队列Q队首位置序号进行扩充,根据所在层的神经元结构找到与该位置序号所在元素相对应的上层特征图中的计算窗口位置,并依次分析该计算窗口中的每个元素在其所在的单张特征图中的位置。例如第一次取出的列队首位置序号为1,对应到卷积层3生成的特征图中大小为3*3,步长为1的1号计算窗口,因而接下来将依次分析1号计算窗口中的元素,具体对应到卷积层3中生成的单张特征图中一维位置序号为1、2、3、9、10、11、17、18、19的元素。
A4.判断当前窗口是否分析完毕,若没有分析完毕,转至A5;否则,转至A10;
A5.分析下一个当前窗口中的元素,判断该元素是否处于所在特征图中的填充位置。若否,转至A6;否则转至A9。
A6.为该层中的此次分析行为分配一个唯一的有效分析序号,有效分析序号从编号1开始依次递增分配,并判断该有效分析序号所对应位置的元素于其所在的单张特征图中是否被首次分析到,若是,转至A7;否则转至A8。
A7.将当前有效分析序号的新旧值选取标记值置为1(标记值为1表示选取新值;标记值为0表示选取旧值)。并判断有效分析序号所对应位置的元素于是否处于起始输入图像层,若是,将当前有效分析序号添加到原始输入图像位置重排参数中;否则,将当前有效分析序号添加到队列Q队尾。转至A4。
A8.将当前有效分析序号的新旧值选取标记值置为0,转至A4。
A9.为该层中的此次分析行为分配一个唯一的无效分析序号,无效分析序号从编号1开始依次递增分配,并判断该无效分析序号是否位于一段连续无效分析序号的段首,若是,将其正前面的一个有效分析序号添加至核参地址跳跃标记参数中,将紧接在该段连续无效分析序号末尾的一个有效分析序号添加至跳跃目的核参地址参数中,转至A4;否则,直接转至A4。
A10.判断分析完的计算窗口中是否出现过处于填充位置的元素,若是,将该计算窗口中最后一个有效分析序号添加至窗口计算提前结束标记参数中,转至A2。否则,直接转至A2。
如图4所示,按照本发明实现的FPGA片上***主要由输入数据分配控制模块、输出数据分配控制模块、卷积计算顺序序列化实现模块、池化计算顺序序列化实现模块、卷积计算模块、池化计算模块和卷积计算结果分配控制模块七大模块组成,此外FPGA片上***还包含一个内部***级联接口。
输入数据分配控制模块同时与FPGA***接口和所述内部***级联接口、卷积计算顺序序列化实现模块相连;输出数据分配控制模块同时与FPGA***接口和所述内部***级联接口、卷积计算结果分配控制模块以及池化计算模块相连;卷积计算结果分配控制模块同时与卷积计算模块、输出数据分配控制模块以及池化计算顺序序列化实现模块相连;卷积计算顺序序列化实现模块与卷积计算模块之间直接相连;池化计算顺序序列化实现模块与池化计算模块之间直接相连。
输入数据分配控制模块主要负责实时监视卷积计算顺序序列化实现模块的数据消耗状况,适时适量地向DDR片外存储器发送相关读数据命令并及时接收FPGA***接口和所述内部***级联接口传送来的输入数据,除此之外,输入数据分配控制模块还需将接收到的数据有组织有规格地传送给卷积计算顺序序列化实现模块。
输出数据分配控制模块主要负责及时接收池化计算模块或卷积计算结果分配控制模块传送来的输入数据,并根据当前所处的计算阶段将接收到的数据有组织有规格地传送给所述内部***级联接口或FPGA***接口,适时适量地向DDR片外存储器发送相关写数据命令和相关中断通知。除此之外,输出数据分配控制模块还负责实时响应FPGA***接口传送来的各类相关命令。
卷积计算顺序序列化实现模块主要负责结合相关调整参数将深度卷积神经网络中相关卷积操作的结构化计算顺序序列化,并为卷积计算模块及时传送序列化后的数据集;池化计算顺序序列化实现模块主要负责结合相关调整参数将深度卷积神经网络中相关池化操作的结构化计算顺序序列化,并为池化计算模块及时传送序列化后的数据集。
卷积计算模块主要负责完成深度卷积神经网络中的相关卷积计算,并将计算结果及时传送给卷积计算结果分配控制模块;池化计算模块主要负责完成深度卷积神经网络中的相关池化操作,并将计算结果及时传送给所述输出数据分配控制模块。
卷积计算结果分配控制模块主要负责及时接收卷积计算模块传来的计算结果数据,并根据当前所处的计算阶段将接收到的数据有组织有规格地传送给池化计算顺序序列化实现模块或输出数据分配控制模块。
内部***级联接口主要负责为FPGA片上***内部子***之间的级联或内部模块之间的连接提供有效接口,用于连接输出数据分配控制模块和输入数据分配控制模块。
在FPGA片上***中的各层计算过程中,每一计算层所有参加计算的特征图在同一二维位置处的所有特征值的有序集合称为该二维位置处的特征图元组,特征图元组所包含的特征值个数称为特征图元组的大小。特征图元组将作为一个整体先后参与计算,原始输入图像层的处理也按照将其视为特征图的方式进行,二维位置计算点的移动由上一计算层或起始图像输入层的数据送出顺序和卷积计算顺序序列化实现模块或池化计算顺序序列化实现模块联合决定;每一计算层中所有生成的特征图也以特征图元组为基本单位依次生成,上一个特征图元组生成完毕后才开始进行下一个特征图元组的生成。输入的特征图元组大小记作DIN,生成的特征图元组大小记作DON。
上层主机根据所述调整参数中提供的原始输入图像位置重排参数对输入图像进行像素点位置重排,无论是在重排过程中还是在之后的重排图像的数据传送过程中,图像的各三维分量皆作为一个整体进行操作。重排后的图像根据图像二维大小,按照从左到右,从上到下的顺序依次传送给DDR片外存储器。上层主机中的卷积核参数按照所述卷积计算模块设定的计算顺序按规格组织后再传送给DDR片外存储器。
输入数据分配控制模块、输出数据分配控制模块和卷积计算结果分配控制模块在传送数据时皆保持其数据接收的先后顺序不变,仅当接收到的数据组成一定大小的数据单元后即将其发送给与其相连的所需模块。
卷积计算模块每次同时并行处理多张特征图,每张特征图每次同时并行与多个卷积核进行卷积操作,因而卷积计算模块可以每次同时并行生成多张新的特征图;池化计算模块同样每次同时并行处理多张特征图。卷积计算模块每次最多同时处理的特征图张数称为卷积层特征图并行度,记作KFP;卷积计算模块每次最多同时生成的特征图张数称为卷积核组并行度,记作KGP;池化计算模块每次最多同时处理的特征图张数称为池化层特征图并行度,记作PFP。
卷积计算模块的数据处理示意图如图5所示,其中if1~ifn代表上层生成输入的n张特征图,of1~ofn代表本层生成的n张特征图;其中连接输入特征图与卷积核参数阵列的符号表示乘法操作,连接各符号与生成特征图元素的符号代表加法操作。在深度卷积神经网络的全连接层中,图中输入的特征图和生成的特征图只包含一个特征图元素,计算窗口大小将等于整张输入特征图的大小。
池化计算模块的数据处理示意图如图6所示,其中if1~ifn代表上层生成输入的n张特征图,of1~ofn代表本层生成的n张特征图;其中连接输入特征图的计算窗口与生成特征图元素的符号代表池化操作。
卷积计算顺序序列化实现模块由特征图元组选择功能子模块和卷积核参数选择功能子模块组成。特征图元组选择功能子模块实现特征图元组选择功能,卷积核参数选择功能子模块实现卷积核参数选择功能。
特征图元组的每次选择操作与有效分析序号一一对应。
①特征图元组选择功能子模块
如图7所示,特征图元组选择功能子模块主要由特征图元组存储器、新旧选择器、标记参数存储器、地址参数存储器、计算窗口缓冲存储器和特征图元组计数器组成。
其中,特征图元组存储器采用双端口RAM实现,用于存储所述输入数据分配控制模块送入的特征图元组;新旧选择器维护两个地址寄存器,分别为新值地址寄存器和旧值地址寄存器,用于从特征图元组存储器中选择相应的特征图元组并输出给所述卷积计算模块;标记参数存储器用于存储所述的有效分析序号的新旧值选取标记和窗口计算提前结束标记,地址参数存储器用于存储所述的有效分析序号的旧值选取地址,对于一个给定的深度卷积神经网络模型,标记参数存储器和地址参数存储器一次写入多次循环读取;计算窗口缓冲存储器采用双端口RAM实现,用于缓存新旧选择器输出的特征图元组并将其输出给所述卷积计算模块;特征值图元组计数器用于统计新旧选择器选择输出的特征图元组个数。
特征图元组选择功能子模块每节拍从所述输入数据分配控制模块获取一个特征图元组的KFP个特征值,这KFP个特征值组成一个输入特征值组。新旧选择器每次选择特征图元组进行输出时,查看当前新旧值选取标记值,若当前新旧值选取标记值为选新值标记,则从新值地址寄存器提供的起始地址处开始以特征值组为单位进行特征图元组的输出,每输出一个特征组后,新值地址寄存器自动加一,当当前选取的特征图元组输出完毕后,从标记参数存储器中顺序获取下一个新旧值选取标记作为当前新旧值选取标记;若当前新旧值选取标记值为选旧值标记,则将当前旧值选取地址送入旧值地址寄存器,并以此地址为起始地址以特征值组为单位进行特征图元组的输出,每输出一个特征组后,旧值地址寄存器自动加一,当当前选取的特征图元组输出完毕后,从标记参数存储器中顺序获取下一个新旧值选取标记作为当前新旧值选取标记,并从地址参数存储器中顺序获取下一个旧值选取地址作为当前旧值选取地址。每当新旧选择器输出完一个特征图元组后,特征图元组计数器自动加一,若此时新旧选择器选择输出的特征图元组达到一个无填充元素的计算窗口大小,新旧选择器将暂停输出,直至位于计算窗口缓冲存储器中的当前计算窗口的特征图元组重复使用((DON-1)/KGP+1)次为止;若此时前新旧选择器选择输出的特征图元组尚未达到一个无填充元素的计算窗口大小,但当前特征图元组计数器值与当前窗口计算提前结束标记值相同,此时新旧选择器也将提前暂停输出,直至位于计算窗口缓冲存储器中的当前计算窗口的特征图元组重复使用((DON-1)/KGP+1)次为止,并且在新旧选择器提前暂停输出的同时,从标记参数存储器中顺序获取下一个窗口计算提前结束标记作为当前窗口计算提前结束标记。
②卷积核参数选择功能子模块
卷积核参数选择功能子模块中卷积核参数阵列的输出与所述特征图元组选择功能子模块中输出特征值组的输出同步进行。
如图8所示,卷积核参数选择功能子模块主要由卷积核参数存储器(a)、卷积核参数存储器(b)、选择器、标记参数存储器、地址参数存储器和核参阵列组计数器组成。
其中,卷积核参数存储器(a)和卷积核参数存储器(b)采用双端口RAM实现,用于存储所述输入数据分配控制模块送入的卷积核参数;标记参数存储器用于存储所述的核参地址跳跃标记参数,地址参数存储器用于存储所述的跳跃目的核参地址参数,对于一个给定的深度卷积神经网络模型,标记参数存储器和地址参数存储器一次写入多次循环读取;选择器维护一个地址寄存器和一个跳转地址生成器,用于从卷积核参数存储器(a)或卷积核参数存储器(b)中选择相应的卷积核参数阵列组(与所述特征图元组选择功能子模块中输出的一个特征图元组相对应的所有卷积核参数阵列的集合称为一个卷积核参数阵列组)输出给所述卷积计算模块,其中跳转地址生成器从地址参数存储器获取跳跃目的核参地址参数进行计算,为选择器提供对应的跳跃目的核参地址;核参阵列组计数器用于统计输出的卷积核参数阵列组个数。
选择器每次选择卷积核参数阵列组进行输出时,比较当前核参地址跳跃标记参数值与当前核参阵列组计数器计数值是否相等。若相等,则将所述跳转地址生成器的当前跳转地址送入地址寄存器,并以此地址为起始地址,以卷积核参数阵列为单位进行卷积核参数阵列组的输出,每输出一个卷积核参数阵列,地址寄存器自动加一,当当前选取的卷积核参数阵列组输出完毕后,核参阵列组计数器自动增一,所述跳转地址生成器计算输出下一个跳转地址作为当前跳转地址;若不相等,则直接从所述地址寄存器提供的起始地址处开始,以卷积核参数阵列为单位进行卷积核参数阵列组的输出,每输出一个卷积核参数阵列,地址寄存器自动加一,当当前选取的卷积核参数阵列组输出完毕后,核参阵列组计数器自动增一。在选择器选择卷积核参数阵列组进行输出的过程中,卷积核参数存储器(a)和卷积核参数存储器(b)轮流切换为选择器提供卷积参数阵列组,切换操作发生当前计算层结束时刻,从所述输入数据分配控制模块送入的卷积核参数也以计算层为单位轮流依次送入卷积核参数存储器(a)和卷积核参数存储器(b)。
池化计算顺序序列化实现模块获取特征图元组的操作与卷积计算顺序序列化实现模块的获取过程类似,但每节拍获取的特征图元组的特征值个数为PFP,并且当当前窗口计算结束时,计算窗口中的所有特征图元组不需要重复参与计算。
如图9所示,池化计算顺序序列化实现模块主要由特征图元组存储器、新旧选择器、标记参数存储器、地址参数存储器和特征图元组计数器组成。
其中,特征图元组存储器采用双端口RAM实现,用于存储所述输入数据分配控制模块送入的特征图元组;新旧选择器维护两个地址寄存器,分别为新值地址寄存器和旧值地址寄存器,用于从特征图元组存储器中选择相应的特征图元组并输出给所述卷积计算模块;标记参数存储器用于存储所述的有效分析序号的新旧值选取标记和窗口计算提前结束标记,地址参数存储器用于存储所述的有效分析序号的旧值选取地址,对于一个给定的深度卷积神经网络模型,标记参数存储器和地址参数存储器一次写入多次循环读取;特征值图元组计数器用于统计新旧选择器选择输出的特征图元组个数。
池化计算顺序序列化实现模块每节拍从所述输入数据分配控制模块获取一个特征图元组的PFP个特征值,这PFP个特征值组成一个输入特征值组。新旧选择器每次选择特征图元组进行输出时,查看当前新旧值选取标记值,若当前新旧值选取标记值为选新值标记,则从新值地址寄存器提供的起始地址处开始以特征值组为单位进行特征图元组的输出,每输出一个特征组后,新值地址寄存器自动加一,当当前选取的特征图元组输出完毕后,从标记参数存储器中顺序获取下一个新旧值选取标记作为当前新旧值选取标记;若当前新旧值选取标记值为选旧值标记,则将当前旧值选取地址送入旧值地址寄存器,并以此地址为起始地址以特征值组为单位进行特征图元组的输出,每输出一个特征组后,旧值地址寄存器自动加一,当当前选取的特征图元组输出完毕后,从标记参数存储器中顺序获取下一个新旧值选取标记作为当前新旧值选取标记,并从地址参数存储器中顺序获取下一个旧值选取地址作为当前旧值选取地址。每当新旧选择器输出完一个特征图元组后,特征图元组计数器自动加一,若此时新旧选择器选择输出的特征图元组未达到一个无填充元素的计算窗口大小,但当前特征图元组计数器值与当前窗口计算提前结束标记值相同,此时所述池化计算顺序序列化实现模块向所述池化计算模块发送当前窗口计算提前结束信号,并从标记参数存储器中顺序获取下一个窗口计算提前结束标记作为当前窗口计算提前结束标记。
所述卷积计算顺序序列化实现模块和所述池化计算顺序序列化实现模块中的所述特征图元组存储器在其所在计算层中进行分时循环利用,所述特征图元组存储器并不为上一层传送过来的每一特征图元组都单独提供存储单元,其容量大小的设定结合所在计算域中同一特征图元组新值存入和旧值重取之间的最大地址间隔给出;
旧值选取地址参数在经所述上层主机传送到所述DDR片外存储器之前需做相应的取余操作,取余模长为其所在计算域的所述特征图元组存储器容量大小。
如图10所示,卷积计算模块由KGP(图中m=KGP)个卷积核计算单元并列组成。
卷积计算模块在每一个有效节拍同时获取卷积计算顺序序列化实现模块传入的KFP个特征值与KFP*KGP个卷积核参数,这些卷积核参数来自KGP个不同的卷积核。获取到的KFP个特征值将同时与这KGP个卷积核进行卷积操作,卷积计算结果加上相应的偏置值再经过Relu激活操作后,得到KGP个特征图元素,这KGP个特征图元素对应属于KGP张不同的生成特征图并且最终会被依次送往卷积计算结果分配控制模块。
如图11所示,卷积核计算单元主要由乘加树、加法树、加偏器和激活器组成。乘加树由若干乘法器和加法器互连组成,加法树由若干加法器互连组成。
其中乘加树、加法树共同完成卷积计算单元中的乘累加操作,加偏器完成卷积计算单元中的偏置相加操作,激活器完成卷积计算单元中的激活操作。
卷积核计算单元在每个有效节拍同时获取来自所述卷积核参数选择功能子模块的KFP个特征值和来自所述卷积核参数选择功能子模块的KFP个卷积核参数。乘加树对KFP个特征值和KFP卷积核参数进行乘累加操作,并将乘累加结果按序依次送入加法树中进行二次集中累加。待到加法树首层入口处的操作数全部就绪或当前计算窗口的最后一组特征值就绪后,加法树启动计算完成二次累加;待到当前计算窗口的全部累加操作完成,加法树将最后的累加结果送入加法器中进行偏置相加操作,偏置相加操作完成后,相加结果继而会被送入激活器进行激活,激活后的结果即卷积计算单元的最终计算结果。卷积计算单元的最终计算结果将被送入所述卷积计算结果分配控制模块。
卷积计算单元中的加法树主要用于缓存乘加树送入的乘累加结果,并集中进行累加计算,加法树的二次集中累加有效地解决了在浮点数累加过程中,由于前后操作数的数据相关性而引发的流水线断流,继而导致的卷积核计算单元取数阻塞问题,有效地缓解了深度卷积神经网络中处于卷积计算部分的一大计算瓶颈障碍。
如图12所示,池化计算模块主要由分配器、最大值池化单元、平均值池化单元和选择器组成;
池化计算模块在每个有效节拍同时获取来自所述池化计算顺序序列化实现模块的PFP个特征值,并将该输入特征值组送入分配器进行分配;分配器则根据当前计算层的池化方式将输入的特征图元组分配给最大值池化单元或平均值池化单元;其中,最大值池化单元取每张特征图中当前计算窗口的最大特征图元素进行池化,平均值池化单元取每张特征图中当前计算窗口的所有特征图元素平均值进行池化;池化操作完成后,选择器根据当前计算层的池化方式选择最大值池化单元或平均值池化单元的池化结果送给所述输出数据分配控制模块。
如图13所示,最大值池化单元主要由比较器阵列、中间结果缓存队列、分配器和特征图元组计数器组成。比较器阵列由若干比较器组成。
其中,比较器阵列用于完成比较每张特征图中当前计算窗口的所有特征值元素,求取其最大值;中间结果缓存队列用于缓存比较器阵列比较的中间结果;分配器用于分配中间结果缓存队列中的中间结果,根据相关控制条件,将其送入比较器阵列进行迭代比较或将其作为最终结果输出给所述池化计算模块中的选择器;特征图元组计数器用于统计送入比较器阵列参与比较计算的特征图元组个数。
最大值池化单元在每个有效节拍同时获取来自所述池化计算模块分配器的PFP个特征值,并将该输入特征值组送入比较器阵列,当一个特征图元组送入完毕后,特征图元组计数器自动加一;与此同时,分配器从中间结果缓存队列获取与输入特征值相对应的中间结果特征值组送入比较器阵列。一旦比较器阵列操作数准备就绪,比较器阵列启动计算,比较两组特征值组中各特征值分量,取其较大者送入中间结果缓存队列。当特征图元组计数器数值达到当前计算窗口大小时,分配器将位于中间结果缓存队列中的结果作为输出送入所述池化计算模块中的选择器。
如图14所示,平均值池化单元主要由加法器阵列、中间结果缓存队列、分配器、特征图元组计数器和除法器阵列组成。加法器阵列由若干加法器组成,除法器阵列由若干除法器组成。
其中,加法器阵列用于完成累加输入的特征图元组;中间结果缓存队列用于缓存加法器阵列累加的中间结果;分配器用于分配中间结果缓存队列中的中间结果,根据相关控制条件,将其送入加法器阵列进行迭代累加或将其作为最终结果输出给所述池化计算模块中的选择器;特征图元组计数器用于统计送入加法器阵列参与比较计算的特征图元组个数;除法器用于对分配器送出的累加结果进行取平均值操作。
平均值池化单元在每个有效节拍同时获取来自所述池化计算模块分配器的PFP个特征值,并将该输入特征值组送入加法器阵列,当一个特征图元组送入完毕后,特征图元组计数器自动加一;与此同时,分配器从中间结果缓存队列获取与输入特征值相对应的中间结果特征值组送入加法器阵列。一旦加法器阵列操作数准备就绪,加法器阵列启动计算,完成两组特征值组中各特征值分量的累加,累加结果送入中间结果缓存队列。当特征图元组计数器数值达到当前计算窗口大小时,分配器将位于中间结果缓存队列中的结果送入除法器阵列;与此同时特征图元组计数器的当前数值也送入除法器阵列作为操作数参与计算,除法器阵列输出的平均值将作为输出送入池化计算模块中的选择器。
KFP、KGP的设定值结合给定的深度卷积神经网络模型中各卷积层的DON和FPGA片上***的各类资源数量联合给出,在FPGA片上***的各类资源允许的情况下,尽量将KFP、KGP向所有卷积层中最大的DON靠近;PFP的设定值在保证紧接其后的卷积层不空闲的前提下尽量减小。在本实施例中,KFP、KGP值均设定为8,PFP值设定为1。
当KFP的值增大到一定程度之后,若此时FPGA片上相关资源依旧充足,则可利用内部***级联接口对已有FPGA片上***进行进一步扩展。扩展后的FPGA片上***由多个FPGA片上子***级联而成,而每个FPGA片上子***皆由所述的七大模块和一个内部***级联接口组成,其中,内部***级联接口用于连接上一个FPGA片上子***的输出数据分配控制模块和下一个FPGA片上子***的输入数据分配控制模块,而七大模块之间的连接及实现除所在计算域和分析域有所缩减以外,与扩展前的FPGA片上***完全相同。
扩展后的FPGA片上***不仅能成倍地提高计算并行度,合理地利用FPGA片上剩余资源,而且能更充分地利用深度卷积神经网络中计算层层与层之间的流水性,有效缩短池化层与卷积层之间由于卷积层的计算瓶颈而带来的非必要等待时间,非必要等待时间的缩短意味着非必要中间结果的进一步减少,FPGA片上存储资源将得到更为高效而充分的利用。
Claims (8)
1.一种基于FPGA的深度卷积神经网络的流水化加速***,其特征在于,该***包括:
输入数据分配控制模块、输出数据分配控制模块、卷积计算顺序序列化实现模块、池化计算顺序序列化实现模块、卷积计算模块、池化计算模块和卷积计算结果分配控制模块,此外所述流水化加速***还包含一个内部***级联接口;
所述输入数据分配控制模块同时与FPGA***接口和所述内部***级联接口、卷积计算顺序序列化实现模块相连;所述输出数据分配控制模块同时与FPGA***接口和所述内部***级联接口、卷积计算结果分配控制模块以及池化计算模块相连;所述卷积计算结果分配控制模块同时与所述卷积计算模块、输出数据分配控制模块以及池化计算顺序序列化实现模块相连;所述卷积计算顺序序列化实现模块与卷积计算模块之间直接相连;所述池化计算顺序序列化实现模块与池化计算模块之间直接相连;
所述输入数据分配控制模块实时监视所述卷积计算顺序序列化实现模块的数据消耗状况,向DDR片外存储器发送相关读数据命令并及时接收FPGA***接口和所述内部***级联接口传送来的输入数据,除此之外,所述输入数据分配控制模块还需将接收到的数据传送给所述卷积计算顺序序列化实现模块;
所述输出数据分配控制模块接收所述池化计算模块或所述卷积计算结果分配控制模块传送来的输入数据,并根据当前所处的计算阶段将接收到的数据传送给所述内部***级联接口或所述FPGA***接口,向所述DDR片外存储器发送相关写数据命令和相关中断通知;除此之外,所述输出数据分配控制模块还实时响应所述FPGA***接口发送的命令;
所述卷积计算顺序序列化实现模块结合调整参数将深度卷积神经网络中相关卷积操作的结构化计算顺序序列化,并为所述卷积计算模块及时传送序列化后的数据集;所述池化计算顺序序列化实现模块结合相关调整参数将深度卷积神经网络中相关池化操作的结构化计算顺序序列化,并为所述池化计算模块及时传送序列化后的数据集;
所述卷积计算模块完成深度卷积神经网络中的相关卷积计算,并将计算结果及时传送给所述卷积计算结果分配控制模块;所述池化计算模块主要负责完成深度卷积神经网络中的相关池化操作,并将计算结果及时传送给所述输出数据分配控制模块;
所述卷积计算结果分配控制模块接收所述卷积计算模块传来的计算结果数据,并根据当前所处的计算阶段将接收到的数据有组织有规格地传送给所述池化计算顺序序列化实现模块或所述输出数据分配控制模块。
所述内部***级联接口主要负责为所述FPGA片上***内部子***之间的级联或内部模块之间的连接提供有效接口,用于连接所述输出数据分配控制模块和输入数据分配控制模块。
2.如权利要求1所述的基于FPGA的深度卷积神经网络的流水化加速***,其特征在于,
所述卷积计算顺序序列化实现模块由特征图元组选择功能子模块和卷积核参数选择功能子模块组成。特征图元组选择功能子模块实现特征图元组选择功能,卷积核参数选择功能子模块实现卷积核参数选择功能。
所述池化计算顺序序列化实现模块与所述卷积计算顺序序列化实现模块中的特征图元组选择功能子模块的组成结构和实现的功能基本类似。
3.如权利要求2所述的基于FPGA的深度卷积神经网络的流水化加速***,其特征在于,
所述特征图元组选择功能子模块主要由特征图元组存储器、新旧选择器、标记参数存储器、地址参数存储器、计算窗口缓冲存储器和特征图元组计数器组成;
所述特征图元组存储器采用双端口RAM实现,用于存储所述输入数据分配控制模块送入的特征图元组;所述新旧选择器维护两个地址寄存器,分别为新值地址寄存器和旧值地址寄存器,用于从所述特征图元组存储器中选择相应的特征图元组并输出给所述卷积计算模块;所述标记参数存储器用于存储有效分析序号的新旧值选取标记和窗口计算提前结束标记,所述地址参数存储器用于存储有效分析序号的旧值选取地址,对于一个给定的深度卷积神经网络模型,所述标记参数存储器和所述地址参数存储器一次写入多次循环读取;所述计算窗口缓冲存储器采用双端口RAM实现,用于缓存所述新旧选择器输出的特征图元组并将其输出给所述卷积计算模块;所述特征值图元组计数器用于统计所述新旧选择器选择输出的特征图元组个数;
所述特征图元组选择功能子模块每节拍从所述输入数据分配控制模块获取一个特征图元组的KFP个特征值,这KFP个特征值组成一个输入特征值组;所述新旧选择器每次选择特征图元组进行输出时,查看当前新旧值选取标记值,若当前新旧值选取标记值为选新值标记,则从新值地址寄存器提供的起始地址处开始以特征值组为单位进行特征图元组的输出,每输出一个特征组后,新值地址寄存器自动加一,当当前选取的特征图元组输出完毕后,从所述标记参数存储器中顺序获取下一个新旧值选取标记作为当前新旧值选取标记;若当前新旧值选取标记值为选旧值标记,则将当前旧值选取地址送入旧值地址寄存器,并以此地址为起始地址以特征值组为单位进行特征图元组的输出,每输出一个特征组后,旧值地址寄存器自动加一,当当前选取的特征图元组输出完毕后,从所述标记参数存储器中顺序获取下一个新旧值选取标记作为当前新旧值选取标记,并从所述地址参数存储器中顺序获取下一个旧值选取地址作为当前旧值选取地址;
每当所述新旧选择器输出完一个特征图元组后,所述特征图元组计数器自动加一,若此时所述新旧选择器选择输出的特征图元组达到一个无填充元素的计算窗口大小,所述新旧选择器将暂停输出,直至位于所述计算窗口缓冲存储器中的当前计算窗口的特征图元组重复使用((DON-1)/KGP+1)次为止;若此时所述新旧选择器选择输出的特征图元组尚未达到一个无填充元素的计算窗口大小,但当前特征图元组计数器值与当前窗口计算提前结束标记值相同,此时所述新旧选择器也将提前暂停输出,直至位于所述计算窗口缓冲存储器中的当前计算窗口的特征图元组重复使用((DON-1)/KGP+1)次为止,并且在所述新旧选择器提前暂停输出的同时,从所述标记参数存储器中顺序获取下一个窗口计算提前结束标记作为当前窗口计算提前结束标记。
4.如权利要求3所述的基于FPGA的深度卷积神经网络的流水化加速***,其特征在于,
所述卷积核参数选择功能子模块中卷积核参数阵列的输出与所述特征图元组选择功能子模块中输出特征值组的输出同步进行;
所述卷积核参数选择功能子模块主要由第一卷积核参数存储器、第二卷积核参数存储器、选择器、标记参数存储器、地址参数存储器和核参阵列组计数器组成;
所述第一卷积核参数存储器和所述第二卷积核参数存储器皆采用双端口RAM实现,用于存储所述输入数据分配控制模块送入的卷积核参数;所述标记参数存储器用于存储核参地址跳跃标记参数,所述地址参数存储器用于存储跳跃目的核参地址参数,对于一个给定的深度卷积神经网络模型,所述标记参数存储器和所述地址参数存储器一次写入多次循环读取;所述选择器维护一个地址寄存器和一个跳转地址生成器,用于从所述第一卷积核参数存储器或所述第二卷积核参数存储器中选择相应的卷积核参数阵列组输出给所述卷积计算模块,其中跳转地址生成器从所述地址参数存储器获取跳跃目的核参地址参数,为所述选择器提供对应的跳跃目的核参地址;所述核参阵列组计数器用于统计输出的卷积核参数阵列组个数;
所述选择器每次选择卷积核参数阵列组进行输出时,比较当前核参地址跳跃标记参数值与当前核参阵列组计数器计数值是否相等;若相等,则将跳转地址生成器的当前跳转地址送入地址寄存器,并以此地址为起始地址,以卷积核参数阵列为单位进行卷积核参数阵列组的输出,每输出一个卷积核参数阵列,地址寄存器自动加一,当当前选取的卷积核参数阵列组输出完毕后,所述核参阵列组计数器自动增一,跳转地址生成器计算输出下一个跳转地址作为当前跳转地址;若不相等,则直接从地址寄存器提供的起始地址处开始,以卷积核参数阵列为单位进行卷积核参数阵列组的输出,每输出一个卷积核参数阵列,地址寄存器自动加一,当当前选取的卷积核参数阵列组输出完毕后,所述核参阵列组计数器自动增一;在所述选择器选择卷积核参数阵列组进行输出的过程中,所述第一卷积核参数存储器和所述第二卷积核参数存储器轮流切换为所述选择器提供卷积参数阵列组,切换操作发生当前计算层结束时刻,从所述输入数据分配控制模块送入的卷积核参数也以计算层为单位轮流依次送入所述第一卷积核参数存储器和所述第二卷积核参数存储器。
5.如权利要求4所述的基于FPGA的深度卷积神经网络的流水化加速***,其特征在于,
所述卷积计算顺序序列化实现模块和所述池化计算顺序序列化实现模块中的所述特征图元组存储器在其所在计算层中进行分时循环利用,所述特征图元组存储器并不为上一层传送过来的每一特征图元组都单独提供存储单元,其容量大小的设定结合所在计算域中同一特征图元组新值存入和旧值重取之间的最大地址间隔给出;
旧值选取地址参数在经所述上层主机传送到所述DDR片外存储器之前需做相应的取余操作,取余模长为其所在计算域的所述特征图元组存储器容量大小。
6.如权利要求5所述的基于FPGA的深度卷积神经网络的流水化加速***,其特征在于,
所述卷积计算模块由多个卷积核计算单元并列组成,卷积核计算单元主要由乘加树、加法树、加偏器和激活器组成,乘加树由若干乘法器和加法器互连组成,加法树由若干加法器互连组成;
所述乘加树、加法树共同完成所述卷积核计算单元中的乘累加操作,所述加偏器完成所述卷积核计算单元中的偏置相加操作,所述激活器完成所述卷积核计算单元中的激活操作。
所述卷积核计算单元在每个有效节拍同时获取来自所述卷积核参数选择功能子模块的KFP个特征值和来自所述卷积核参数选择功能子模块的KFP个卷积核参数,所述乘加树对KFP个特征值和KFP卷积核参数进行乘累加操作,并将乘累加结果按序依次送入加法树中进行二次集中累加,待到加法树首层入口处的操作数全部就绪或当前计算窗口的最后一组特征值就绪后,所述加法树启动计算完成二次累加;待到当前计算窗口的全部累加操作完成,所述加法树将最后的累加结果送入加法器中进行偏置相加操作,偏置相加操作完成后,相加结果被送入激活器进行激活,激活后的结果即所述卷积核计算单元的最终计算结果,所述卷积核计算单元的最终计算结果将被送入所述卷积计算结果分配控制模块。
7.如权利要求6所述的基于FPGA的深度卷积神经网络的流水化加速***,其特征在于,所述池化计算模块主要由分配器、最大值池化单元、平均值池化单元和选择器组成;
所述池化计算模块在每个有效节拍同时获取来自所述池化计算顺序序列化实现模块的PFP个特征值,并将该输入特征值组送入所述分配器进行分配;所述分配器则根据当前计算层的池化方式将输入的特征图元组分配给所述最大值池化单元或所述平均值池化单元;其中,所述最大值池化单元取每张特征图中当前计算窗口的最大特征图元素进行池化,所述平均值池化单元取每张特征图中当前计算窗口的所有特征图元素平均值进行池化;池化操作完成后,所述选择器根据当前计算层的池化方式选择最大值池化单元或平均值池化单元的池化结果送给所述输出数据分配控制模块。
8.如权利要求1-7中任意一项所述的基于FPGA的深度卷积神经网络的流水化加速***,其特征在于:
由所述FPGA***扩展形成的加速***为由多个结构相同的所述FPGA***级联而成。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710072223.2A CN106875012B (zh) | 2017-02-09 | 2017-02-09 | 一种基于fpga的深度卷积神经网络的流水化加速*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710072223.2A CN106875012B (zh) | 2017-02-09 | 2017-02-09 | 一种基于fpga的深度卷积神经网络的流水化加速*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106875012A true CN106875012A (zh) | 2017-06-20 |
CN106875012B CN106875012B (zh) | 2019-09-20 |
Family
ID=59165669
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710072223.2A Active CN106875012B (zh) | 2017-02-09 | 2017-02-09 | 一种基于fpga的深度卷积神经网络的流水化加速*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106875012B (zh) |
Cited By (66)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107229969A (zh) * | 2017-06-21 | 2017-10-03 | 郑州云海信息技术有限公司 | 一种基于fpga的卷积神经网络实现方法及装置 |
CN107392309A (zh) * | 2017-09-11 | 2017-11-24 | 东南大学—无锡集成电路技术研究所 | 一种基于fpga的通用定点数神经网络卷积加速器硬件结构 |
CN107749044A (zh) * | 2017-10-19 | 2018-03-02 | 珠海格力电器股份有限公司 | 图像信息的池化方法及装置 |
CN107862374A (zh) * | 2017-10-30 | 2018-03-30 | 中国科学院计算技术研究所 | 基于流水线的神经网络处理***和处理方法 |
CN107862379A (zh) * | 2017-07-21 | 2018-03-30 | 电子科技大学 | 神经网络fpga |
CN107909148A (zh) * | 2017-12-12 | 2018-04-13 | 北京地平线信息技术有限公司 | 用于执行卷积神经网络中的卷积运算的装置 |
CN108228969A (zh) * | 2017-12-07 | 2018-06-29 | 中国航空工业集团公司西安航空计算技术研究所 | 一种面向深度神经网络的双fpga协同工作方法 |
CN108256644A (zh) * | 2018-01-05 | 2018-07-06 | 上海兆芯集成电路有限公司 | 微处理器电路以及执行神经网络运算的方法 |
CN108304925A (zh) * | 2018-01-08 | 2018-07-20 | 中国科学院计算技术研究所 | 一种池化计算装置及方法 |
CN108376283A (zh) * | 2018-01-08 | 2018-08-07 | 中国科学院计算技术研究所 | 用于神经网络的池化装置和池化方法 |
CN108388943A (zh) * | 2018-01-08 | 2018-08-10 | 中国科学院计算技术研究所 | 一种适用于神经网络的池化装置及方法 |
CN108491929A (zh) * | 2018-03-20 | 2018-09-04 | 南开大学 | 一种基于fpga的可配置并行快速卷积核的结构 |
CN108520296A (zh) * | 2018-03-20 | 2018-09-11 | 福州瑞芯微电子股份有限公司 | 一种基于深度学习芯片动态cache分配的方法和装置 |
CN108537334A (zh) * | 2018-04-26 | 2018-09-14 | 济南浪潮高新科技投资发展有限公司 | 一种针对cnn卷积层运算的加速阵列设计方法 |
CN108776833A (zh) * | 2018-06-05 | 2018-11-09 | 郑州云海信息技术有限公司 | 一种数据处理方法、***及计算机可读存储介质 |
CN108780524A (zh) * | 2017-10-31 | 2018-11-09 | 深圳市大疆创新科技有限公司 | 用于神经网络的运算装置、电路及相关方法 |
CN108805272A (zh) * | 2018-05-03 | 2018-11-13 | 东南大学 | 一种基于fpga的通用卷积神经网络加速器 |
CN108805285A (zh) * | 2018-05-30 | 2018-11-13 | 济南浪潮高新科技投资发展有限公司 | 一种卷积神经网络池化单元设计方法 |
CN108805274A (zh) * | 2018-05-28 | 2018-11-13 | 重庆大学 | 基于FPGA的Tiny-yolo卷积神经网络硬件加速方法及*** |
CN108885596A (zh) * | 2017-12-29 | 2018-11-23 | 深圳市大疆创新科技有限公司 | 数据处理方法、设备、dma控制器及计算机可读存储介质 |
CN109002884A (zh) * | 2018-07-20 | 2018-12-14 | 郑州云海信息技术有限公司 | 一种池化处理装置及池化处理方法 |
CN109117940A (zh) * | 2018-06-19 | 2019-01-01 | 腾讯科技(深圳)有限公司 | 一种卷积神经网络前向加速方法、装置及*** |
CN109284824A (zh) * | 2018-09-04 | 2019-01-29 | 复旦大学 | 一种基于可重构技术的用于加速卷积和池化运算的装置 |
CN109376843A (zh) * | 2018-10-12 | 2019-02-22 | 山东师范大学 | 基于fpga的脑电信号快速分类方法、实现方法及装置 |
CN109416755A (zh) * | 2018-01-15 | 2019-03-01 | 深圳鲲云信息科技有限公司 | 人工智能并行处理方法、装置、可读存储介质、及终端 |
CN109447257A (zh) * | 2018-09-18 | 2019-03-08 | 复旦大学 | 一种通道自组织的深度神经网络加速芯片的运算装置 |
CN109508782A (zh) * | 2018-10-09 | 2019-03-22 | 福州瑞芯微电子股份有限公司 | 基于神经网络深度学习的加速电路和方法 |
CN109685209A (zh) * | 2018-12-29 | 2019-04-26 | 福州瑞芯微电子股份有限公司 | 一种加快神经网络运算速度的装置和方法 |
CN109711533A (zh) * | 2018-12-20 | 2019-05-03 | 西安电子科技大学 | 基于fpga的卷积神经网络模块 |
WO2019085709A1 (zh) * | 2017-11-01 | 2019-05-09 | 腾讯科技(深圳)有限公司 | 一种应用于卷积神经网络的池化处理的方法及*** |
CN109740619A (zh) * | 2018-12-27 | 2019-05-10 | 北京航天飞腾装备技术有限责任公司 | 用于目标识别的神经网络终端运行方法和装置 |
CN109784125A (zh) * | 2017-11-10 | 2019-05-21 | 福州瑞芯微电子股份有限公司 | 深度学习网络处理装置、方法及图像处理单元 |
CN109948777A (zh) * | 2018-11-14 | 2019-06-28 | 深圳大学 | 基于fpga实现的卷积神经网络以及基于fpga实现卷积神经网络的实现方法 |
WO2019127838A1 (zh) * | 2017-12-29 | 2019-07-04 | 国民技术股份有限公司 | 卷积神经网络实现方法及装置、终端、存储介质 |
WO2019136752A1 (zh) * | 2018-01-15 | 2019-07-18 | 深圳鲲云信息科技有限公司 | 人工智能卷积处理方法、装置、可读存储介质、及终端 |
CN110097174A (zh) * | 2019-04-22 | 2019-08-06 | 西安交通大学 | 基于fpga和行输出优先的卷积神经网络实现方法、***及装置 |
CN110276345A (zh) * | 2019-06-05 | 2019-09-24 | 北京字节跳动网络技术有限公司 | 卷积神经网络模型训练方法、装置和计算机可读存储介质 |
CN110276444A (zh) * | 2019-06-04 | 2019-09-24 | 北京清微智能科技有限公司 | 基于卷积神经网络的图像处理方法及装置 |
CN110322389A (zh) * | 2018-03-29 | 2019-10-11 | 上海熠知电子科技有限公司 | 池化方法、装置及***、计算机可读存储介质 |
CN110334801A (zh) * | 2019-05-09 | 2019-10-15 | 苏州浪潮智能科技有限公司 | 一种卷积神经网络的硬件加速方法、装置、设备及*** |
CN110399883A (zh) * | 2019-06-28 | 2019-11-01 | 苏州浪潮智能科技有限公司 | 图像特征提取方法、装置、设备及计算机可读存储介质 |
CN110503127A (zh) * | 2018-05-17 | 2019-11-26 | 国际商业机器公司 | 模拟阵列上的卷积神经网络的加速 |
CN110569970A (zh) * | 2019-09-12 | 2019-12-13 | 合肥工业大学 | 一种应用于卷积神经网络中硬件加速器的数据传输方法 |
CN110766127A (zh) * | 2018-07-25 | 2020-02-07 | 北京深鉴智能科技有限公司 | 神经网络计算专用电路及其相关计算平台与实现方法 |
CN110807522A (zh) * | 2019-10-31 | 2020-02-18 | 合肥工业大学 | 一种神经网络加速器的通用计算电路 |
CN110913227A (zh) * | 2019-11-28 | 2020-03-24 | 山东浪潮人工智能研究院有限公司 | 一种异构计算架构的边缘端图像压缩***及方法 |
CN110942145A (zh) * | 2019-10-23 | 2020-03-31 | 南京大学 | 基于可重构计算的卷积神经网络池化层、硬件实现方法及*** |
CN111027682A (zh) * | 2019-12-09 | 2020-04-17 | Oppo广东移动通信有限公司 | 神经网络处理器、电子设备及数据处理方法 |
CN111242295A (zh) * | 2020-01-20 | 2020-06-05 | 清华大学 | 一种可配置池化算子的方法及电路 |
CN111260536A (zh) * | 2018-12-03 | 2020-06-09 | 中国科学院沈阳自动化研究所 | 可变参数的数字图像多尺度卷积处理器及其实现方法 |
CN111416743A (zh) * | 2020-03-19 | 2020-07-14 | 华中科技大学 | 一种卷积网络加速器、配置方法及计算机可读存储介质 |
CN111461310A (zh) * | 2019-01-21 | 2020-07-28 | 三星电子株式会社 | 处理神经网络模型的神经网络设备、神经网络***和方法 |
CN112001492A (zh) * | 2020-08-07 | 2020-11-27 | 中山大学 | 关于二值权重DenseNet模型的混合流水式加速架构及加速方法 |
CN112149814A (zh) * | 2020-09-23 | 2020-12-29 | 哈尔滨理工大学 | 一种基于fpga的卷积神经网络加速*** |
CN112230884A (zh) * | 2020-12-17 | 2021-01-15 | 季华实验室 | 目标检测硬件加速器及加速方法 |
CN112288082A (zh) * | 2020-11-23 | 2021-01-29 | 天津大学 | 一种基于hls的可重构通用标准卷积加速器设计方法 |
WO2021036668A1 (zh) * | 2019-08-27 | 2021-03-04 | 北京灵汐科技有限公司 | 神经网络的全局池化方法及众核*** |
WO2021134519A1 (zh) * | 2019-12-31 | 2021-07-08 | 华为技术有限公司 | 在神经网络推理中实现数据同步的装置和方法 |
CN113112002A (zh) * | 2021-04-06 | 2021-07-13 | 济南大学 | 一种基于fpga轻量级卷积加速器的设计方法 |
CN113240103A (zh) * | 2021-06-25 | 2021-08-10 | 清华大学 | 神经网络池化电路 |
CN113419702A (zh) * | 2021-06-21 | 2021-09-21 | 安谋科技(中国)有限公司 | 一种数据累加方法、处理器、电子设备及可读介质 |
WO2022001301A1 (zh) * | 2020-06-28 | 2022-01-06 | 深圳云天励飞技术股份有限公司 | 神经网络运算方法及相关设备 |
CN115145839A (zh) * | 2021-03-31 | 2022-10-04 | 广东高云半导体科技股份有限公司 | 一种深度卷积加速器及其实现加速深度卷积的方法 |
US11550709B2 (en) * | 2019-04-03 | 2023-01-10 | Macronix International Co., Ltd. | Memory device and wear leveling method for the same |
CN110210610B (zh) * | 2018-03-27 | 2023-06-20 | 腾讯科技(深圳)有限公司 | 卷积计算加速器、卷积计算方法及卷积计算设备 |
US11874898B2 (en) | 2018-01-15 | 2024-01-16 | Shenzhen Corerain Technologies Co., Ltd. | Streaming-based artificial intelligence convolution processing method and apparatus, readable storage medium and terminal |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105488565A (zh) * | 2015-11-17 | 2016-04-13 | 中国科学院计算技术研究所 | 加速深度神经网络算法的加速芯片的运算装置及方法 |
US20160148091A1 (en) * | 2014-06-19 | 2016-05-26 | Knowmtech, Llc | Thermodynamic ram technology stack |
CN106203621A (zh) * | 2016-07-11 | 2016-12-07 | 姚颂 | 用于卷积神经网络计算的处理器 |
CN106228240A (zh) * | 2016-07-30 | 2016-12-14 | 复旦大学 | 基于fpga的深度卷积神经网络实现方法 |
CN106355244A (zh) * | 2016-08-30 | 2017-01-25 | 深圳市诺比邻科技有限公司 | 卷积神经网络的构建方法及*** |
-
2017
- 2017-02-09 CN CN201710072223.2A patent/CN106875012B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160148091A1 (en) * | 2014-06-19 | 2016-05-26 | Knowmtech, Llc | Thermodynamic ram technology stack |
CN105488565A (zh) * | 2015-11-17 | 2016-04-13 | 中国科学院计算技术研究所 | 加速深度神经网络算法的加速芯片的运算装置及方法 |
CN106203621A (zh) * | 2016-07-11 | 2016-12-07 | 姚颂 | 用于卷积神经网络计算的处理器 |
CN106228240A (zh) * | 2016-07-30 | 2016-12-14 | 复旦大学 | 基于fpga的深度卷积神经网络实现方法 |
CN106355244A (zh) * | 2016-08-30 | 2017-01-25 | 深圳市诺比邻科技有限公司 | 卷积神经网络的构建方法及*** |
Cited By (98)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107229969A (zh) * | 2017-06-21 | 2017-10-03 | 郑州云海信息技术有限公司 | 一种基于fpga的卷积神经网络实现方法及装置 |
CN107862379A (zh) * | 2017-07-21 | 2018-03-30 | 电子科技大学 | 神经网络fpga |
CN107392309A (zh) * | 2017-09-11 | 2017-11-24 | 东南大学—无锡集成电路技术研究所 | 一种基于fpga的通用定点数神经网络卷积加速器硬件结构 |
CN107749044A (zh) * | 2017-10-19 | 2018-03-02 | 珠海格力电器股份有限公司 | 图像信息的池化方法及装置 |
CN107862374A (zh) * | 2017-10-30 | 2018-03-30 | 中国科学院计算技术研究所 | 基于流水线的神经网络处理***和处理方法 |
WO2019084788A1 (zh) * | 2017-10-31 | 2019-05-09 | 深圳市大疆创新科技有限公司 | 用于神经网络的运算装置、电路及相关方法 |
CN108780524A (zh) * | 2017-10-31 | 2018-11-09 | 深圳市大疆创新科技有限公司 | 用于神经网络的运算装置、电路及相关方法 |
US11734554B2 (en) | 2017-11-01 | 2023-08-22 | Tencent Technology (Shenzhen) Company Limited | Pooling processing method and system applied to convolutional neural network |
US11537857B2 (en) * | 2017-11-01 | 2022-12-27 | Tencent Technology (Shenzhen) Company Limited | Pooling processing method and system applied to convolutional neural network |
WO2019085709A1 (zh) * | 2017-11-01 | 2019-05-09 | 腾讯科技(深圳)有限公司 | 一种应用于卷积神经网络的池化处理的方法及*** |
CN109784125A (zh) * | 2017-11-10 | 2019-05-21 | 福州瑞芯微电子股份有限公司 | 深度学习网络处理装置、方法及图像处理单元 |
CN108228969A (zh) * | 2017-12-07 | 2018-06-29 | 中国航空工业集团公司西安航空计算技术研究所 | 一种面向深度神经网络的双fpga协同工作方法 |
CN107909148A (zh) * | 2017-12-12 | 2018-04-13 | 北京地平线信息技术有限公司 | 用于执行卷积神经网络中的卷积运算的装置 |
US11429836B2 (en) | 2017-12-12 | 2022-08-30 | Nanjing Horizon Robotics Technology Co., Ltd. | Apparatus for performing convolution operations in a convolutional neural network |
WO2019127838A1 (zh) * | 2017-12-29 | 2019-07-04 | 国民技术股份有限公司 | 卷积神经网络实现方法及装置、终端、存储介质 |
CN108885596A (zh) * | 2017-12-29 | 2018-11-23 | 深圳市大疆创新科技有限公司 | 数据处理方法、设备、dma控制器及计算机可读存储介质 |
CN108256644B (zh) * | 2018-01-05 | 2021-06-22 | 上海兆芯集成电路有限公司 | 微处理器电路以及执行神经网络运算的方法 |
CN108256644A (zh) * | 2018-01-05 | 2018-07-06 | 上海兆芯集成电路有限公司 | 微处理器电路以及执行神经网络运算的方法 |
CN108388943B (zh) * | 2018-01-08 | 2020-12-29 | 中国科学院计算技术研究所 | 一种适用于神经网络的池化装置及方法 |
CN108304925B (zh) * | 2018-01-08 | 2020-11-03 | 中国科学院计算技术研究所 | 一种池化计算装置及方法 |
CN108388943A (zh) * | 2018-01-08 | 2018-08-10 | 中国科学院计算技术研究所 | 一种适用于神经网络的池化装置及方法 |
CN108376283A (zh) * | 2018-01-08 | 2018-08-07 | 中国科学院计算技术研究所 | 用于神经网络的池化装置和池化方法 |
CN108304925A (zh) * | 2018-01-08 | 2018-07-20 | 中国科学院计算技术研究所 | 一种池化计算装置及方法 |
WO2019136752A1 (zh) * | 2018-01-15 | 2019-07-18 | 深圳鲲云信息科技有限公司 | 人工智能卷积处理方法、装置、可读存储介质、及终端 |
CN109416755A (zh) * | 2018-01-15 | 2019-03-01 | 深圳鲲云信息科技有限公司 | 人工智能并行处理方法、装置、可读存储介质、及终端 |
US11874898B2 (en) | 2018-01-15 | 2024-01-16 | Shenzhen Corerain Technologies Co., Ltd. | Streaming-based artificial intelligence convolution processing method and apparatus, readable storage medium and terminal |
CN109416755B (zh) * | 2018-01-15 | 2021-11-23 | 深圳鲲云信息科技有限公司 | 人工智能并行处理方法、装置、可读存储介质、及终端 |
WO2019136751A1 (zh) * | 2018-01-15 | 2019-07-18 | 深圳鲲云信息科技有限公司 | 人工智能并行处理方法、装置、可读存储介质、及终端 |
CN108520296B (zh) * | 2018-03-20 | 2020-05-15 | 福州瑞芯微电子股份有限公司 | 一种基于深度学习芯片动态cache分配的方法和装置 |
CN108491929A (zh) * | 2018-03-20 | 2018-09-04 | 南开大学 | 一种基于fpga的可配置并行快速卷积核的结构 |
CN108520296A (zh) * | 2018-03-20 | 2018-09-11 | 福州瑞芯微电子股份有限公司 | 一种基于深度学习芯片动态cache分配的方法和装置 |
CN110210610B (zh) * | 2018-03-27 | 2023-06-20 | 腾讯科技(深圳)有限公司 | 卷积计算加速器、卷积计算方法及卷积计算设备 |
CN110322389A (zh) * | 2018-03-29 | 2019-10-11 | 上海熠知电子科技有限公司 | 池化方法、装置及***、计算机可读存储介质 |
CN108537334A (zh) * | 2018-04-26 | 2018-09-14 | 济南浪潮高新科技投资发展有限公司 | 一种针对cnn卷积层运算的加速阵列设计方法 |
CN108805272A (zh) * | 2018-05-03 | 2018-11-13 | 东南大学 | 一种基于fpga的通用卷积神经网络加速器 |
CN110503127A (zh) * | 2018-05-17 | 2019-11-26 | 国际商业机器公司 | 模拟阵列上的卷积神经网络的加速 |
CN110503127B (zh) * | 2018-05-17 | 2023-05-30 | 国际商业机器公司 | 模拟阵列上的卷积神经网络的加速 |
CN108805274A (zh) * | 2018-05-28 | 2018-11-13 | 重庆大学 | 基于FPGA的Tiny-yolo卷积神经网络硬件加速方法及*** |
CN108805274B (zh) * | 2018-05-28 | 2022-02-18 | 重庆大学 | 基于FPGA的Tiny-yolo卷积神经网络硬件加速方法及*** |
CN108805285A (zh) * | 2018-05-30 | 2018-11-13 | 济南浪潮高新科技投资发展有限公司 | 一种卷积神经网络池化单元设计方法 |
CN108776833B (zh) * | 2018-06-05 | 2021-08-31 | 郑州云海信息技术有限公司 | 一种数据处理方法、***及计算机可读存储介质 |
CN108776833A (zh) * | 2018-06-05 | 2018-11-09 | 郑州云海信息技术有限公司 | 一种数据处理方法、***及计算机可读存储介质 |
CN109117940B (zh) * | 2018-06-19 | 2020-12-15 | 腾讯科技(深圳)有限公司 | 基于卷积神经网络的目标检测方法、装置、终端及存储介质 |
CN109117940A (zh) * | 2018-06-19 | 2019-01-01 | 腾讯科技(深圳)有限公司 | 一种卷积神经网络前向加速方法、装置及*** |
CN109002884A (zh) * | 2018-07-20 | 2018-12-14 | 郑州云海信息技术有限公司 | 一种池化处理装置及池化处理方法 |
CN110766127A (zh) * | 2018-07-25 | 2020-02-07 | 北京深鉴智能科技有限公司 | 神经网络计算专用电路及其相关计算平台与实现方法 |
CN110766127B (zh) * | 2018-07-25 | 2022-09-23 | 赛灵思电子科技(北京)有限公司 | 神经网络计算专用电路及其相关计算平台与实现方法 |
CN109284824B (zh) * | 2018-09-04 | 2021-07-23 | 复旦大学 | 一种基于可重构技术的用于加速卷积和池化运算的装置 |
CN109284824A (zh) * | 2018-09-04 | 2019-01-29 | 复旦大学 | 一种基于可重构技术的用于加速卷积和池化运算的装置 |
CN109447257B (zh) * | 2018-09-18 | 2021-08-17 | 复旦大学 | 一种通道自组织的深度神经网络加速芯片的运算装置 |
CN109447257A (zh) * | 2018-09-18 | 2019-03-08 | 复旦大学 | 一种通道自组织的深度神经网络加速芯片的运算装置 |
CN109508782A (zh) * | 2018-10-09 | 2019-03-22 | 福州瑞芯微电子股份有限公司 | 基于神经网络深度学习的加速电路和方法 |
CN109508782B (zh) * | 2018-10-09 | 2022-05-24 | 瑞芯微电子股份有限公司 | 基于神经网络深度学习的加速电路和方法 |
CN109376843A (zh) * | 2018-10-12 | 2019-02-22 | 山东师范大学 | 基于fpga的脑电信号快速分类方法、实现方法及装置 |
CN109376843B (zh) * | 2018-10-12 | 2021-01-08 | 山东师范大学 | 基于fpga的脑电信号快速分类方法、实现方法及装置 |
CN109948777A (zh) * | 2018-11-14 | 2019-06-28 | 深圳大学 | 基于fpga实现的卷积神经网络以及基于fpga实现卷积神经网络的实现方法 |
CN111260536B (zh) * | 2018-12-03 | 2022-03-08 | 中国科学院沈阳自动化研究所 | 可变参数的数字图像多尺度卷积处理器及其实现方法 |
CN111260536A (zh) * | 2018-12-03 | 2020-06-09 | 中国科学院沈阳自动化研究所 | 可变参数的数字图像多尺度卷积处理器及其实现方法 |
CN109711533B (zh) * | 2018-12-20 | 2023-04-28 | 西安电子科技大学 | 基于fpga的卷积神经网络加速*** |
CN109711533A (zh) * | 2018-12-20 | 2019-05-03 | 西安电子科技大学 | 基于fpga的卷积神经网络模块 |
CN109740619A (zh) * | 2018-12-27 | 2019-05-10 | 北京航天飞腾装备技术有限责任公司 | 用于目标识别的神经网络终端运行方法和装置 |
CN109685209B (zh) * | 2018-12-29 | 2020-11-06 | 瑞芯微电子股份有限公司 | 一种加快神经网络运算速度的装置和方法 |
CN109685209A (zh) * | 2018-12-29 | 2019-04-26 | 福州瑞芯微电子股份有限公司 | 一种加快神经网络运算速度的装置和方法 |
CN111461310A (zh) * | 2019-01-21 | 2020-07-28 | 三星电子株式会社 | 处理神经网络模型的神经网络设备、神经网络***和方法 |
US11550709B2 (en) * | 2019-04-03 | 2023-01-10 | Macronix International Co., Ltd. | Memory device and wear leveling method for the same |
CN110097174A (zh) * | 2019-04-22 | 2019-08-06 | 西安交通大学 | 基于fpga和行输出优先的卷积神经网络实现方法、***及装置 |
CN110097174B (zh) * | 2019-04-22 | 2021-04-20 | 西安交通大学 | 基于fpga和行输出优先的卷积神经网络实现方法、***及装置 |
CN110334801A (zh) * | 2019-05-09 | 2019-10-15 | 苏州浪潮智能科技有限公司 | 一种卷积神经网络的硬件加速方法、装置、设备及*** |
CN110276444B (zh) * | 2019-06-04 | 2021-05-07 | 北京清微智能科技有限公司 | 基于卷积神经网络的图像处理方法及装置 |
CN110276444A (zh) * | 2019-06-04 | 2019-09-24 | 北京清微智能科技有限公司 | 基于卷积神经网络的图像处理方法及装置 |
CN110276345A (zh) * | 2019-06-05 | 2019-09-24 | 北京字节跳动网络技术有限公司 | 卷积神经网络模型训练方法、装置和计算机可读存储介质 |
CN110399883A (zh) * | 2019-06-28 | 2019-11-01 | 苏州浪潮智能科技有限公司 | 图像特征提取方法、装置、设备及计算机可读存储介质 |
WO2021036668A1 (zh) * | 2019-08-27 | 2021-03-04 | 北京灵汐科技有限公司 | 神经网络的全局池化方法及众核*** |
CN110569970A (zh) * | 2019-09-12 | 2019-12-13 | 合肥工业大学 | 一种应用于卷积神经网络中硬件加速器的数据传输方法 |
CN110569970B (zh) * | 2019-09-12 | 2022-03-15 | 合肥工业大学 | 一种应用于卷积神经网络中硬件加速器的数据传输方法 |
CN110942145A (zh) * | 2019-10-23 | 2020-03-31 | 南京大学 | 基于可重构计算的卷积神经网络池化层、硬件实现方法及*** |
CN110807522A (zh) * | 2019-10-31 | 2020-02-18 | 合肥工业大学 | 一种神经网络加速器的通用计算电路 |
CN110807522B (zh) * | 2019-10-31 | 2022-05-06 | 合肥工业大学 | 一种神经网络加速器的通用计算电路 |
CN110913227A (zh) * | 2019-11-28 | 2020-03-24 | 山东浪潮人工智能研究院有限公司 | 一种异构计算架构的边缘端图像压缩***及方法 |
CN111027682A (zh) * | 2019-12-09 | 2020-04-17 | Oppo广东移动通信有限公司 | 神经网络处理器、电子设备及数据处理方法 |
WO2021134519A1 (zh) * | 2019-12-31 | 2021-07-08 | 华为技术有限公司 | 在神经网络推理中实现数据同步的装置和方法 |
CN111242295A (zh) * | 2020-01-20 | 2020-06-05 | 清华大学 | 一种可配置池化算子的方法及电路 |
CN111416743A (zh) * | 2020-03-19 | 2020-07-14 | 华中科技大学 | 一种卷积网络加速器、配置方法及计算机可读存储介质 |
CN111416743B (zh) * | 2020-03-19 | 2021-09-03 | 华中科技大学 | 一种卷积网络加速器、配置方法及计算机可读存储介质 |
WO2022001301A1 (zh) * | 2020-06-28 | 2022-01-06 | 深圳云天励飞技术股份有限公司 | 神经网络运算方法及相关设备 |
CN112001492B (zh) * | 2020-08-07 | 2023-06-23 | 中山大学 | 关于二值权重DenseNet模型的混合流水式加速架构及加速方法 |
CN112001492A (zh) * | 2020-08-07 | 2020-11-27 | 中山大学 | 关于二值权重DenseNet模型的混合流水式加速架构及加速方法 |
CN112149814A (zh) * | 2020-09-23 | 2020-12-29 | 哈尔滨理工大学 | 一种基于fpga的卷积神经网络加速*** |
CN112288082A (zh) * | 2020-11-23 | 2021-01-29 | 天津大学 | 一种基于hls的可重构通用标准卷积加速器设计方法 |
CN112230884A (zh) * | 2020-12-17 | 2021-01-15 | 季华实验室 | 目标检测硬件加速器及加速方法 |
CN112230884B (zh) * | 2020-12-17 | 2021-04-20 | 季华实验室 | 目标检测硬件加速器及加速方法 |
CN115145839A (zh) * | 2021-03-31 | 2022-10-04 | 广东高云半导体科技股份有限公司 | 一种深度卷积加速器及其实现加速深度卷积的方法 |
CN115145839B (zh) * | 2021-03-31 | 2024-05-14 | 广东高云半导体科技股份有限公司 | 一种深度卷积加速器及其实现加速深度卷积的方法 |
CN113112002A (zh) * | 2021-04-06 | 2021-07-13 | 济南大学 | 一种基于fpga轻量级卷积加速器的设计方法 |
CN113419702B (zh) * | 2021-06-21 | 2022-11-22 | 安谋科技(中国)有限公司 | 一种数据累加方法、处理器、电子设备及可读介质 |
CN113419702A (zh) * | 2021-06-21 | 2021-09-21 | 安谋科技(中国)有限公司 | 一种数据累加方法、处理器、电子设备及可读介质 |
CN113240103B (zh) * | 2021-06-25 | 2022-10-04 | 清华大学 | 神经网络池化电路 |
CN113240103A (zh) * | 2021-06-25 | 2021-08-10 | 清华大学 | 神经网络池化电路 |
Also Published As
Publication number | Publication date |
---|---|
CN106875012B (zh) | 2019-09-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106875012B (zh) | 一种基于fpga的深度卷积神经网络的流水化加速*** | |
CN106779060B (zh) | 一种适于硬件设计实现的深度卷积神经网络的计算方法 | |
Moini et al. | A resource-limited hardware accelerator for convolutional neural networks in embedded vision applications | |
CN108241890B (zh) | 一种可重构神经网络加速方法及架构 | |
Huang et al. | FPGA-based high-throughput CNN hardware accelerator with high computing resource utilization ratio | |
KR102120396B1 (ko) | 심층 신경망용 가속기 | |
CN107301456B (zh) | 基于向量处理器的深度神经网络多核加速实现方法 | |
Kim et al. | FPGA-based CNN inference accelerator synthesized from multi-threaded C software | |
CN110390384A (zh) | 一种可配置的通用卷积神经网络加速器 | |
CN108280514A (zh) | 基于fpga的稀疏神经网络加速***和设计方法 | |
CN109102065A (zh) | 一种基于PSoC的卷积神经网络加速器 | |
CN108681984A (zh) | 一种3*3卷积算法的加速电路 | |
CN107704922A (zh) | 人工神经网络处理装置 | |
CN1272705C (zh) | 包括纯量算术逻辑单元的单指令多数据处理机 | |
CN108009106A (zh) | 神经网络计算模组 | |
CN104899182A (zh) | 一种支持可变分块的矩阵乘加速方法 | |
CN108416437A (zh) | 用于乘加运算的人工神经网络的处理***及方法 | |
CN107679620A (zh) | 人工神经网络处理装置 | |
CN106951926A (zh) | 一种混合架构的深度学习***方法及装置 | |
Kästner et al. | Hardware/software codesign for convolutional neural networks exploiting dynamic partial reconfiguration on PYNQ | |
CN109472356A (zh) | 一种可重构神经网络算法的加速装置及方法 | |
CN101398753A (zh) | 用于执行扫描运算的***、方法及计算机程序产品 | |
CN113469350B (zh) | 一种适于npu的深度卷积神经网络加速方法和*** | |
CN110222818A (zh) | 一种用于卷积神经网络数据存储的多bank行列交织读写方法 | |
CN108652661A (zh) | 使用capi加速的fpga医学超声成像*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |