CN110705703B - 基于脉动阵列的稀疏神经网络处理器 - Google Patents
基于脉动阵列的稀疏神经网络处理器 Download PDFInfo
- Publication number
- CN110705703B CN110705703B CN201910982329.5A CN201910982329A CN110705703B CN 110705703 B CN110705703 B CN 110705703B CN 201910982329 A CN201910982329 A CN 201910982329A CN 110705703 B CN110705703 B CN 110705703B
- Authority
- CN
- China
- Prior art keywords
- data
- sparse
- neural network
- array
- matrix operation
- 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
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/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
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8046—Systolic arrays
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
本发明提供一种基于脉动阵列的稀疏神经网络处理器,包含存储单元、控制单元、稀疏矩阵运算阵列、计算单元、汇流阵列。存储单元用以存储权值、梯度、特征以及用于调度数据流的指令序列。控制单元依据指令序列的控制、从存储单元中取出训练与推理过程所需的数据,转换为稀疏矩阵运算的格式并送入到稀疏矩阵运算阵列。稀疏矩阵运算阵列包含以脉动阵列方式连接的多个处理单元,用以完成稀疏矩阵运算。计算单元用以完成非线性激活函数等逐元素操作。汇流阵列通过内部数据传递将相同数据段送到脉动阵列的不同行以降低存储开销。本处理器充分利用权值与特征的稀疏性,对神经网络训练与推理过程达成速度与功耗比的提升,具有高并发、低带宽需求等优势。
Description
技术领域
本发明涉及神经网络技术与计算机体系结构,具体涉及用于稀疏神经网络计算的计算机体系结构。
背景技术
近年来,深度学习在诸如图像识别、语音处理等领域逐渐取得愈发显著的成绩。然而,随着网络深度的不断增加,深度神经网络训练与推理过程中所需的算力以及访存带宽等需求逐渐难以被传统计算平台所满足。因此,产业界及学术界纷纷提出了各种应用于神经网络的领域专用体系结构(domain specified architecture)以满足该需求。其中,脉动阵列架构,由于具有高并发、低带宽需求等特点,取得了产业界及学术界较大的关注。
另一方面,随着深度学习的发展,研究人员发现深度神经网络之中存在较大的冗余、其绝大多数权值可被剪去(置零)而不影响网络精度。同时,经由如ReLU等非线性激活函数作用后,神经网络计算过程中各层特征图(feature maps)也均有部分为零。类似于矩阵稀疏性的定义,神经网络的稀疏性指其权值与特征中所包含零的比例。在稀疏度较高的神经网络的训练与推理过程之中,绝大部分的操作会包含一个或多个等于零的操作数、可被去除而不对计算结果产生影响。通过利用对神经网络的稀疏性去除无效操作后,其训练与推理过程的速度与功耗比能够得到有效的提升。然而,值得注意的,由于神经网络权值、梯度与特征的稀疏图样均具有不规整性,因此,尤其在脉动阵列等高度规整的计算平台上,神经网络的这种稀疏性往往难以被有效利用。
发明内容
为了解决上述技术问题,本发明提供了一种基于脉动阵列的稀疏神经网络处理器,在保留脉动阵列架构带来的数据重用、高并发、低带宽需求等优势的同时,充分利用神经网络权值与特征的稀疏性对其训练与推理过程达成速度与功耗比的提升。
本发明完整的技术方案包括:
根据本发明的一个实施例,提供了一种稀疏神经网络处理器,该处理器包含存储单元、控制单元、稀疏矩阵运算阵列、计算单元、汇流阵列;
所述存储单元以稠密或稀疏格式存储神经网络训练与推理中的权值、梯度、特征以及用于数据流调度的指令序列;
所述控制单元依据指令序列的控制、从存储单元中取出训练与推理过程所需的数据、将其转换为稀疏矩阵运算的格式并送入到稀疏矩阵运算阵列;
所述稀疏矩阵运算阵列用于完成稀疏矩阵运算;
所述计算单元用于完成神经网络计算过程中所需的非线性激活函数等逐元素操作;
所述汇流阵列通过内部数据传递将相同数据段广播至稀疏矩阵运算阵列的不同行以降低存储开销。
进一步的,所述稀疏矩阵运算阵列为以脉动阵列形式连接的多个处理单元PE。
进一步的,所述稀疏矩阵运算阵列为由PE组成的一维阵列。
进一步的,所述稀疏矩阵运算阵列为由PE组成的二维阵列。
进一步的,所述稀疏矩阵运算阵列的计算结果输出方向与权值输入方向相同。
进一步的,所述稀疏矩阵运算阵列的计算结果输出方向与权值输入方向相反。
进一步的,所述PE为同步时序电路。
进一步的,所述PE为异步时序电路。
进一步的,所述稀疏神经网络处理器不包含用于降低存储开销的汇流阵列。
进一步的,所述的稀疏神经网络处理器,用于处理统一精度的稀疏神经网络、定点精度的稀疏神经网络、浮点精度的稀疏神经网络、混合精度的稀疏神经网络、混合定点精度的稀疏神经网络、混合浮点精度的稀疏神经网络中的一种,
进一步的,可将神经网络中的数据划分为两个或多个精度等级,不同精度的数据使用统一的数据通路或使用不同的数据通路。
与现有技术相比,本发明提供了一种基于脉动阵列的稀疏神经网络处理器,通过处理器整体架构,在保留脉动阵列架构带来的数据重用、高并发、低带宽需求等优势的同时,充分利用神经网络权值与特征的稀疏性对其训练与推理过程达成速度与功耗比的提升。降低了降低解码和存储过程中所需的空间开销,提高了存储使用的效率,去除了不同存储器间的数据冗余、降低了所需的存储器容量。
附图说明
图1是本发明一个实施例的一种稀疏神经网络处理器的结构示意图。
图2是本发明用于处理的典型全连接层的示例。
图3是本发明一个实施例的将全连接层运算整合为稀疏矩阵运算的示意图。
图4是本发明一个实施例的处理图2所示稀疏全连接层的示意图。
图5是本发明用于处理的典型卷积计算示例。
图6是本发明一个实施例的将卷积运算整合为稀疏矩阵运算的示意图。
图7是本发明一个实施例的处理图4所示稀疏卷积运算的示意图。
图8是本发明所加载的重叠特征的示意图。
图9是本发明一个实施例中汇流阵列用于加载图8所示重叠特征的示意图。
图10是本发明一个实施例中处理单元(PE)的结构示意图。
图11是本发明一个实施例中汇流单元(CE)的结构示意图。
图12是本发明运行真实网络时与朴素脉动阵列的性能对比图。
图中a、b、c分别为AlexNet,VGG16,ResNet50三个不同的神经网络各自的结果对比。
具体实施方式
为了使本发明的目的、技术方案和优势更加清楚明白,接下来通过结合具体实施例与附图对本发明进行进一步详细说明。
图1是本发明一个实施例的一种稀疏神经网络处理器的架构示意图。包括存储单元、控制单元、汇流阵列、稀疏矩阵运算阵列和计算单元。其中所述存储单元用以存储神经网络权值、梯度、特征以及用于数据流调度的指令序列。所述控制单元与存储单元相连接,并依据指令序列的调度,从存储中获取所需数据,并将所述数据重整为矩阵运算的形式后经由汇流阵列桥接后送入到稀疏矩阵运算阵列以完成相应计算。所述计算单元接收稀疏矩阵运算阵列的计算结果,对其进一步完成如非线性激活函数、池化等操作以完成最终计算。
该处理器能够利用多种神经网络的训练与推断过程中的稀疏性对其达成速度与功耗比的提升。接下来通过结合具体实施例与附图对本发明进行进一步详细说明。
权值与神经网络各层计算的中间结果(各层的特征)在控制单元的调度之下由存储单元取出,经由汇流阵列桥接后送入稀疏矩阵运算阵列。稀疏矩阵运算阵列将结果送入到计算单元中进行所需的非线性操作以完成计算。最后,在控制单元的调度下,计算结果于计算单元中被取出并存入到存储单元之中以进行下一层的计算。
多层感知器(MLP)的训练与推断过程中的绝大多数计算任务都可被分解为稀疏矩阵-向量乘法。同一多层感知器对多组输入数据的批量处理进而可被分解为同一矩阵与多组向量的乘法。图2中展示了本发明处理器所要处理的一个典型全连接层的批量矩阵-向量乘法示意图,其中A为稀疏矩阵,b0、b1、b2为不同的稀疏向量。图3中展示了将图2中所示的批量矩阵-向量乘法整合为矩阵运算的示意图,矩阵B由向量b0、b1、b2整合而成,从而将批量全连接层运算整合为稀疏矩阵运算。矩阵A、B相乘的结果以矩阵R表示,此时有Ri=(r0i,r1i,r2i)T为矩阵A与向量bi相乘的结果。之后,如图4所示,本发明的处理器中,整合而成的稀疏矩阵经压缩后被送入稀疏矩阵运算阵列以完成相应计算。稀疏矩阵运算阵列中每一PE独立完成结果矩阵R中一个元素的计算。
此外,卷积神经网络的训练与推断过程中的绝大多数计算任务均可被分解为稀疏卷积运算。图5展示了本发明用于处理的稀疏卷积运算所使用的几个典型的稀疏矩阵示意图,m0、m1、m2、n0、n1、n2为不同的稀疏矩阵,其中任两矩阵均可进行卷积运算。图6为这些卷积运算整合为稀疏矩阵乘法后的示意图,其中,M由m0、m1、m2整合而成,N由n0、n1、n2整合而成,从而将卷积运算整合为稀疏矩阵运算。矩阵R表示矩阵M、N相乘的结果,易知有rij为特征图mi与卷积核nj进行卷积计算的结果。随后如图7所示,本发明的处理器中,由卷积操作所整合而成稀疏矩阵经压缩后被送入稀疏矩阵运算阵列以完成相应计算。同样,此时稀疏矩阵运算阵列中每一PE独立完成结果矩阵R中一个元素的计算。
下面对本发明中,稀疏矩阵运算阵列整体组成、单个PE的结构,及其具体进行处理的方法进行例举详细介绍:
该阵列中包括多个以脉动阵列形式连接PE、用PEij表示,其中每个处理单元PE由动态选择(DS)组件、乘加(MAC)组件、结果转发(RF)组件三部分组成,同时还包括两个数据输入端口A与B,两个数据输出端口A’与B’,数据输入输出端口A和A’可以负责行间数据传输,数据输入输出端口B和B’可以负责列间数据传输。反之亦可。同时还具有计算结果转发的输入端口C,将计算结果转发的输出端口C’;在将多个PE构成脉动阵列形式后,每一个PE的A端口与另一个PE的A’端口相连,同理有B与B’相连、C与C’相连。
进行处理时,两输入数据流分别从A与B进入处理单元PE,首先穿过动态选择DS组件,再分别由A’与B’端口输出到相邻的处理单元PE中。
在此过程中,桥接A-A’与B-B’两个方向的压缩后的稀疏数据流的DS组件,选取需计算的数据对(a,b)并将其输出到乘加MAC组件,乘加MAC组件内部有寄存器用以保存部分累加和c,在收到数据对(a,b)后,对其进行乘与累加操作:c←c+ab,在计算完成后,将累加和c输出到RF组件中,RF组件将计算结果由C’端口输出到相邻处理单元PE的RF组件中,从而将计算结果转发到脉动阵列之外。其他PE的计算结果同样由C端口进入,穿过RF组件后同样由C’端口发送到相邻PE中,从而将PE的计算结果转发到脉动阵列之外;
以4x4的稀疏矩阵-矩阵乘法处理过程为例,如下式所示,设A=(aij)与B=(bij)为两个稀疏矩阵,二者中的零元素均用“0”表示。C=(cij)为A与B的乘积。
矩阵A中的每一行数据经压缩后分别送入到脉动阵列的不同列之中,矩阵B中的每一列数据经压缩后分别送入到脉动阵列的不同行之中。每个PE的数据输入输出端口A、A’、B、B’负责行列间的数据传输。该过程中,DS组件选取本PE需计算的数据对(譬如,若C矩阵中c21的计算被分配到了第二行第一列的PE21,则PE21需且仅需选择a22与b21),并将其输出到乘加MAC组件进行乘与累加操作。在计算完成后,将累加和c输出到RF组件中,RF组件将计算结果由C’端口输出到相邻处理单元PE的RF组件中,从而将计算结果转发到脉动阵列之外。
同时在许多应用之中,同一矩阵或向量中的数据所需位宽有所不同。使用相同的位宽对矩阵或向量中所有数值进行统一表示会带来不必要的开销。然而,通用计算平台难以对细粒度混合精度数据的处理过程达成有效的加速。另一方面,通过在加速器中添加额外的数据通路以处理混合精度数据会带来一定的开销:当高精度数据占比过低时,高精度数据通路可能会闲置从而带来浪费;另一方面,当高精度数据占比过高时,高精度数据通路满载带来的阻塞可能会拉低整个脉动阵列的性能。因此,本发明通过在加速器中使用统一的数据通路对混合精度的数据进行计算,利用数据精度的不同从而达成存储空间以及计算功耗上的优化。具体为:
对具有稀疏混合精度向量,使用统一的数据通路处理,首先,对输入的稀疏混合精度向量进行预处理,将数据划分为两个或多个精度等级。例如采用8位数据路径进行数据处理,对于向量中的16位无符号定点数,将其拆分为两个8位无符号定点数,并在数据压缩过程中采用额外的标记进行标记,随后,将两个8位无符号定点数馈入PE进行正常处理。
当两个16位数据在同一PE处相遇时,通过将数据分成四对,并送到PE中进行处理。
上述对无符号混合精度的处理过程同样可用于处理有符号数据。且上述单个PE表示的混合精度稀疏向量-向量乘法的过程可适用于一维或二维脉动阵列、进而用于处理稀疏混合精度矩阵-向量运算或混合精度稀疏矩阵-矩阵运算。可利用数据精度的不同达成优化、同时避免额外添加高精度数据通路带来的开销。
上面的混合精度处理方法也可以用来处理浮点数据。
上文提到,本发明中,对稀疏矩阵运算阵列进行运算前,均需要对稀疏向量或稀疏矩阵进行压缩,因为稀疏矩阵与向量中包含大量零元素,这部分零元素可被去除以降低存储过程中所需的空间开销。然而在这一过程中,对稀疏矩阵与向量不恰当的压缩方式会降低其存储与使用的效率。因此本发明中,对对稀疏向量或稀疏矩阵进行压缩的方法分别为:
对稀疏向量的压缩方法包括:
(1)按照给定的长度对向量中的元素进行分段,
(2)标注每一数据在段内的偏移,如对于段内最后一个数据,其偏移记为0,其前方一位的数据偏移记为1,前方两位的数据偏移记为2,以此类推。得到所有数据在段内的偏移。
(3)判断段内的元素为非零元素或零元素;若段内无非零元素,则于该段中保留一个零元素以进行占位;若段中有非零元素,则移除段内所有的零元素;
(4)对段中的数据进行标注;具体为对剩余元素中偏移值最大的元素标记为1,对其他元素标记为0。
上面偏移的标记方法也可以相反,如对于段内第一个数据,其偏移记为0,其后方一位的数据偏移记为1,后方两位的数据偏移记为2,以此类推。得到所有数据在段内的偏移。此时在步骤4对段中的数据进行标注时,具体为对剩余元素中偏移值最大的元素标记为1,对其他元素标记为0。
对稀疏矩阵的压缩方法,为按照给定的长度对矩阵中的元素进行逐行分段并利用上面的方法进行压缩。
为本发明脉动阵列架构的神经网络处理器所设计的上述压缩方法,经压缩后的矩阵与向量可较为方便地送入计算单元中进行处理、从而降低解码过程带来的计算开销。
另一方面,在神经网络的计算过程中,相同数据可能会被送到稀疏矩阵运算阵列的不同行。如图8中特征图(feature map)f0、f1、f2所示,在卷积神经网络的推理过程中,为完成相应卷积运算而被送到脉动阵列不同行的特征图往往会相互重叠。当各行被分配相互独立的存储器时,由于特征图的重叠,不同存储器中需存储相同的数据的多分拷贝,从而造成存储空间的浪费。同时,在运算过程中,相同的数据需由多个存储器中多次读取以送到稀疏矩阵运算阵列的不同行、从而带来额外的访存开销。因此,本发明以汇流阵列桥接由存储单元至稀疏矩阵运算阵列的数据流以降低存储开销。该汇流阵列由多个汇流单元CE组成,每个CE内部均包含局部存储器。并可从阵列外或相邻CE接收数据。每一CE可将接收到的数据暂存在内部缓存或输出到阵列之外。具体为,每个CE包括阵列外输入端口C和阵列外输出端口D,以及与其余CE的数据端口A和B,各CE通过C端口接收由阵列外输入的数据;通过A与B端口与其余CE进行数据交换;通过D端口将数据输出到阵列外。
各CE通过C端口接收由阵列外输入的数据;通过A与B端口与其余CE进行数据交换;通过D端口将数据输出到阵列外。
本汇流阵列用于处理的一个典型的数据传输需求过程为,设x0、x1与x2表示三个不同的数据块。l0、l1与l2为三个端口,其各自所需的数据为:数据块x0需被送到l0端口上;数据块x0与x1需被送到l1端口上;数据块x0,x1与x2需被送到l2端口上。设CE阵列中各CE编号依次为CE0,CE1,CE2,首先将数据块x0,x1,x2分别送到CE0,CE1,CE2的各自的阵列外数据端口,随后CE0,CE1,CE2分别将首先将数据块x0,x1,x2送到阵列外数据输出端口,同时,各CE均将其保留在内部存储器中,CE1从CE0中接收数据块x0,将其送到自身的阵列外数据端口,同时将其保存在内部存储器中。CE2从CE1中接收数据块x1,将其送到自身的阵列外数据端口,同时将其保存在内部存储器中。CE2从CE1中接收数据块x0,将其送到自身的阵列外数据端口。这种汇流阵列可将一个存储器中的数据传输到一个或多个输出接口,从而去除了不同存储器间的数据冗余、降低了所需的存储器容量。同时,通过避免相同数据被写入到多个存储器、并于多个存储器中被重复读取,能够达成存储功耗的降低。
如图9所示,通过其内部的数据传递,汇流阵列将相同的数据广播至稀疏矩阵运算阵列的不同行、以更好地对脉动阵列实现数据重用从而降低存储开销。
由于神经网络普遍地天然具有稀疏性,对稀疏神经网络的运算达成加速就成为了一项具有重要意义的工作。同时,由于神经网络的运算过程可以很好地转换为矩阵运算,对稀疏神经网络的计算便很好地转化为稀疏矩阵的运算。
下面采用一个具体的实施例,通过将三个不同的神经网络(AlexNet,VGG16,ResNet50)的运算过程转化为稀疏矩阵运算,以对本发明所公开的基于脉动阵列的稀疏神经网络处理器的整体性能和技术效果进行评估和说明。
首先,基于本发明的稀疏神经网络处理器在本实施例中采用了同步时序逻辑,在DS组件中使用FIFO对输入数据流进行缓冲;MAC部件中使用了8位定点数乘加器。
编译时段长度设置为16。
其中,DS组件运行频率高于MAC组件,以使MAC组件尽可能满载。如图10所示,
汇流单元同样采用了同步时序逻辑,同样采用了FIFO对数据进行暂存,其中采用的FIFO深度为16。如图11所示。
对下述实施例以及附图中,采用标识进行统一说明:
延迟(cycle):指完成给定神经网络的运算所需的周期数;
运算速度(ops):指单位时间完成的操作(指MAC,Multiply-and-ACcumulate)数,其中,对某一神经网络操作数进行统计时不去除零操作;
功耗效率(ops/w):指单位功耗提供的运算速度;
面积效率(ops/m2):指单位面积提供的运算速度;
各图图例中的“(x,y,z)”:指特征FIFO(Feature FIFO,F-FIFO)、权值FIFO(WeightFIFO,W-FIFO)、权值-特征对FIFO(Weight-Feature pair FIFO,WF-FIFO)的深度分别为x、y、z;
真实的神经网络:指根据已有的剪枝算法对神经网络进行压缩得到的稀疏神经网络。
生成的神经网络(synthetic neural network):指按给定的稀疏度、16比特数据占比等指标所逐层生成的、满足该指标的神经网络。
如图12所示,以16x16的脉动阵列为例,本发明于不同参数配置之下运行各种真实网络之时均能相对朴素脉动阵列的性能提升均较为稳定。结果显示,本发明可利用稀疏性对运算过程达成加速。尤其注意当FIFO尺寸较小时速度提升已基本收敛、从而避免了由于引入过大FIFO带来的面积以及功耗开销。同时,DS、MAC组件频率之比较小时速度提升也已基本收敛,DS部件可运行在较低的频率以避免引入硬件设计带来的开销。上述结果表明,相比于朴素脉动阵列,本发明在进行稀疏矩阵运算之时能够利用数据的稀疏性有效地达成了运算速度、功耗效率、面积效率方面的提升。
以上运用具体实施例对本发明进行了进一步的阐释。需要指出的是,上述内容仅为本发明的具体实施例,而不应用于限制本发明。在本发明的思想之内的任何修改、替换、改进等都应在本发明的保护范围之内。
Claims (7)
1.一种稀疏神经网络处理器,其特征在于,该处理器包含存储单元、控制单元、稀疏矩阵运算阵列、计算单元、汇流阵列;
所述存储单元以稠密或稀疏格式存储神经网络训练与推理中的权值、梯度、特征以及用于数据流调度的指令序列;
所述控制单元依据指令序列的控制、从存储单元中取出训练与推理过程所需的数据,将其转换为稀疏矩阵运算的格式并送入到稀疏矩阵运算阵列;
所述稀疏矩阵运算阵列用于完成稀疏矩阵运算;所述稀疏矩阵运算阵列包括多个PE,以PEij的形式构成脉动阵列,其中每个处理单元PE由动态选择组件、乘加组件、结果转发组件三部分组成,同时还包括两个数据输入端口A与B,两个数据输出端口A’与B’,数据输入输出端口A和A’负责行间数据传输,数据输入输出端口B和B’负责列间数据传输;同时还具有计算结果转发的输入端口C,将计算结果转发的输出端口C’;在将多个PE构成脉动阵列形式后,每一个PE的A端口与另一个PE的A’端口相连,B端口与B’端口相连、C端口与C’端口相连;进行处理时,两输入数据流分别从A与B进入处理单元PE,首先穿过动态选择DS组件,再分别由A’与B’端口输出到相邻的处理单元PE中;在此过程中,桥接A-A’与B-B’两个方向的压缩后的稀疏数据流的组件,选取需计算的数据对并将其输出到乘加组件,乘加组件内部有寄存器用以保存部分累加和,在收到数据对后,对其进行乘与累加操作,在计算完成后,将累加和输出到结果转发组件中,结果转发组件将计算结果由C’端口输出到相邻处理单元PE的结果转发组件中,从而将计算结果转发到脉动阵列之外;其他PE的计算结果同样由C端口进入,穿过结果转发组件后同样由C’端口发送到相邻PE中,从而将PE的计算结果转发到脉动阵列之外;
稀疏数据流的压缩方法为:
对稀疏向量的压缩方法包括:(1)按照给定的长度对向量中的元素进行分段,(2)标注每一数据在段内的偏移,得到所有数据在段内的偏移;(3)判断段内的元素为非零元素或零元素;若段内无非零元素,则于该段中保留一个零元素以进行占位;若段中有非零元素,则移除段内所有的零元素;(4)对段中的数据进行标注;
对稀疏矩阵的压缩方法为,按照给定的长度对矩阵中的元素进行逐行分段并利用对稀疏向量的压缩方法进行压缩;
所述计算单元用于完成神经网络计算过程中所需的非线性激活函数逐元素操作;
所述汇流阵列通过内部数据传递将相同数据段广播至稀疏矩阵运算阵列的不同行以降低存储开销。
2.根据权利要求1所述的一种稀疏神经网络处理器,其特征在于,所述稀疏矩阵运算阵列的计算结果输出方向与权值输入方向相同。
3.根据权利要求1所述的一种稀疏神经网络处理器,其特征在于,所述稀疏矩阵运算阵列的计算结果输出方向与权值输入方向相反。
4.根据权利要求1所述的一种稀疏神经网络处理器,其特征在于,所述PE为同步时序电路。
5.根据权利要求1所述的一种稀疏神经网络处理器,其特征在于,所述PE为异步时序电路。
6.根据权利要求1所述的一种稀疏神经网络处理器,其特征在于,所述稀疏神经网络处理器用于处理统一精度的稀疏神经网络、定点精度的稀疏神经网络、浮点精度的稀疏神经网络、混合精度的稀疏神经网络、混合定点精度的稀疏神经网络、混合浮点精度的稀疏神经网络中的一种。
7.根据权利要求1所述的一种稀疏神经网络处理器,其特征在于,将神经网络中的数据划分为两个或多个精度等级,不同精度的数据使用统一的数据通路或使用不同的数据通路。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910982329.5A CN110705703B (zh) | 2019-10-16 | 2019-10-16 | 基于脉动阵列的稀疏神经网络处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910982329.5A CN110705703B (zh) | 2019-10-16 | 2019-10-16 | 基于脉动阵列的稀疏神经网络处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110705703A CN110705703A (zh) | 2020-01-17 |
CN110705703B true CN110705703B (zh) | 2022-05-27 |
Family
ID=69199837
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910982329.5A Active CN110705703B (zh) | 2019-10-16 | 2019-10-16 | 基于脉动阵列的稀疏神经网络处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110705703B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111368988B (zh) * | 2020-02-28 | 2022-12-20 | 北京航空航天大学 | 一种利用稀疏性的深度学习训练硬件加速器 |
CN111401522B (zh) * | 2020-03-12 | 2023-08-15 | 上海交通大学 | 脉动阵列变速控制方法及可变速脉动阵列微框架系统 |
KR20210126398A (ko) * | 2020-04-10 | 2021-10-20 | 에스케이하이닉스 주식회사 | 시스톨릭 어레이를 갖는 신경망 연산 장치 |
CN111626414B (zh) * | 2020-07-30 | 2020-10-27 | 电子科技大学 | 一种动态多精度神经网络加速单元 |
CN113313247B (zh) * | 2021-02-05 | 2023-04-07 | 中国科学院计算技术研究所 | 基于数据流架构的稀疏神经网络的运算方法 |
US11941111B2 (en) | 2021-07-31 | 2024-03-26 | International Business Machines Corporation | Exploiting fine-grained structured weight sparsity in systolic arrays |
CN114237551B (zh) * | 2021-11-26 | 2022-11-11 | 南方科技大学 | 一种基于脉动阵列的多精度加速器及其数据处理方法 |
CN115828044B (zh) * | 2023-02-17 | 2023-05-19 | 绍兴埃瓦科技有限公司 | 基于神经网络双重稀疏性矩阵乘法运算电路、方法和装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103902762A (zh) * | 2014-03-11 | 2014-07-02 | 复旦大学 | 一种针对正定对称矩阵进行最小二乘方程求解的电路结构 |
CN109598335A (zh) * | 2018-12-04 | 2019-04-09 | 郑州云海信息技术有限公司 | 一种二维卷积脉动阵列结构及实现方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5784108A (en) * | 1996-12-03 | 1998-07-21 | Zapex Technologies (Israel) Ltd. | Apparatus for and method of reducing the memory bandwidth requirements of a systolic array |
CN108510064B (zh) * | 2016-04-18 | 2021-12-10 | 中国科学院计算技术研究所 | 包括多个核心处理模块的人工神经网络的处理系统及方法 |
CN107578098B (zh) * | 2017-09-01 | 2020-10-30 | 中国科学院计算技术研究所 | 基于脉动阵列的神经网络处理器 |
US11741346B2 (en) * | 2018-02-08 | 2023-08-29 | Western Digital Technologies, Inc. | Systolic neural network engine with crossover connection optimization |
-
2019
- 2019-10-16 CN CN201910982329.5A patent/CN110705703B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103902762A (zh) * | 2014-03-11 | 2014-07-02 | 复旦大学 | 一种针对正定对称矩阵进行最小二乘方程求解的电路结构 |
CN109598335A (zh) * | 2018-12-04 | 2019-04-09 | 郑州云海信息技术有限公司 | 一种二维卷积脉动阵列结构及实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110705703A (zh) | 2020-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110705703B (zh) | 基于脉动阵列的稀疏神经网络处理器 | |
CN109063825B (zh) | 卷积神经网络加速装置 | |
EP3659051B1 (en) | Accelerated mathematical engine | |
CN108874745B (zh) | 原生张量处理器及张量缩并的分割 | |
US10698657B2 (en) | Hardware accelerator for compressed RNN on FPGA | |
CN107704916B (zh) | 一种基于fpga实现rnn神经网络的硬件加速器及方法 | |
CN110851779B (zh) | 用于稀疏矩阵运算的脉动阵列架构 | |
CN110263925B (zh) | 一种基于fpga的卷积神经网络前向预测的硬件加速实现装置 | |
CN101782893B (zh) | 可重构数据处理平台 | |
EP2017743B1 (en) | High speed and efficient matrix multiplication hardware module | |
CN107256424B (zh) | 三值权重卷积网络处理系统及方法 | |
CN110321997B (zh) | 高并行度计算平台、系统及计算实现方法 | |
CN110543939B (zh) | 一种基于fpga的卷积神经网络后向训练的硬件加速实现装置 | |
CN110717583B (zh) | 卷积电路、处理器、芯片、板卡和电子设备 | |
CN110766128A (zh) | 卷积计算单元、计算方法及神经网络计算平台 | |
CN112434801B (zh) | 一种按照比特精度进行权重拆分的卷积运算加速方法 | |
CN110766136B (zh) | 一种稀疏矩阵与向量的压缩方法 | |
CN112639839A (zh) | 神经网络的运算装置及其控制方法 | |
US10725741B2 (en) | Digital circuit with compressed carry | |
CN116167424B (zh) | 基于cim的神经网络加速器、方法、存算处理系统与设备 | |
CN110764602B (zh) | 用于降低存储开销的汇流阵列 | |
CN116384443A (zh) | 具有可配置池化处理单元的神经网络加速器 | |
CN113392963B (zh) | 基于fpga的cnn硬件加速系统设计方法 | |
CN114265801A (zh) | 一种通用、可配置的高能效池化计算多行输出方法 | |
CN112836793A (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 |