CN114254740A - 卷积神经网络加速计算方法、计算系统、芯片及接收机 - Google Patents
卷积神经网络加速计算方法、计算系统、芯片及接收机 Download PDFInfo
- Publication number
- CN114254740A CN114254740A CN202210054125.7A CN202210054125A CN114254740A CN 114254740 A CN114254740 A CN 114254740A CN 202210054125 A CN202210054125 A CN 202210054125A CN 114254740 A CN114254740 A CN 114254740A
- Authority
- CN
- China
- Prior art keywords
- circulation
- cnt
- convolution kernel
- module
- calculation
- 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
Images
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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- 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)
- Complex Calculations (AREA)
Abstract
本发明公开了一种卷积神经网络加速计算方法,包括读取偏置量;读取权重值;读取输入特征图的数据;对权重值下发更新指令;权重值更新完成后对读取的输入特征图进行计算;当前块计算完成后对计算结果进行缓存;重复上述步骤直至所有点计算完成,当前层卷积计算完成。本发明还公开了一种实现所述卷积神经网络加速计算方法的计算系统,以及包括了所述卷积神经网络加速计算方法或计算系统的芯片,以及包括了所述的卷积神经网络加速计算方法,或者包括了所述的计算系统,或者包括了所述的芯片的接收机。本发明通过创新的卷积计算加快算法的设计,不仅实现了卷积计算过程的加速,而且可靠性更高、实用性更好,功耗更少。
Description
技术领域
本发明属于数据信号处理领域,具体涉及一种卷积神经网络加速计算方法、计算系统、芯片及接收机。
背景技术
近年来,随着经济技术的发展,人工智能技术已经广泛应用于人们的生产和生活当中,给人们的生产和生活带来了无尽的便利。
卷积神经网络(CNN)是人工智能技术的重要组成部分,也已经广泛应用到图像分类、目标检测、视频处理等领域。然而随着深度学习的进步,卷积神经网络层数越来越多,分类精度越来越高,卷积神经网络的计算量越来越大,参数也越来越多。因此,在实际工程应用中,越来越多的人选择低成本、低功耗的ASIC\FPGA进行卷积神经网络的计算加速。
然而,大多数的ASIC\FPGA加速器均存在如下主要问题:(1)专用性比较强,只能适配某些网络模型:拿卷积算子举例,部分ASIC\FPGA加速器可能只能支持特定的卷积核大小,如3*3、1*1等;(2)计算时采用单一的数据复用方式或复用输入特征图,或复用权重,因此需要反复读取外部存储,对带宽依赖大,而且算法的功耗高。
发明内容
本发明的目的在于提供一种可靠性高、实用性好且功耗较低的卷积神经网络加速计算方法。
本发明的目的之二在于提供一种实现所述卷积神经网络加速计算方法的计算系统。
本发明的目的之三在于提供一种包括了所述卷积神经网络加速计算方法或所述计算系统的芯片。
本发明的目的之四在于提供一种接收机,该接收机包括了所述的卷积神经网络加速计算方法,或者包括了所述的计算系统,或者包括了所述的芯片。
本发明提供的这种卷积神经网络加速计算方法,包括如下步骤:
S1. 读取偏置量;
S2. 读取权重值;
S3. 读取输入特征图的数据;
S4. 对权重值下发更新指令;
S5. 权重值更新完成后,下发计算指令;
S6. 当前块计算完成后,对计算结果进行缓存;
S7. 重复步骤S4~S6直至所有点计算完成,当前层卷积计算完成。
所述的卷积神经网络加速计算方法,具体为将输出特征图像素点数按照设定值拆分为若干个block块,并依次进行计算;每计算完一个block块后输出。
步骤S2所述的读取权重值,具体包括如下步骤:
当接收到读取权重值指令后,每次从外部存储器读取ICP*OCP个权重,并进行存储,ICP为输入通道并行度,OCP为输出通道并行度;
当接收到更新权重值指令后,将存储的权重数据更新到乘加矩阵中;
在乘加计算过程中,读取下一组乘加计算所需要的权重值;
读取权重值循环时,采用如下步骤控制循环:
当卷积核输入通道大于设定值时,将输入通道按照乘加矩阵进行行拆分,ic_len_cnt为输入通道的循环次数,当ic_len_cnt从0循环到设定值,该循环结束;然后按照卷积核列方向循环,k_width_cnt为卷积核列方向循环次数,当k_width_cnt从0循环到设定值时,开始卷积核行方向循环;k_height_cnt为卷积核行方向循环次数,当k_height_cnt由0循环到设定值k_height-1时,开始卷积核输出通道方向循环;输出通道按照乘加矩阵的列拆分;oc_len_cnt为输出通道循环次数,当oc_len_cnt由0循环到时,一个block块的点的输出特征图计算完成;最后按照循环,block_len为输出特征图像素点数按照设定值拆分的block块数;当block_cnt由0循环到block_len-1,整个循环结束,权重读取完成。
步骤S3所述的读取输入特征图的数据,具体包括如下步骤:
接收到读取输入特征图数据的指令后,将读取的输入特征图进行存储,读取时按照{in_height,in_width,in_cum}的格式进行读取,in_height为输入特征图的高度,in_width为输入特征图的宽度,in_cum为输入的通道数;
当接收到计算指令后,将存储的数据按照规则传递给乘加矩阵;
读取时采用如下步骤进行控制:
R1. 用卷积核窗口中的每个点,按照步长依次在输入特征图上滑动,滑动到设定值时停止,且滑动的点共用相同的权重;
R2. 用卷积核在输入特征图上滑动时,对应的输出点坐标out_width和out_hegiht同步更新;
R3. 当卷积核输入通道大于设定值时,将输入通道按照乘加矩阵进行行拆分;ic_len_cnt为输入通道的循环次数,当ic_len_cnt由0循环到设定值ic_len-1时,该循环结束;然后按照卷积核列方向循环,卷积核列方向循环结束后再开始卷积核行方向循环;卷积核行方向循环结束后再开始卷积核输出通道方向循环;输出通道按照乘加矩阵的列拆分;当循环结束后,一个block块的点的输出特征图计算完成;
R4. 当输入通道非ICP整数倍时,则每两个时钟周期传递一次数据。
步骤S5所述的权重值更新完成后,下发计算指令,具体包括如下步骤:
进行累加计算,每个地址对应一个输出像素点;卷积循环过程中,第一个循环,直接将当前部分结果进行存储;中间循环过程中,将当前部分和对应的地址累加和相加后再存储;最后一个循环中,将累加结果添加偏置量,并量化后输出。
本发明还公开了一种实现所述卷积神经网络加速计算方法的计算系统,包括控制模块、特征图准备模块、权重准备模块、乘加矩阵模块、累加模块和结果输出模块;特征图准备模块、权重准备模块、乘加矩阵模块、累加模块和结果输出模块均与控制模块连接;特征图准备模块和权重准备模块均与乘加矩阵模块连接;乘加矩阵模块、累加模块和结果输出模块依次串接;控制模块用于控制所述计算系统工作;特征图准备模块用于接收控制模块下发的读取输入特征图指令,将读取的输入特征图进行存储并按照计算指令传递给乘加矩阵模块;权重准备模块用于接收读取权重指令从外部存储器读取权重并存储,或者用于接收更新权重指令,将权重值进行更新,并将权重值上传乘加矩阵模块;乘加矩阵模块用于完成输入特征图和相应权重相乘,并将结果上传累加模块;累加模块用于完成累加功能,并将结果上传结果输出模块;结果输出模块用于接收计算结果并进行缓存和存储,并输出最终的输出特征图。
所述的特征图准备模块,用于接收控制模块下发的读取输入特征图指令,将读取的输入特征图存储在缓存ibuf中,读取时按照{in_height,in_width,in_cum}的格式进行读取,in_height为输入特征图的高度,in_width为输入特征图的宽度,in_cum为输入的通道数;
当接收到计算指令且缓存ibuf中满足计算所需要的特征图时,开始从缓存ibuf中读取特征图;读取时采用如下步骤进行控制:
R1. 用卷积核窗口中的每个点,按照步长依次在输入特征图上滑动,滑动到设定值时停止,且滑动的点共用相同的权重;
R2. 用卷积核在输入特征图上滑动时,对应的输出点坐标out_width和out_hegiht同步更新;b_width_start和b_height_start为每个block块输出坐标起始点,每个block循环均从b_width_start、b_height_start开始;
R3. 当卷积核输入通道大于设定值时,将输入通道按照乘加矩阵进行行拆分;ic_len_cnt为输入通道的循环次数,当ic_len_cnt由0循环到设定值ic_len-1时,输入通道循环结束;然后按照卷积核列方向循环,k_width_cnt为卷积核列方向循环次数,当k_width_cnt从0循环到设定值k_width-1时,开始卷积核行方向循环;k_height_cnt为卷积核行方向循环次数,当k_height_cnt由0循环到设定值k_height-1时,开始卷积核输出通道方向循环;输出通道按照乘加矩阵的列拆分;当循环结束后,一个block块的点的输出特征图计算能完成;
R4. 当输入通道非ICP整数倍时,则每两个时钟周期传递一次数据。
当接收到更新权重指令后,将缓存wei_preset_reg的内容更新到乘加矩阵中;
在乘加计算过程中,读取下一组乘加计算所需要的权重值;
读取权重值循环时,采用如下步骤控制循环:
当卷积核输入通道大于设定值时,将输入通道按照乘加矩阵进行行拆分,ic_len_cnt为输入通道的循环次数,当ic_len_cnt从0循环到设定值ic_len-1,该循环结束;然后按照卷积核列方向循环,k_width_cnt为卷积核列方向循环次数,当k_width_cnt从0循环到设定值k_width-1时,开始卷积核行方向循环;k_height_cnt为卷积核行方向循环次数,当k_height_cnt由0循环到设定值k_height-1时,开始卷积核输出通道方向循环;输出通道按照乘加矩阵的列拆分;oc_len_cnt为输出通道循环次数,当oc_len_cnt由0循环到oc_len-1时,一个block块的点的输出特征图计算完成;最后按照block循环,block_len为输出特征图像素点数按照设定值拆分的block块数;当block_cnt由0循环到block_len-1,整个循环结束,权重读取完成。
所述的累加模块,包括OCP个缓存acc_ram,用于完成累加功能;每一个地址对应一个输出像素点;卷积循环过程中,第一个循环,直接将当前部分结果存储到acc_ram;中间循环过程中,将当前部分和与acc_ram对应的地址累加和相加后再存储;最后一个循环中,将累加结果添加偏置量,并量化后输出。
所述的结果输出模块,用于接收累加模块的卷积计算结果,并将所有输出通道乒乓缓存到缓存obuf0和obuf1中;当obuf0和obuf1中任意一个块存储完成时,从存储完成的块中连续读出输出特征图,从而提高带宽的利用率。
本发明还提供了一种芯片,该芯片包括了上述的卷积神经网络加速计算方法或上述的计算系统。
本发明还提供了一种接收机,该接收机包括了上述的卷积神经网络加速计算方法,或者上述的计算系统,或者上述的芯片。
本发明提供的这种卷积神经网络加速计算方法、计算系统、芯片及接收机,通过创新的卷积计算加快算法的设计,不仅实现了卷积计算过程的加速,而且可靠性更高、实用性更好,功耗更低。
附图说明
图1为本发明方法的方法流程示意图。
图2为本发明方法中的卷积核窗口在输入特征图上滑动的示意图。
图3为本发明方法中的输出点坐标同步更新的流程示意图。
图4为本发明方法中的输入特征图各计算循环过程的流程示意图。
图5为本发明系统的功能模块图。
具体实施方式
如图1所示为本发明方法的方法流程示意图:本发明提供的这种卷积神经网络加速计算方法,包括如下步骤:
卷积神经网络加速计算方法具体为将输出特征图像素点数out_num按照设定值acc_len拆分为若干个block块,并依次进行计算;每计算完一个block块后输出;最后一个block可能不足acc_len个像素点,每个block实际计算的像素点数记为acc_len_real,acc_len不能超过累加模块中设定的acc_ram的深度;
S1. 读取偏置量;具体实施时,如有偏置量则直接读取;如没有偏置量,则不读取,并直接进行后续步骤;
S2. 读取权重值;具体包括如下步骤:
当接收到读取权重值指令后,每次从外部存储器读取ICP*OCP个权重,并进行存储,存储在缓存wei_preset_reg里;ICP为输入通道并行度,OCP为输出通道并行度;
当接收到更新权重值指令后,将存储的权重数据更新到乘加矩阵中;
在乘加计算过程中,读取下一组乘加计算所需要的权重值,从而提高计算效率;
读取权重值循环时,采用如下步骤控制循环:
当卷积核输入通道大于设定值时,将输入通道按照乘加矩阵进行行拆分,ic_len_cnt为输入通道的循环次数,当ic_len_cnt从0循环到设定值ic_len-1,该循环结束;然后按照卷积核列方向循环,k_width_cnt为卷积核列方向循环次数,当k_width_cnt从0循环到设定值k_width-1时,开始卷积核行方向循环;k_height_cnt为卷积核行方向循环次数,当k_height_cnt由0循环到设定值k_height-1时,开始卷积核输出通道方向循环;输出通道按照乘加矩阵的列拆分;oc_len_cnt为输出通道循环次数,当oc_len_cnt由0循环到oc_len-1时,一个block块的点的输出特征图计算完成;最后按照block循环,block_len为输出特征图像素点数按照设定值拆分的block块数;当block_cnt由0循环到block_len-1,整个循环结束,权重读取完成;
S3. 读取输入特征图的数据;具体包括如下步骤:
接收到读取输入特征图数据的指令后,将读取的输入特征图进行存储,存储在缓存ibuf中,读取时按照{in_height,in_width,in_cum}的格式进行读取,in_height为输入特征图的高度,in_width为输入特征图的宽度,in_cum为输入的通道数;
当接收到计算指令后,将存储的数据上传;
读取时采用如下步骤进行控制:
R1. 用卷积核窗口中的每个点,按照步长依次在输入特征图上滑动,滑动到设定值时停止,且滑动的点共用相同的权重;
具体如图2所示:以输入特征图大小为5*5、输入通道数为1、卷积核大小为3*3、步长为1举例,第一个循环用卷积核F0依次在输入特征图滑动,即完成P0*F0、P1*F0、P2*F0、P5*F0 ……P12*F0乘法,第二个循环用卷积核F1依次在输入特征图滑动,即完成P1*F1、P2*F1、P3*F1、P6*F1 ……P13*F1乘法,依次类推,第九个循环用卷积核F8依次在输入特征图滑动,即完成P12*F8、P13*F8、P14*F8、P5*F8 ……P24*F8乘法;
R2. 用卷积核在输入特征图上滑动时,对应的输出点坐标out_width和out_hegiht同步更新;b_width_start、b_height_start为每个block块输出坐标起始点,每个block循环都是从b_width_start、b_height_start开始的;具体算法流程如图3所示;
R3. 当卷积核输入通道大于设定值时,将输入通道按照乘加矩阵进行行拆分;输入通道的循环次数达到设定值时循环结束;然后按照卷积核列方向循环,卷积核列方向循环结束后再开始卷积核行方向循环;卷积核行方向循环结束后再开始卷积核输出通道方向循环;输出通道按照乘加矩阵的列拆分;当循环结束后,一个block块的点的输出特征图计算完成;
具体实施时,当卷积核输入通道大于设定值时,将输入通道按照乘加矩阵进行行拆分;ic_len_cnt为输入通道的循环次数,当ic_len_cnt由0循环到设定值ic_len-1时,输入通道循环结束;然后按照卷积核列方向循环,k_width_cnt为卷积核列方向循环次数,当k_width_cnt从0循环到设定值k_width-1时,开始卷积核行方向循环;k_height_cnt为卷积核行方向循环次数,当k_height_cnt由0循环到设定值k_height-1时,开始卷积核输出通道方向循环;输出通道按照乘加矩阵的列拆分;当循环结束后,一个block块的点的输出特征图计算能完成;
具体算法如图4所示;
R4. 当输入通道非ICP整数倍时,则每两个时钟周期传递一次数据;
最后,通过out_width、out_height、ic_len_cnt、k_width_cnt、k_height_cnt、k_stride(卷积步长)、k_pad映射ibuf读地址;
S4. 对权重值下发更新指令;
S5. 权重值更新完成后,下发计算指令;具体包括如下步骤:
采用ICP*OCP乘加矩阵,完成输入特征图和相应权重相乘,每列完成ICP个乘的累加;
进行累加计算,每个地址对应一个输出像素点;卷积循环过程中,第一个循环,直接将当前部分结果进行存储;中间循环过程中,将当前部分和对应的地址累加和相加后再存储;最后一个循环中,将累加结果添加偏置量,并量化后输出;
S6. 当前块计算完成后,对计算结果进行缓存;
S7. 重复步骤S4~S6直至所有点计算完成,当前层卷积计算完成。
如图5所示为本发明系统的功能模块示意图:本发明公开的这种实现所述卷积神经网络加速计算方法的计算系统,包括控制模块、特征图准备模块、权重准备模块、乘加矩阵模块、累加模块和结果输出模块;特征图准备模块、权重准备模块、乘加矩阵模块、累加模块和结果输出模块均与控制模块连接;特征图准备模块和权重准备模块均与乘加矩阵模块连接;乘加矩阵模块、累加模块和结果输出模块依次串接;控制模块用于控制所述计算系统工作;特征图准备模块用于接收控制模块下发的读取输入特征图指令,将读取的输入特征图进行存储并按照计算指令传递给乘加矩阵模块;权重准备模块用于接收读取权重指令从外部存储器读取权重并存储,或者用于接收更新权重指令,将权重值进行更新,并将权重值上传乘加矩阵模块;乘加矩阵模块用于完成输入特征图和相应权重相乘,并将结果上传累加模块;累加模块用于完成累加功能,并将结果上传结果输出模块;结果输出模块用于接收计算结果并进行缓存和存储,并输出最终的输出特征图。
具体实施时,特征图准备模块:用于接收控制模块下发的读取输入特征图指令,将读取的输入特征图存储在缓存ibuf中,读取时按照{in_height,in_width,in_cum}的格式进行读取,in_height为输入特征图的高度,in_width为输入特征图的宽度,in_cum为输入的通道数;
当接收到计算指令且缓存ibuf中满足计算所需要的特征图时,开始从缓存ibuf中读取特征图;读取时采用如下步骤进行控制:
R1. 用卷积核窗口中的每个点,按照步长依次在输入特征图上滑动,滑动到设定值时停止,且滑动的点共用相同的权重;
R2. 用卷积核在输入特征图上滑动时,对应的输出点坐标out_width和out_hegiht同步更新;b_width_start和b_height_start为每个block块输出坐标起始点,每个block循环均从b_width_start、b_height_start开始;
R3. 当卷积核输入通道大于设定值时,将输入通道按照乘加矩阵进行行拆分;ic_len_len为输入通道的循环次数,当ic_len_cnt由0循环到设定值ic_len-1时,输入通道循环结束;然后按照卷积核列方向循环,k_width_cnt为卷积核列方向循环次数,当k_width_cnt从0循环到设定值k_width-1时,开始卷积核行方向循环;k_height_cnt为卷积核行方向循环次数,当k_height_cnt由0循环到设定值k_height-1时,开始卷积核输出通道方向循环;输出通道按照乘加矩阵的列拆分;当循环结束后,一个block块的点的输出特征图计算完成;
R4. 当输入通道非ICP整数倍时,则每两个时钟周期传递一次数据。
权重准备模块:当接收到读取权重指令时,每次从外部存储器读取ICP*OCP个权重,并存储到缓存wei_preset_reg里;ICP为输入通道并行度,OCP为输出通道并行度;
当接收到更新权重指令后,将缓存wei_preset_reg的内容更新到乘加矩阵中;
在乘加计算过程中,读取下一组乘加计算所需要的权重值;
读取权重值循环时,采用如下步骤控制循环:
当卷积核输入通道大于设定值时,将输入通道按照乘加矩阵进行行拆分,ic_len_cnt为输入通道的循环次数,当ic_len_cnt从0循环到设定值ic_len-1,该循环结束;然后按照卷积核列方向循环,k_width_cnt为卷积核列方向循环次数,当k_width_cnt从0循环到设定值k_width-1时,开始卷积核行方向循环;k_height_cnt为卷积核行方向循环次数,当k_height_cnt由0循环到设定值k_height-1时,开始卷积核输出通道方向循环;输出通道按照乘加矩阵的列拆分;oc_len_cnt为输出通道循环次数,当oc_len_cnt由0循环到oc_len-1时,一个block块的点的输出特征图计算完成;最后按照block循环,block_len为输出特征图像素点数按照设定值拆分的block块数;当block_cnt由0循环到block_len-1,整个循环结束,权重读取完成;
累加模块:包括OCP个缓存acc_ram,用于完成累加功能;每一个地址对应一个输出像素点;卷积循环过程中,第一个循环,直接将当前部分结果存储到acc_ram;中间循环过程中,将当前部分和与acc_ram对应的地址累加和相加后再存储;最后一个循环中,将累加结果添加偏置量,并量化后输出。
结果输出模块:用于接收累加模块的卷积计算结果,并将所有输出通道乒乓缓存到缓存obuf0和obuf1中;当obuf0和obuf1中任意一个块存储完成时,从存储完成的块中连续读出输出特征图,从而提高带宽的利用率。
Claims (10)
1.一种卷积神经网络加速计算方法,其特征在于包括如下步骤:
S1. 读取偏置量;
S2. 读取权重值;
S3. 读取输入特征图的数据;
S4. 对权重值下发更新指令;
S5. 权重值更新完成后,下发计算指令;
S6. 当前块计算完成后,对计算结果进行缓存;
S7. 重复步骤S4~S6直至所有点计算完成,当前层卷积计算完成。
2.根据权利要求1所述的卷积神经网络加速计算方法,其特征在于所述的卷积神经网络加速计算方法,具体为将输出特征图像素点数按照设定值拆分为若干个block块,并依次进行计算;每计算完一个block块后输出。
3.根据权利要求2所述的卷积神经网络加速计算方法,其特征在于步骤S2所述的读取权重值,具体包括如下步骤:
当接收到读取权重值指令后,每次从外部存储器读取ICP*OCP个权重,并进行存储,ICP为输入通道并行度,OCP为输出通道并行度;
当接收到更新权重值指令后,将存储的权重数据更新到乘加矩阵中;
在乘加计算过程中,读取下一组乘加计算所需要的权重值;
读取权重值循环时,采用如下步骤控制循环:
当卷积核输入通道大于设定值时,将输入通道按照乘加矩阵进行行拆分,ic_len_cnt为输入通道的循环次数,当ic_len_cnt从0循环到设定值ic_len-1,该循环结束;然后按照卷积核列方向循环,k_width_cnt为卷积核列方向循环次数,当k_width_cnt从0循环到设定值k_width-1时,开始卷积核行方向循环;k_height_cnt为卷积核行方向循环次数,当k_height_cnt由0循环到设定值k_height-1时,开始卷积核输出通道方向循环;输出通道按照乘加矩阵的列拆分;oc_len_cnt为输出通道循环次数,当oc_len_cnt由0循环到oc_len-1时,一个block块的点的输出特征图计算能完成;最后按照block循环,block_len为输出特征图像素点数按照设定值拆分的block块数;当block_cnt由0循环到block_len-1,整个循环结束,权重读取完成。
4.根据权利要求3所述的卷积神经网络加速计算方法,其特征在于步骤S3所述的读取输入特征图的数据,具体包括如下步骤:
接收到读取输入特征图数据的指令后,将读取的输入特征图进行存储,读取时按照{in_height,in_width,in_cum}的格式进行读取,in_height为输入特征图的高度,in_width为输入特征图的宽度,in_cum为输入的通道数;
当接收到计算指令后,将存储的数据上传;
读取时采用如下步骤进行控制:
R1. 用卷积核窗口中的每个点,按照步长依次在输入特征图上滑动,滑动到设定值时停止,且滑动的点共用相同的权重;
R2. 用卷积核在输入特征图上滑动时,对应的输出点坐标out_width和out_hegiht同步更新;
R3. 当卷积核输入通道大于设定值时,将输入通道按照乘加矩阵进行行拆分;ic_len_cnt为输入通道的循环次数,当ic_len_cnt由0循环到设定值ic_len-1时,该循环结束;然后按照卷积核列方向循环,卷积核列方向循环结束后再开始卷积核行方向循环;卷积核行方向循环结束后再开始卷积核输出通道方向循环;输出通道按照乘加矩阵的列拆分;当循环结束后,一个block块的点的输出特征图计算完成;
R4. 当输入通道非ICP整数倍时,则每两个时钟周期传递一次数据。
5.根据权利要求4所述的卷积神经网络加速计算方法,其特征在于步骤S5所述的权重值更新完成后,下发计算指令,具体包括如下步骤:
采用ICP*OCP乘加矩阵,完成输入特征图和相应权重相乘,每列完成ICP个乘的累加;
进行累加计算,每个地址对应一个输出像素点;卷积循环过程中,第一个循环,直接将当前部分结果进行存储;中间循环过程中,将当前部分和对应的地址累加和相加后再存储;最后一个循环中,将累加结果添加偏置量,并量化后输出。
6.一种实现权利要求1~5之一所述的卷积神经网络加速计算方法的计算系统,其特征在于包括控制模块、特征图准备模块、权重准备模块、乘加矩阵模块、累加模块和结果输出模块;特征图准备模块、权重准备模块、乘加矩阵模块、累加模块和结果输出模块均与控制模块连接;特征图准备模块和权重准备模块均与乘加矩阵模块连接;乘加矩阵模块、累加模块和结果输出模块依次串接;控制模块用于控制所述计算系统工作;特征图准备模块用于接收控制模块下发的读取输入特征图指令,将读取的输入特征图进行存储并按照计算指令传递给乘加矩阵模块;权重准备模块用于接收读取权重指令从外部存储器读取权重并存储,或者用于接收更新权重指令,将权重值进行更新,并将权重值上传乘加矩阵模块;乘加矩阵模块用于完成输入特征图和相应权重相乘,并将结果上传累加模块;累加模块用于完成累加功能,并将结果上传结果输出模块;结果输出模块用于接收计算结果并进行缓存和存储,并输出最终的输出特征图。
7.根据权利要求6所述的计算系统,其特征在于所述的特征图准备模块,用于接收控制模块下发的读取输入特征图指令,将读取的输入特征图存储在缓存ibuf中,读取时按照{in_height,in_width,in_cum}的格式进行读取,in_height为输入特征图的高度,in_width为输入特征图的宽度,in_cum为输入的通道数;
当接收到计算指令且缓存ibuf中满足计算所需要的特征图时,开始从缓存ibuf中读取特征图;读取时采用如下步骤进行控制:
R1. 用卷积核窗口中的每个点,按照步长依次在输入特征图上滑动,滑动到设定值时停止,且滑动的点共用相同的权重;
R2. 用卷积核在输入特征图上滑动时,对应的输出点坐标out_width和out_hegiht同步更新;b_width_start和b_height_start为每个block块输出坐标起始点,每个block循环均从b_width_start、b_height_start开始;
R3. 当卷积核输入通道大于设定值时,将输入通道按照乘加矩阵进行行拆分;ic_len_cnt为输入通道的循环次数,当ic_len_cnt由0循环到设定值ic_len-1时输入通道循环结束;然后按照卷积核列方向循环,k_width_cnt为卷积核列方向循环次数,当k_width_cnt从0循环到设定值k_width-1时,开始卷积核行方向循环;k_height_cnt为卷积核行方向循环次数,当k_height_cnt由0循环到设定值k_height-1时,开始卷积核输出通道方向循环;输出通道按照乘加矩阵的列拆分;当循环结束后,一个block块的点的输出特征图计算完成;
R4. 当输入通道非ICP整数倍时,则每两个时钟周期传递一次数据。
8.根据权利要求7所述的计算系统,其特征在于所述的权重准备模块,当接收到读取权重指令时,每次从外部存储器读取ICP*OCP个权重,并存储到缓存wei_preset_reg里;ICP为输入通道并行度,OCP为输出通道并行度;
当接收到更新权重指令后,将缓存wei_preset_reg的内容更新到乘加矩阵中;
在乘加计算过程中,读取下一组乘加计算所需要的权重值;
读取权重值循环时,采用如下步骤控制循环:
当卷积核输入通道大于设定值时,将输入通道按照乘加矩阵进行行拆分,ic_len_cnt为输入通道的循环次数,当ic_len_cnt从0循环到设定值ic_len-1,该循环结束;然后按照卷积核列方向循环,k_width_cnt为卷积核列方向循环次数,当k_width_cnt从0循环到设定值k_width-1时,开始卷积核行方向循环;k_height_cnt为卷积核行方向循环次数,当k_height_cnt由0循环到设定值k_height-1时,开始卷积核输出通道方向循环;输出通道按照乘加矩阵的列拆分;oc_len_cnt为输出通道循环次数,当oc_len_cnt由0循环到oc_len-1时,一个block块的点的输出特征图计算能完成;最后按照block循环,block_len为输出特征图像素点数按照设定值拆分的block块数;当block_cnt由0循环到block_len-1,整个循环结束,权重读取完成;
所述的累加模块,包括OCP个缓存acc_ram,用于完成累加功能;每一个地址对应一个输出像素点;卷积循环过程中,第一个循环,直接将当前部分结果存储到acc_ram;中间循环过程中,将当前部分和与acc_ram对应的地址累加和相加后再存储;最后一个循环中,将累加结果添加偏置量,并量化后输出;
所述的结果输出模块,用于接收累加模块的卷积计算结果,并将所有输出通道乒乓缓存到缓存obuf0和obuf1中;当obuf0和obuf1中任意一个块存储完成时,从存储完成的块中连续读出输出特征图,从而提高带宽的利用率。
9.一种芯片,其特征在于包括了权利要求1~5之一所述的卷积神经网络加速计算方法或权利要求6~8之一所述的计算系统。
10.一种接收机,其特征在于包括了权利要求1~5之一所述的卷积神经网络加速计算方法,或者包括了权利要求6~8之一所述的计算系统,或者包括了权利要求9所述的芯片。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210054125.7A CN114254740B (zh) | 2022-01-18 | 2022-01-18 | 卷积神经网络加速计算方法、计算系统、芯片及接收机 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210054125.7A CN114254740B (zh) | 2022-01-18 | 2022-01-18 | 卷积神经网络加速计算方法、计算系统、芯片及接收机 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114254740A true CN114254740A (zh) | 2022-03-29 |
CN114254740B CN114254740B (zh) | 2022-09-30 |
Family
ID=80796677
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210054125.7A Active CN114254740B (zh) | 2022-01-18 | 2022-01-18 | 卷积神经网络加速计算方法、计算系统、芯片及接收机 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114254740B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115860049A (zh) * | 2023-03-02 | 2023-03-28 | 瀚博半导体(上海)有限公司 | 一种数据调度方法和设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109416754A (zh) * | 2016-05-26 | 2019-03-01 | 多伦多大学管理委员会 | 用于深度神经网络的加速器 |
CN110826685A (zh) * | 2018-08-08 | 2020-02-21 | 华为技术有限公司 | 神经网络卷积计算的方法和装置 |
CN111898733A (zh) * | 2020-07-02 | 2020-11-06 | 西安交通大学 | 一种深度可分离卷积神经网络加速器架构 |
CN112465110A (zh) * | 2020-11-16 | 2021-03-09 | 中国电子科技集团公司第五十二研究所 | 一种卷积神经网络计算优化的硬件加速装置 |
CN113919477A (zh) * | 2020-07-08 | 2022-01-11 | 嘉楠明芯(北京)科技有限公司 | 一种卷积神经网络的加速方法及装置 |
-
2022
- 2022-01-18 CN CN202210054125.7A patent/CN114254740B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109416754A (zh) * | 2016-05-26 | 2019-03-01 | 多伦多大学管理委员会 | 用于深度神经网络的加速器 |
CN110826685A (zh) * | 2018-08-08 | 2020-02-21 | 华为技术有限公司 | 神经网络卷积计算的方法和装置 |
CN111898733A (zh) * | 2020-07-02 | 2020-11-06 | 西安交通大学 | 一种深度可分离卷积神经网络加速器架构 |
CN113919477A (zh) * | 2020-07-08 | 2022-01-11 | 嘉楠明芯(北京)科技有限公司 | 一种卷积神经网络的加速方法及装置 |
CN112465110A (zh) * | 2020-11-16 | 2021-03-09 | 中国电子科技集团公司第五十二研究所 | 一种卷积神经网络计算优化的硬件加速装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115860049A (zh) * | 2023-03-02 | 2023-03-28 | 瀚博半导体(上海)有限公司 | 一种数据调度方法和设备 |
Also Published As
Publication number | Publication date |
---|---|
CN114254740B (zh) | 2022-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110390383B (zh) | 一种基于幂指数量化的深度神经网络硬件加速器 | |
US20210224125A1 (en) | Operation Accelerator, Processing Method, and Related Device | |
CN109948774B (zh) | 基于网络层捆绑运算的神经网络加速器及其实现方法 | |
CN110390385B (zh) | 一种基于bnrp的可配置并行通用卷积神经网络加速器 | |
CN106127302A (zh) | 处理数据的电路、图像处理系统、处理数据的方法和装置 | |
CN112465110B (zh) | 一种卷积神经网络计算优化的硬件加速装置 | |
US20220083857A1 (en) | Convolutional neural network operation method and device | |
CN106846235B (zh) | 一种利用NVIDIA Kepler GPU汇编指令加速的卷积优化方法及系统 | |
CN110348574A (zh) | 一种基于zynq的通用卷积神经网络加速结构及设计方法 | |
CN109146065B (zh) | 二维数据的卷积运算方法及装置 | |
Solovyev et al. | Fixed-point convolutional neural network for real-time video processing in FPGA | |
CN111414994A (zh) | 一种基于FPGA的Yolov3网络计算加速系统及其加速方法 | |
CN109117940B (zh) | 基于卷积神经网络的目标检测方法、装置、终端及存储介质 | |
CN111985597B (zh) | 模型压缩方法及装置 | |
CN109993293B (zh) | 一种适用于堆叠式沙漏网络的深度学习加速器 | |
CN110991630A (zh) | 一种面向边缘计算的卷积神经网络处理器 | |
CN114254740B (zh) | 卷积神经网络加速计算方法、计算系统、芯片及接收机 | |
CN115423081A (zh) | 一种基于fpga的cnn_lstm算法的神经网络加速器 | |
CN113792621B (zh) | 一种基于fpga的目标检测加速器设计方法 | |
CN113743587A (zh) | 一种卷积神经网络池化计算方法、系统、及存储介质 | |
CN113516236A (zh) | 基于zynq平台的vgg16网络并行加速处理方法 | |
CN114626011B (zh) | 光子计算神经网络运算加速方法、装置、设备及存储介质 | |
CN112200310A (zh) | 智能处理器、数据处理方法及存储介质 | |
CN111860819A (zh) | 一种可拼接、可分段的全连接神经网络推理加速器及其加速方法 | |
CN114780151A (zh) | 一种基于归并排序算法实现可变规模数量的数据排序系统 |
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 |