CN112418417B - 基于simd技术的卷积神经网络加速装置及方法 - Google Patents
基于simd技术的卷积神经网络加速装置及方法 Download PDFInfo
- Publication number
- CN112418417B CN112418417B CN202011015325.9A CN202011015325A CN112418417B CN 112418417 B CN112418417 B CN 112418417B CN 202011015325 A CN202011015325 A CN 202011015325A CN 112418417 B CN112418417 B CN 112418417B
- Authority
- CN
- China
- Prior art keywords
- convolution
- neural network
- unit
- channels
- 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.)
- Active
Links
- 230000001133 acceleration Effects 0.000 title claims abstract description 25
- 238000013527 convolutional neural network Methods 0.000 title claims abstract description 24
- 238000000034 method Methods 0.000 title claims abstract description 17
- 238000005516 engineering process Methods 0.000 title claims abstract description 11
- 238000013528 artificial neural network Methods 0.000 claims abstract description 57
- 238000004364 calculation method Methods 0.000 claims abstract description 46
- 230000006870 function Effects 0.000 claims abstract description 5
- 230000015654 memory Effects 0.000 claims description 50
- 238000010586 diagram Methods 0.000 claims description 24
- 230000008569 process Effects 0.000 claims description 8
- 238000009825 accumulation Methods 0.000 claims description 6
- 238000011176 pooling Methods 0.000 claims description 4
- 230000004913 activation Effects 0.000 claims description 3
- 230000007246 mechanism Effects 0.000 claims description 3
- 238000010606 normalization Methods 0.000 claims description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
Abstract
本发明涉及一种基于SIMD技术的卷积神经网络加速装置及方法,属于嵌入式卷积神经网络加速硬件技术领域。本发明针对当前神经网络应用中的突出矛盾,提出一种基于SIMD技术的神经网络推理加速装置。本发明首先设计一个运算流程,以满足神经网络算法中的全部算子功能,然后面向该计算流程,进行硬件功能单元设计,以软件定义硬件的方式实现系统设计,同时提供较高的性能功耗比和综合运算能力。
Description
技术领域
本发明属于嵌入式卷积神经网络加速硬件技术领域,具体涉及一种基于SIMD技术的卷积神经网络加速装置及方法。
背景技术
卷积神经网络(Convolutional Neural Networks,CNN)是一类包含卷积计算且具有深度结构的前馈神经网络,是深度学习的代表算法之一。卷积神经网络具有表征学习能力,能够按其阶层结构对输入信息进行平移不变分类(shift-invariantclassification),因此也被称为“平移不变人工神经网络(Shift-Invariant ArtificialNeural Networks,SIANN)”。
对卷积神经网络的研究始于二十世纪80至90年代,时间延迟网络和LeNet-5是最早出现的卷积神经网络;在二十一世纪后,随着深度学习理论的提出和数值计算设备的改进,卷积神经网络得到了快速发展,并被应用于计算机视觉、自然语言处理等领域。
目前,卷积神经网络在应用中面临的主要问题是神经网络推理需要较大的算力和能源消耗,这一问题在嵌入式神经网络推理应用中,显得尤为突出。
单指令多数据(Single instruction,multiple data,SIMD)是并行计算技术的一类。它描述了具有多个处理元素(multiple processing elements)的计算机,可以在多个数据点(data points)上同时(simultaneously)完成相同的操作。这种机器利用数据级并行(data level parallelism)(不是并发,concurrency):在某一时刻,只有一个指令,但有多个同时发生的(simultaneous)计算(computations),也即并行计算。SIMD特别适用于一些常见的图像处理类任务,例如:调整数字图像的对比度,图像滤波以及卷积神经网络计算。
一个利用SIMD的应用程序(application)可以在大量数据点上加上或减去相同的值,这是许多多媒体应用的常见操作。例如,修改一个图像的亮度。图像的每个像素由三个值组成,分别表示颜色的红色(R)、绿色(G)和蓝色(B)部分的亮度。为了改变亮度,从内存中(memory)读取R,G和B值,然后从R,G,B中减去或加上一个值(a value),最后得到的结果值(values)被写回内存。
使用SIMD processor,这个过程会有两个改进。首先,数据是按块理解的,一次可以加载多个值。和普通的一系列指令“取回这个像素,现在再取回下一个像素”不同,SIMDprocessor会发出单个指令“取回n个像素”(此处n是一个数值,由SIMD处理器的设计决定)。由于各种因素,SIMD这种一个指令取回多个像素的方式比传统CPU设计中一个一个地取回像素需要的时间少很多。
另外一个优点时,这个指令会在单个操作中(a single operation)操作(operate)所有加载的数据。换句话说,假如一个SIMD系统一次加载8个数据点,则一个add操作(比如,使值增加1),会同时作用在8个数上,即这8个数同时加1。
基于SIMD处理技术的神经网络加速方法可以较好的平衡功耗性能以及成本之间的关系,是当前较为实用的一种神经网络加速方法。
发明内容
(一)要解决的技术问题
本发明要解决的技术问题是:如何针对当前神经网络应用中的突出矛盾,提出一种基于SIMD技术的神经网络推理加速装置。
(二)技术方案
为了解决上述技术问题,本发明提供了一种基于SIMD技术的卷积神经网络加速装置及方法,包括卷积阵列、可编程向量处理单元、数据缓冲区、权重缓冲区、任务分发单元、卷积控制器以及外部存储器;
其中,所述卷积阵列负责根据卷积控制器的硬件微操作指令,实现卷积运算加速,同时兼顾批量规范化BN和ReLU激活功能;
可编程向量处理单元用于通过编程,处理当前神经网络算法中的多种操作;
卷积控制器是所述卷积阵列的控制机构,负责将一个完整的图像卷积运算,自动分解为硬件微操作指令,从而控制卷积阵列实现卷积运算加速;
数据缓冲区用于存储神经网络特征图、卷积阵列的卷积结果和可编程向量处理单元的运算结果参数;
权重缓冲区用于存储卷积权重和其他参数;
任务分发单元用于从外部存储器中读取神经网络算法的可执行代码,并根据当前算子类型调用卷积控制器或可编程向量处理单元实现运算;
若当前算子为卷积,则任务分发模块将该可执行代码中的卷积的相关信息发送给卷积控制器,使得卷积阵列根据卷积控制器的硬件微操作指令,实现卷积运算加速;卷积的相关信息包括神经网络特征图大小、滤波器大小、通道数、神经网络特征图和卷积权重的内存地址;
若当前算子为pooling计算,任务分发单元将pooling任务的可执行代码传送至可编程向量处理单元进行处理;若当前算子为eltwise计算,则任务分发单元将eltwise任务的可执行代码传送至可编程向量处理单元进行处理。
外部存储器用于神经网络算法的可执行代码。
优选地,所述卷积阵列包括若干个SIMD乘累加器、若干个横向求和单元、一个BN单元、一个ReLU单元、一个数据广播单元,若为3x3卷积运算,卷积阵列具体用于根据卷积控制器的硬件微操作指令,首先通过异步DMA将外部存储器中的神经网络特征图和卷积权重分别加载到数据缓冲区和权重缓冲区;然后从数据缓冲区,按照直接卷积方式,读取m个通道的神经网络特征图,神经网络特征图经过数据广播单元,复制成n份,同时从权重缓冲区读取相应的权重数据,进行乘累加运算,每9次乘累加即完成一个二维3*3卷积,若设该层网络输入M个通道,输出N个通道,则M/m*9次乘累加结果在横向求和单元进行横向求和,合并为一个通道的输出,再经过BN单元和ReLU单元,完成一个点位置的三维卷积,卷积结果写回数据缓冲区,再经由异步DMA写回外部存储器,卷积阵列可同时输出n个通道的三维卷积结果,以上过程重复N/n次,则完成一个点位置的全部N个通道卷积计算,对特征图的全部位置执行以上流程,完成一个卷积层的计算。
优选地,若当前算子为pooling计算,可编程向量单元具体用于根据来自任务分发单元的代码指令,依次读取m个通道,k*k个点位的特征图,进行取max运算,结果输出至数据缓冲区,待全部点位的pool运算结束后,再通过异步DMA搬运至外部存储器。
优选地,若当前算子为eltwise计算,则可编程向量单元具体用于根据代码指令,读取m个通道,1个点位的特征图,进行相加运算,结果输出至数据缓冲区,待全部点位的eltwise运算结束后,再通过异步DMA搬运至外部存储器。
优选地,所述可编程向量处理单元是一个SIMD处理器。
优选地,所述外部存储器为高速DRAM存储器。
优选地,所述外部存储器为DDR。
优选地,所述可编程向量处理单元可通过编程,支持当前神经网络算法中的操作包括channel shuffle,pool,eltwise。
本发明还提供了一种利用所述的装置实现的卷积神经网络加速方法,包括以下步骤:
步骤一、任务获取:任务分发单元从外部存储器中读取神经网络算法的可执行代码,并根据当前算子类型调用相应的处理模块进行运算;
步骤二、卷积计算:若当前算子为卷积,则任务分发模块将该卷积的相关信息发送给卷积控制器,卷积控制器根据这些信息,自动生成完整卷积运算所需要的硬件微操作指令,若为3x3卷积运算,卷积阵列根据卷积控制器的硬件微操作指令,首先通过异步DMA将外部存储器中的神经网络特征图和卷积权重分别加载到数据缓冲区和权重缓冲区;然后从数据缓冲区,按照直接卷积方式,读取m个通道的神经网络特征图,神经网络特征图经过数据广播单元,复制成n份,同时从权重缓冲区读取相应的权重数据,进行乘累加运算,每9次乘累加即完成一个二维3*3卷积,若设该层网络输入M个通道,输出N个通道,则M/m*9次乘累加结果在横向求和单元进行横向求和,合并为一个通道的输出,再经过BN和ReLU单元,完成一个点位置的三维卷积,卷积结果写回数据缓冲区,再经由异步DMA写回外部存储器。卷积阵列可同时输出n个通道的三维卷积结果,以上过程重复N/n次,则完成一个点位置的全部N个通道卷积计算,对特征图的全部位置执行以上流程,完成一个卷积层的计算;
Pooling计算:若当前算子为pooling计算,任务分发单元将pooling任务的可执行代码传送至可编程向量处理单元,可编程向量单元根据代码指令,依次读取m个通道,k*k个点位的特征图,进行取max运算,结果输出至数据缓冲区,待全部点位的pool运算结束后,再通过异步DMA搬运至外部存储器;
Eltwise计算:若当前算子为Eltwise计算,Eltwise计算由可编程向量处理单元完成。任务分发单元将Eltwise任务的可执行代码传送至可编程向量处理单元,可编程向量处理单元根据代码指令,读取m个通道,1个点位的特征图,进行相加运算,结果输出至数据缓冲区,待全部点位的eltwise运算结束后,再通过异步DMA搬运至外部存储器。
(三)有益效果
本发明首先设计一个运算流程,以满足神经网络算法中的全部算子功能,然后面向该计算流程,进行硬件功能单元设计,以软件定义硬件的方式实现系统设计,同时提供较高的性能功耗比和综合运算能力。
附图说明
图1为本发明的神经网络加速装置组成框图;
图2为本发明中卷积阵列、数据缓冲区、权重缓冲区框图。
具体实施方式
为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
本发明提供的一种基于SIMD技术的卷积神经网络加速装置,由卷积阵列、可编程向量处理单元、数据缓冲区、权重缓冲区、任务分发单元、卷积控制器以及外部存储器7个模块组成。
其中,所述卷积阵列包括若干个SIMD乘累加器、若干个横向求和单元、一个BN单元、一个ReLU单元、一个数据广播单元,负责根据卷积控制器的硬件微操作指令,实现卷积运算加速,同时兼顾批量规范化(batchnorm,BN)和ReLU激活功能;以最常见的3x3卷积为例,卷积阵列(图2)根据卷积控制器的硬件微操作指令,首先通过异步DMA将外部存储器中的神经网络特征图和卷积权重分别加载到数据缓冲区和权重缓冲区;然后从数据缓冲区,按照直接卷积方式,读取m个通道的神经网络特征图,神经网络特征图经过数据广播单元,复制成n份,同时从权重缓冲区读取相应的权重数据,进行乘累加运算。每9次乘累加即完成一个二维3*3卷积。若设该层网络输入M个通道,输出N个通道,则M/m*9次乘累加结果在横向求和单元进行横向求和,合并为一个通道的输出,再经过BN单元和ReLU单元,完成一个点位置的三维卷积,卷积结果写回数据缓冲区,再经由异步DMA写回外部存储器。卷积阵列可同时输出n个通道的三维卷积结果。以上过程重复N/n次,则完成一个点位置的全部N个通道卷积计算。对特征图的全部位置执行以上流程,完成一个卷积层的计算。
可编程向量处理单元是一个SIMD处理器,可以通过编程,灵活支持当前神经网络算法中的多种特殊操作,如channel shuffle,pool,eltwise等;若当前算子为pooling计算,可编程向量单元具体用于根据来自任务分发单元的代码指令,依次读取m个通道,k*k个点位的特征图,进行取max运算,结果输出至数据缓冲区,待全部点位的pool运算结束后,再通过异步DMA搬运至外部存储器;若当前算子为eltwise计算,则可编程向量单元具体用于根据代码指令,读取m个通道,1个点位的特征图,进行相加运算,结果输出至数据缓冲区,待全部点位的eltwise运算结束后,再通过异步DMA搬运至外部存储器;
卷积控制器是所述卷积阵列的控制机构,负责将一个完整的图像卷积运算,自动分解为硬件微操作指令,从而控制卷积阵列实现卷积运算加速;
数据缓冲区用于存储神经网络特征图、卷积阵列的卷积结果和可编程向量处理单元的运算结果参数;
权重缓冲区用于存储卷积权重和其他参数。
任务分发单元用于从外部存储器中读取神经网络算法的可执行代码,并根据当前算子类型调用卷积控制器或可编程向量处理单元实现运算;
若当前算子为卷积,则任务分发模块将该可执行代码中的卷积的相关信息(包括神经网络特征图大小、滤波器大小、通道数、神经网络特征图和卷积权重的内存地址等)发送给卷积控制器,使得卷积阵列根据卷积控制器的硬件微操作指令,实现卷积运算加速;
若当前算子为pooling计算,任务分发单元将pooling任务的可执行代码传送至可编程向量处理单元;若当前算子为eltwise计算,则任务分发单元将eltwise任务的可执行代码传送至可编程向量处理单元。
外部存储器用于神经网络算法的可执行代码,为DDR或其他类型高速DRAM存储器。
基于SIMD技术的卷积神经网络加速装置的工作方式如下:
步骤一、任务获取:任务分发单元从外部存储器中读取神经网络算法的可执行代码,并根据当前算子类型调用相应的处理模块进行运算;
步骤二、卷积计算:若当前算子为卷积,则任务分发模块将该卷积的相关信息(包括特征图大小,滤波器大小,通道数,特征图和卷积权重的内存地址等)发送给卷积控制器,卷积控制器根据这些信息,自动生成完整卷积运算所需要的硬件微操作指令。以最常见的3x3卷积为例,卷积阵列(图2)根据卷积控制器的硬件微操作指令,首先通过异步DMA将外部存储器中的神经网络特征图和卷积权重分别加载到数据缓冲区和权重缓冲区;然后从数据缓冲区,按照直接卷积方式,读取m个通道的神经网络特征图,神经网络特征图经过数据广播单元,复制成n份,同时从权重缓冲区读取相应的权重数据,进行乘累加运算。每9次乘累加即完成一个二维3*3卷积。若设该层网络输入M个通道,输出N个通道,则M/m*9次乘累加结果在横向求和单元进行横向求和,合并为一个通道的输出,再经过BN和ReLU单元,完成一个点位置的三维卷积,卷积结果写回数据缓冲区,再经由异步DMA写回外部存储器。卷积阵列可同时输出n个通道的三维卷积结果。以上过程重复N/n次,则完成一个点位置的全部N个通道卷积计算。对特征图的全部位置执行以上流程,完成一个卷积层的计算;
Pooling计算:以maxpool为例,pooling计算由可编程向量处理单元完成。任务分发单元将pooling任务的可执行代码传送至可编程向量处理单元,可编程向量单元根据代码指令,依次读取m个通道,k*k个点位的特征图,进行取max运算,结果输出至数据缓冲区,待全部点位的pool运算结束后,再通过异步DMA搬运至外部存储器。
Eltwise计算:以eltwise add为例,eltwise计算由可编程向量处理单元完成。任务分发单元将eltwise任务的可执行代码传送至可编程向量处理单元,可编程向量处理单元根据代码指令,读取m个通道,1个点位的特征图,进行相加运算,结果输出至数据缓冲区,待全部点位的eltwise运算结束后,再通过异步DMA搬运至外部存储器。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (8)
1.一种基于SIMD技术的卷积神经网络加速装置,其特征在于,包括卷积阵列、可编程向量处理单元、数据缓冲区、权重缓冲区、任务分发单元、卷积控制器以及外部存储器;
其中,所述卷积阵列负责根据卷积控制器的硬件微操作指令,实现卷积运算加速,同时兼顾批量规范化BN和ReLU激活功能;
可编程向量处理单元用于通过编程,处理当前神经网络算法中的多种操作;
卷积控制器是所述卷积阵列的控制机构,负责将一个完整的图像卷积运算,自动分解为硬件微操作指令,从而控制卷积阵列实现卷积运算加速;
数据缓冲区用于存储神经网络特征图、卷积阵列的卷积结果和可编程向量处理单元的运算结果参数;
权重缓冲区用于存储卷积权重和其他参数;
任务分发单元用于从外部存储器中读取神经网络算法的可执行代码,并根据当前算子类型调用卷积控制器或可编程向量处理单元实现运算;
若当前算子为卷积,则任务分发模块将该可执行代码中的卷积的相关信息发送给卷积控制器,使得卷积阵列根据卷积控制器的硬件微操作指令,实现卷积运算加速;卷积的相关信息包括神经网络特征图大小、滤波器大小、通道数、神经网络特征图和卷积权重的内存地址;
若当前算子为pooling计算,任务分发单元将pooling任务的可执行代码传送至可编程向量处理单元进行处理;若当前算子为eltwise计算,则任务分发单元将eltwise任务的可执行代码传送至可编程向量处理单元进行处理;
外部存储器用于神经网络算法的可执行代码;
所述卷积阵列包括若干个SIMD乘累加器、若干个横向求和单元、一个BN单元、一个ReLU单元、一个数据广播单元,若为3x3卷积运算,卷积阵列具体用于根据卷积控制器的硬件微操作指令,首先通过异步DMA将外部存储器中的神经网络特征图和卷积权重分别加载到数据缓冲区和权重缓冲区;然后从数据缓冲区,按照直接卷积方式,读取m个通道的神经网络特征图,神经网络特征图经过数据广播单元,复制成n份,同时从权重缓冲区读取相应的权重数据,进行乘累加运算,每9次乘累加即完成一个二维3*3卷积,若设该卷积阵列输入M个通道,输出N个通道,则M/m*9次乘累加结果在横向求和单元进行横向求和,合并为一个通道的输出,再经过BN单元和ReLU单元,完成一个点位置的三维卷积,卷积结果写回数据缓冲区,再经由异步DMA写回外部存储器,卷积阵列同时输出n个通道的三维卷积结果,卷积计算过程重复N/n次,则完成一个点位置的全部N个通道卷积计算,对特征图的全部位置执行卷积计算流程,完成一个卷积层的计算。
2.如权利要求1所述的装置,其特征在于,若当前算子为pooling计算,可编程向量单元具体用于根据来自任务分发单元的代码指令,依次读取m个通道,k*k个点位的特征图,进行取max运算,结果输出至数据缓冲区,待全部点位的pool运算结束后,再通过异步DMA搬运至外部存储器。
3.如权利要求1所述的装置,其特征在于,若当前算子为eltwise计算,则可编程向量单元具体用于根据代码指令,读取m个通道,1个点位的特征图,进行相加运算,结果输出至数据缓冲区,待全部点位的eltwise运算结束后,再通过异步DMA搬运至外部存储器。
4.如权利要求1所述的装置,其特征在于,所述可编程向量处理单元是一个SIMD处理器。
5.如权利要求1所述的装置,其特征在于,所述外部存储器为高速DRAM存储器。
6.如权利要求1所述的装置,其特征在于,所述外部存储器为DDR。
7.如权利要求1所述的装置,其特征在于,所述可编程向量处理单元通过编程,支持当前神经网络算法中的操作包括channel shuffle,pool,eltwise。
8.一种利用权利要求1至7中任一项所述的装置实现的卷积神经网络加速方法,其特征在于,包括以下步骤:
步骤一、任务获取:任务分发单元从外部存储器中读取神经网络算法的可执行代码,并根据当前算子类型调用相应的处理模块进行运算;
步骤二、卷积计算:若当前算子为卷积,则任务分发模块将该卷积的相关信息发送给卷积控制器,卷积控制器根据这些信息,自动生成完整卷积运算所需要的硬件微操作指令,若为3x3卷积运算,卷积阵列根据卷积控制器的硬件微操作指令,首先通过异步DMA将外部存储器中的神经网络特征图和卷积权重分别加载到数据缓冲区和权重缓冲区;然后从数据缓冲区,按照直接卷积方式,读取m个通道的神经网络特征图,神经网络特征图经过数据广播单元,复制成n份,同时从权重缓冲区读取相应的权重数据,进行乘累加运算,每9次乘累加即完成一个二维3*3卷积,若设卷积阵列网络输入M个通道,输出N个通道,则M/m*9次乘累加结果在横向求和单元进行横向求和,合并为一个通道的输出,再经过BN和ReLU单元,完成一个点位置的三维卷积,卷积结果写回数据缓冲区,再经由异步DMA写回外部存储器;卷积阵列同时输出n个通道的三维卷积结果,卷积计算过程重复N/n次,则完成一个点位置的全部N个通道卷积计算,对特征图的全部位置执行卷积计算流程,完成一个卷积层的计算;
Pooling计算:若当前算子为pooling计算,任务分发单元将pooling任务的可执行代码传送至可编程向量处理单元,可编程向量单元根据代码指令,依次读取m个通道,k*k个点位的特征图,进行取max运算,结果输出至数据缓冲区,待全部点位的pool运算结束后,再通过异步DMA搬运至外部存储器;
Eltwise计算:若当前算子为Eltwise计算,Eltwise计算由可编程向量处理单元完成;任务分发单元将Eltwise任务的可执行代码传送至可编程向量处理单元,可编程向量处理单元根据代码指令,读取m个通道,1个点位的特征图,进行相加运算,结果输出至数据缓冲区,待全部点位的eltwise运算结束后,再通过异步DMA搬运至外部存储器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011015325.9A CN112418417B (zh) | 2020-09-24 | 2020-09-24 | 基于simd技术的卷积神经网络加速装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011015325.9A CN112418417B (zh) | 2020-09-24 | 2020-09-24 | 基于simd技术的卷积神经网络加速装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112418417A CN112418417A (zh) | 2021-02-26 |
CN112418417B true CN112418417B (zh) | 2024-02-27 |
Family
ID=74854085
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011015325.9A Active CN112418417B (zh) | 2020-09-24 | 2020-09-24 | 基于simd技术的卷积神经网络加速装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112418417B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109993297A (zh) * | 2019-04-02 | 2019-07-09 | 南京吉相传感成像技术研究院有限公司 | 一种负载均衡的稀疏卷积神经网络加速器及其加速方法 |
CN110070178A (zh) * | 2019-04-25 | 2019-07-30 | 北京交通大学 | 一种卷积神经网络计算装置及方法 |
CN110121721A (zh) * | 2016-12-29 | 2019-08-13 | 高通股份有限公司 | 用于稀疏神经网络加速的架构 |
CN110197111A (zh) * | 2018-02-27 | 2019-09-03 | 意法半导体国际有限公司 | 用于深度学习引擎的加速单元 |
CN110458279A (zh) * | 2019-07-15 | 2019-11-15 | 武汉魅瞳科技有限公司 | 一种基于fpga的二值神经网络加速方法及系统 |
CN111667051A (zh) * | 2020-05-27 | 2020-09-15 | 上海赛昉科技有限公司 | 适用边缘设备的神经网络加速器及神经网络加速计算方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11107189B2 (en) * | 2017-04-07 | 2021-08-31 | Intel Corporation | Methods and systems using improved convolutional neural networks for image processing |
CN107679621B (zh) * | 2017-04-19 | 2020-12-08 | 赛灵思公司 | 人工神经网络处理装置 |
-
2020
- 2020-09-24 CN CN202011015325.9A patent/CN112418417B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110121721A (zh) * | 2016-12-29 | 2019-08-13 | 高通股份有限公司 | 用于稀疏神经网络加速的架构 |
CN110197111A (zh) * | 2018-02-27 | 2019-09-03 | 意法半导体国际有限公司 | 用于深度学习引擎的加速单元 |
CN109993297A (zh) * | 2019-04-02 | 2019-07-09 | 南京吉相传感成像技术研究院有限公司 | 一种负载均衡的稀疏卷积神经网络加速器及其加速方法 |
CN110070178A (zh) * | 2019-04-25 | 2019-07-30 | 北京交通大学 | 一种卷积神经网络计算装置及方法 |
CN110458279A (zh) * | 2019-07-15 | 2019-11-15 | 武汉魅瞳科技有限公司 | 一种基于fpga的二值神经网络加速方法及系统 |
CN111667051A (zh) * | 2020-05-27 | 2020-09-15 | 上海赛昉科技有限公司 | 适用边缘设备的神经网络加速器及神经网络加速计算方法 |
Non-Patent Citations (4)
Title |
---|
A High-Performance Systolic Array Accelerator Dedicated for CNN;J. Shen等;《19th International Conference on Communication Technology (ICCT)》;1200-1204 * |
Efficient SIMD implementation for accelerating convolutional neural network;Lee S J等;《Proceedings of the 4th International Conference on Communication and Information Processing》;174-179 * |
基于卷积神经网络的嵌入式图像识别系统与优化;王蕊;《中国优秀硕士学位论文全文数据库:信息科技辑》(第2期);1-101 * |
面向ARM嵌入式平台的卷积神经网络前向加速研究;李全;《中国优秀硕士学位论文全文数据库:信息科技辑》(第3期);1-79 * |
Also Published As
Publication number | Publication date |
---|---|
CN112418417A (zh) | 2021-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102258414B1 (ko) | 처리 장치 및 처리 방법 | |
US10531030B2 (en) | Block operations for an image processor having a two-dimensional execution lane array and a two-dimensional shift register | |
US20220365753A1 (en) | Accelerated mathematical engine | |
US10691996B2 (en) | Hardware accelerator for compressed LSTM | |
KR20200143685A (ko) | 연산을 가속하기 위한 방법 및 가속기 장치 | |
EP3479341B1 (en) | Core processes for block operations on an image processor having a two-dimensional execution lane array and a two-dimensional shift register | |
CN111897579A (zh) | 图像数据处理方法、装置、计算机设备和存储介质 | |
CN112840356A (zh) | 运算加速器、处理方法及相关设备 | |
CN111539526B (zh) | 一种神经网络卷积的方法和设备 | |
CN110766128A (zh) | 卷积计算单元、计算方法及神经网络计算平台 | |
CN113485750B (zh) | 数据处理方法及数据处理装置 | |
CN110490308B (zh) | 加速库的设计方法、终端设备及存储介质 | |
CN112418417B (zh) | 基于simd技术的卷积神经网络加速装置及方法 | |
CN116090518A (zh) | 基于脉动运算阵列的特征图处理方法、装置以及存储介质 | |
CN113627587A (zh) | 一种多通道式卷积神经网络加速方法及装置 | |
KR20220083820A (ko) | 뉴럴 네트워크 프로세서에서의 3차원 콘볼루션 | |
CN114638352B (zh) | 一种处理器架构、处理器及电子设备 | |
Soltaniyeh | Hardware-Software Techniques for Accelerating Sparse Computation | |
CN115829002A (zh) | 一种基于存内cnn的调度存储方法 | |
CN115719088A (zh) | 一种支持存内cnn的中间缓存调度电路装置 | |
Broere | A memory-centric SIMD neural network accelerator: Balancing efficiency & flexibility | |
CN117273097A (zh) | 应用于simd计算架构的数据处理方法及系统 | |
CN117632607A (zh) | 可编程数字信号并行处理器及其异常检测与故障识别方法 | |
Raffo et al. | A programmable VLSI architecture based on multilayer CNN paradigms for real‐time visual processing | |
CN117422608A (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 |