CN110851779A - 用于稀疏矩阵运算的脉动阵列架构 - Google Patents
用于稀疏矩阵运算的脉动阵列架构 Download PDFInfo
- Publication number
- CN110851779A CN110851779A CN201910982583.5A CN201910982583A CN110851779A CN 110851779 A CN110851779 A CN 110851779A CN 201910982583 A CN201910982583 A CN 201910982583A CN 110851779 A CN110851779 A CN 110851779A
- Authority
- CN
- China
- Prior art keywords
- data
- component
- sparse
- systolic array
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- 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/8053—Vector processors
- G06F15/8076—Details on data register access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- 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
Abstract
本发明公开了一种用于稀疏矩阵运算的脉动阵列架构,包括呈脉动阵列排布的多个处理单元(PE,processing element)。每一处理单元中包括:动态选择组件(DS,dynamic selection component),用于从压缩后的稀疏数据流中选取需要计算的数据对、并将其输出到乘加组件中;乘加组件(MAC,multiplication and accumulation component),接收动态选择组件送来的数据对并对其进行乘与累加操作,并在计算完成后将累加和输出到结果转发组件;结果转发组件(RF,result forwarding component),将乘加组件送来的累加和转发到阵列之外。本发明大幅提升了稀疏矩阵运算的速度与能耗比,在矩阵稀疏度较低时也有显著的速度提升,此外,为达成存储与计算上的优化,在某些任务中同一矩阵中的数据需以不同精度进行表征。本发明同样可对具有混合精度的稀疏矩阵进行运算。
Description
技术领域:
本发明涉及一种计算机体系结构,具体涉及一种用于稀疏矩阵运算的脉动阵列架构。
背景技术
对稀疏矩阵运算(包含稀疏矩阵-向量、矩阵-矩阵乘法等)的加速是科学探索与工程实践中面临的重要基本问题之一。稀疏矩阵(向量)指包含大量0元素的矩阵(向量),其中0元素的占比用稀疏度表示。对稀疏矩阵进行的运算之中,一部分乘法与加法运算,由于其包含一个或两个等于0的操作数,可被去除而不对结果产生影响。因此,在进行稀疏矩阵运算的过程之中可去除该部分无效操作而不对计算结果产生影响、从而达成速度与能耗比上的提升。然而,尤其当矩阵的稀疏图样不规整时,现有的策略往往不能对稀疏矩阵运算达成较好的优化。在传统计算平台(CPU、GPU)运行的稀疏矩阵运算乘法往往面临着并行度较低或性能提升不明显等问题。现有的针对稀疏矩阵运算设计的异构计算平台往往会引入较大的开销,使其在稀疏度较低时不能达成明显的性能提升、甚至会带来性能的下降。
脉动阵列架构是为大量并行计算任务而设计的同构处理单元阵列。脉动阵列中的单元之间通过转发输入数据以对其达成复用,从而在保证高并行度的同时有效地降低访存带宽需求。同时,由于脉动阵列之中处理单元的设计及单元间通信的设计均相对规整,其在物理设计过程之中同样能够获得相当的优势。
同时,在许多应用之中,同一矩阵或向量中的数据所需位宽有所不同。使用相同的位宽对矩阵或向量中所有数值进行统一表示会带来不必要的开销。然而,通用计算平台难以对细粒度混合精度数据的处理过程达成有效的加速。另一方面,通过在加速器中添加额外的数据通路以对混合精度数据进行计算会带来一定的开销:当高精度数据占比过低时,高精度数据通路可能会闲置从而带来浪费;另一方面,当高精度数据占比过高时,高精度数据通路满载带来的阻塞可能会拉低整个脉动阵列的性能。因此,通过在加速器中使用统一的数据通路对混合精度的数据进行计算,可利用数据精度的不同从而达成存储空间以及计算功耗上的优化。
发明内容:
本发明提供用于稀疏矩阵运算的脉动阵列结构,以在保证高并行度、低访存带宽需求与便利的物理设计的同时,去除了稀疏矩阵运算中不影响计算结果的无效操作,从而对其达成速度与能耗比的提升。同时,本发明可使用统一的数据通路对混合精度的数据进行计算,以利用数据精度的不同达成存储空间以及计算功耗的优化。
本发明提供一种用于稀疏矩阵运算的脉动阵列架构,该脉动阵列架构包含网状连接的多个处理单元PE形成的脉动阵列,处理单元PE之间相互传递压缩后的稀疏数据,所述处理单元PE能从中选取需处理的数据对,并对其进行计算,在计算完成后将计算结果自脉动阵列中转发出来,由于去除了不影响计算结果的无效操作,达成了速度与能耗比的提升。
所述阵列架构之中,处理单元PE阵列可以为一维脉动阵列或二维脉动阵列。
所述阵列架构之中,输入数据与输出数据移动方向可以相同或相反。
所述处理单元PE的模块包含:动态选择DS组件、乘加MAC组件、结果转发RF组件;
所述动态选择DS组件用于从被导入到该处理单元PE的压缩数据流中选取需计算的数据对,并将其输出到乘加MAC组件;所述乘加MAC组件接收自动态选择DS组件送入的数据对并对其完成乘与累加操作,在计算结果完成后将其输出到结果转发RF组件中;所述结果转发RF组件在接收乘加MAC发送的计算结果后,将该结果输出到相邻处理单元PE的结果转发RF组件中以转发到脉动阵列之外。
所述PE单元可为同步时序电路或异步时序电路。
根据本发明提供的脉动阵列架构,进行稀疏向量或矩阵运算时,处理单元PE包括两个数据输入端口A与B,计算结果转发的输入端口C,两个数据输出端口A’与B’,将计算结果转发的输出端口C’;两输入数据流分别从A与B进入处理单元PE后,穿过动态选择DS组件后,再分别由A’与B’端口输出到相邻的处理单元PE中,乘加MAC组件运算完成后,计算结果由MAC组件发送到结果转发RF组件中,再由C’端口输出到相邻处理单元PE中,其他PE的计算结果同样由C端口进入,穿过RF组件后同样由C’端口发送到相邻PE中,从而将PE的计算结果转发到脉动阵列之外;在将多个PE构成脉动阵列形式之时,每一个PE的A端口与另一个PE的A’端口相连,同理有B与B’相连、C与C’相连,DS组件桥接A-A’与B-B’两个方向的压缩后的稀疏数据流,从中选取需计算的数据对(a,b)并将其输出到MAC组件,MAC组件内部有寄存器用以保存部分累加和c,在收到数据对(a,b)后,对其进行乘与累加操作:c←c+ab,在计算完成后,将累加和c输出到RF组件中,RF组件将计算结果输出到其余PE的RF组件中,从而将计算结果转发到脉动阵列之外。
所述的稀疏向量或矩阵运算包括:稀疏向量与稀疏向量的运算、稀疏矩阵与稀疏向量的运算、稀疏矩阵与稀疏矩阵的运算。
所述的PE,其用于处理统一精度的数据。
所述的PE,其用于处理定点数据。
所述的PE,其用于处理浮点数据。
所述的PE,其用于处理混合精度的数据。
所述的PE,其用于处理混合定点精度的数据。
所述的PE,其用于处理混合浮点精度的数据。
所述的混合的精度数据的处理方式,可将数据划分为两个或多个精度等级。
所述的用于处理混合精度数据的PE,不同精度的数据使用统一的数据通路。
所述的用于处理混合精度数据的PE,不同精度的数据使用不同的数据通路。
与现有技术相比,本发明提供了一种基于脉动阵列的稀疏神经网络处理器架构,通过处理器整体架构,在保留脉动阵列架构带来的数据重用、高并发、低带宽需求等优势的同时,去除了稀疏矩阵运算中不影响计算结果的无效操作,对其训练与推理过程达成速度与功耗比的提升。同时稀疏矩阵运算阵列进行运算前,对稀疏向量或稀疏矩阵的压缩方法进行优化,压缩后的矩阵与向量可方便高效地送入计算单元中进行处理压缩压缩,降低了降低解码和存储过程中所需的空间开销,提高了存储使用的效率。所采用的汇流阵列可将一个存储器中的数据传输到一个或多个输出接口,从而去除了不同存储器间的数据冗余、降低了所需的存储器容量。同时,通过避免相同数据被写入到多个存储器、并于多个存储器中被重复读取,能够达成存储功耗的降低。
附图说明
图1是本发明一个实施例的一种PE的结构示意图。
图2是本发明处理的一个典型的稀疏矩阵-向量乘法的示意图。
图3是本发明一个实施例的一种用于计算稀疏矩阵-向量乘法的一维脉动阵列结构(输入与输出反向)的示意图(以处理图2所示的稀疏矩阵-向量乘法为例)。
图4是本发明一个实施例的一种用于计算稀疏矩阵-向量乘法的一维脉动阵列结构(输入与输出同向)的示意图(以处理图2所示的稀疏矩阵-向量乘法为例)。
图5是本发明一个实施例的一维脉动阵列处理图2所示稀疏矩阵-向量乘法前六个脉动(pulsation)的示意图。
图6是本发明处理的一个典型的稀疏矩阵-矩阵乘法的示意图。
图7是本发明一个实施例的一种用于计算稀疏矩阵-矩阵乘法的二维脉动阵列结构(输入与输出反向)的示意图(以处理图5所示的稀疏矩阵-矩阵乘法为例)。
图8是本发明一个实施例的一种用于计算稀疏矩阵-矩阵乘法的二维脉动阵列结构(输入与输出同向)的示意图(以处理图5所示的稀疏矩阵-矩阵乘法为例)。
图9是本发明一个实施例的二维脉动阵列处理图6所示稀疏矩阵-矩阵乘法前四个脉动(pulsation)的示意图。
图10是本发明处理的一个典型的混合稀疏精度向量-向量乘法示意图。
图11是本发明一个实施例的稀疏混合精度向量的表示方式对图10所示稀疏向量表示的示意图。
图12是本发明一个实施例的PE单元进行图10所示稀疏混合精度向量-向量运算前八个脉动的示意图。
图13是本发明处理的一个典型的稀疏混合浮点精度向量。
图14是本发明一个实施例的稀疏混合浮点精度向量的表示方式对图13所示稀疏向量表示的示意图。
图15是本发明一个实施例的PE单元对图14所示稀疏混合浮点精度向量-向量运算前八个脉动的示意图。
图16a是采用本发明架构的稀疏神经网络处理器一个实施例的结构示意图。
图16b是图16a中采用本发明架构的稀疏神经网络处理器的一个实施例中PE的结构示意图。
图17是图16a中采用本发明架构的稀疏神经网络处理器的一个实施例中CE的结构示意图。
图18是本发明运行真实网络时与朴素脉动阵列的性能对比图。
图中a、b、c分别为AlexNet,VGG16,ResNet50三个不同的神经网络各自的结果对比。
图19为采用本发明架构的稀疏神经网络处理器的加速效果。
图中图例自左往右分别表示(2,2,2),(4,4,4),(8,8,8)和(∞,∞,∞)。
图20为采用本发明架构的稀疏神经网络处理器的相对功耗对比。
图中图例自下往上分别表示WB、FB、MAC、FIFO、other和static。
图21为采用本发明架构的稀疏神经网络处理器的片上功耗效果。
图22为采用本发明架构的稀疏神经网络处理器的面积效率提升效果。
图23为采用本发明架构的稀疏神经网络处理器的混合精度神经网络加速器效果。
图中图例自左往右分别表示(2,2,2),(4,4,4),(8,8,8)和(∞,∞,∞)。
具体实施方式:
本发明针对稀疏矩阵运算难以被高效完成的问题,提出了用于稀疏矩阵运算的脉动阵列架构。该架构在保证高并行度、低访存带宽需求与便利的物理设计的同时,去除了稀疏矩阵运算中不影响计算结果的无效操作,从而对其达成速度与能耗比的提升。本发明尤其可用于处理稀疏矩阵-向量乘法,稀疏矩阵-矩阵乘法等基本通用运算。接下来通过结合具体实施例与附图对本发明进行进一步详细说明。
图1是本发明一个实施例的一种计算单元(PE)的结构示意图。如图1所示,PE由三部分组成:动态选择(DS)组件、乘加(MAC)组件、结果转发(RF)组件。其中,A与B为PE的两个数据输入端口,C为计算结果转发的输入端口;A’与B’为PE的两个数据输出端口,C’为计算结果转发的输出端口。两输入数据流分别从A与B进入PE后,穿过DS组件后,再分别由A’与B’端口输出到相邻的PE中。数据输入输出端口A和A’可以负责行间数据传输,数据输入输出端口B和B’可以负责列间数据传输。反之亦可。运算完成后,计算结果由MAC组件发送到RF组件中,再由C’端口输出到相邻PE中。其他PE的计算结果同样由C端口进入,穿过RF组件后同样由C’端口发送到相邻PE中,从而将PE的计算结果转发到脉动阵列之外。其中,将多个PE构成脉动阵列形式之时,每一个PE的A端口与另一个PE的A’端口相连,同理有B与B’相连、C与C’相连。
DS组件桥接A-A’与B-B’两个方向的压缩后的稀疏数据流,从中选取需计算的数据对(a,b)并将其输出到MAC组件。MAC组件内部有寄存器用以保存部分累加和c,在收到数据对(a,b)后,对其进行乘与累加操作:c←c+ab。在计算完成后,将累加和c输出到RF组件中。RF组件将计算结果输出到其余PE的RF组件中,从而将计算结果转发到脉动阵列之外。
图2展示了本发明处理的一个典型的稀疏矩阵-向量乘法的例子。其中,A=(aij)与X=(xi)T分别为稀疏矩阵与稀疏向量,二者中的零元素均用“0”表示。Y=(yj)T为一维向量,用以表示A与X的乘积。除去不影响结果的无效计算后,Y可由下式计算得出:
y1=a11x1+a14x4
y2=0
y3=a33x3+a34x4
y4=a41x1
图3与图4是本发明一个实施例的两种用于稀疏矩阵-向量乘法的一维脉动阵列架构(进行图2中运算)的示意图。以图3所示的脉动阵列架构为例,其宏观的计算流程如下描述:
矩阵A中的每一行数据经压缩后分别送入到不同PE中。X经压缩后从左侧送入到脉动阵列之中、并由左至右流经整个一维阵列。每个PE中DS组件选取需计算的数据对(如(a11,x1)、(a14,x4)等)送入MAC组件进行计算。在运算完成后,将结果从右向左转发到脉动阵列之外。图5为图3所示脉动阵列架构进行图2中运算时前六个脉动(pulsation)的示意图。其中,当y1与y2经由RF组件向其余外转发时,其计算已经完成。此外,PE间的数据可能以不一致的步调进行传输。
图4展示的一维脉动阵列结构进行图2中运算时,除结果转发有所不同之外,其余计算过程与前所述一致。
图6展示了本发明处理的一个典型的稀疏矩阵-矩阵乘法的例子。其中,A=(aij)与B=(bij)为两个稀疏矩阵,二者中的零元素均用“0”表示。C=(cij)为二维矩阵,用以表示A与B的乘积。除去不影响结果的无效计算后,C中部分元素的计算公式如下所示:
c11=0
c12=a11b12+a14b42
c21=a22b21
c22=0
图7与图8是本发明一个实施例的两种用于稀疏矩阵-矩阵乘法的二维脉动阵列架构(进行图6中运算)的示意图。以图7所示的脉动阵列架构为例,其宏观的计算流程如下描述:
矩阵A中的每一行数据经压缩后分别送入到脉动阵列的不同列之中、矩阵B中的每一列数据经压缩后分别送入到脉动阵列的不同行之中。计算结果自下向上转发到脉动阵列之外。图7中二维脉动阵列架构相当于多个图3中一维脉动阵列架构进行堆叠。图9为图7所示脉动阵列架构进行图6中运算时前四个脉动(pulsation)的示意图,其中每一步的详细解释与图5类似。
图8展示的二维脉动阵列结构进行图6中所示运算时,除结果转发有所不同之外,其余计算过程中与前所述一致。
同时,由于在应用之中,同一矩阵或向量中的数据所需位宽有所不同。使用相同的位宽对矩阵或向量中所有数值进行统一表示会带来不必要的开销。为解决通用计算平台难以对细粒度混合精度数据的处理过程达成有效的加速的问题。本发明同时提供了一种在加速器中使用统一的数据通路对混合精度的数据进行计算的方法,可以利用数据精度的不同从而达成存储空间以及计算功耗上的优化。
如图10所示为两个典型的稀疏混合精度(8位无符号定点与16位无符号定点)向量的示意图。图中a1为16位无符号定点数,若PE使用不同的数据通路处理具有混合精度的数据,则对图10所示的稀疏混合精度向量的处理过程与对具有统一精度数据的稀疏向量相同;若PE使用统一的数据通路处理具有混合精度的数据,则需对输入的稀疏混合精度向量进行预处理,以另一种方式进行表示。
图11为图10所示的稀疏混合精度向量的表示方式。其中,16位无符号定点数a1被拆解为两个8位无符号定点数a1H与a1L,并在数据压缩过程中采用额外的标记进行标记。
图12展示了单个PE利用图10中所示的混合精度向量进行计算的过程。可以看到,将16位无符号定点数拆解为两个8位无符号定点数的稀疏混合精度数据表示方式后,本设计提供的脉动阵列可以通过统一的8位无符号定点的数据通路处理具有混合精度稀疏向量或矩阵。
另一方面,本设计提供的混合精度计算方法不仅适用于定点数据,同样也适用于浮点数据。图13为两个典型的稀疏混合浮点精度向量,包括8位尾数无符号浮点与16位尾数无符号浮点。其中c1为16位尾数无符号浮点。对数据的预处理如图14所示,将16位尾数无符号浮点拆解为两8位尾数无符号浮点c1H与c1L,并在数据压缩过程中采用额外的标记进行标记。对其余16位尾数无符号浮点也进行类似处理。从而对图13中所示的两向量进行预处理。
如图15所示,通过使用本发明提供的稀疏混合浮点精度数据表示方式,本设计提供的脉动阵列可以使用统一的8位尾数无符号浮点数据通路处理具有混合精度的浮点数据。
显然,易知上述对无符号混合精度的处理过程同样可用于处理有符号数据。且上述单个PE表示的混合精度稀疏向量-向量乘法的过程可适用于一维或二维脉动阵列、进而用于处理稀疏混合精度矩阵-向量运算或混合精度稀疏矩阵-矩阵运算。可利用数据精度的不同达成优化、同时避免额外添加高精度数据通路带来的开销。
尤其是,本发明所公开的用于稀疏矩阵运算的脉动阵列架构可以应用于稀疏神经网络处理器,采用本脉动阵列架构的神经网络处理器包括:存储单元、控制单元、汇流阵列、稀疏矩阵运算脉动阵列和计算单元。其中所述存储单元用以存储神经网络权值、梯度、特征以及用于数据流调度的指令序列。所述控制单元与存储单元相连接,并依据指令序列的调度,从存储中获取所需数据,并将所述数据重整为矩阵运算的形式后经由汇流阵列桥接后送入到稀疏矩阵运算脉动阵列以完成相应计算。所述计算单元接收稀疏矩阵运算脉动阵列的计算结果,对其进一步完成如非线性激活函数、池化等操作以完成最终计算。最后,在控制单元的调度下,计算结果于计算单元中被取出并存入到存储单元之中以进行下一层的计算。该处理器能够利用多种神经网络的训练与推断过程中的稀疏性对其达成速度与功耗比的提升。
上文提到,本发明中,对稀疏矩阵运算阵列进行运算前,均需要对稀疏向量或稀疏矩阵进行压缩,因为稀疏矩阵与向量中包含大量零元素,这部分零元素可被去除以降低存储过程中所需的空间开销。然而在这一过程中,对稀疏矩阵与向量不恰当的压缩方式会降低其存储与使用的效率。因此采用本脉动阵列架构的神经网络处理器对稀疏向量或稀疏矩阵进行压缩的方法分别为:
对稀疏向量的压缩方法包括:
(1)按照给定的长度对向量中的元素进行分段,
(2)标注每一数据在段内的偏移,如对于段内最后一个数据,其偏移记为0,其前方一位的数据偏移记为1,前方两位的数据偏移记为2,以此类推。得到所有数据在段内的偏移。
(3)判断段内的元素为非零元素或零元素;若段内无非零元素,则于该段中保留第一个或任意一个零元素以进行占位;若段中有非零元素,则移除段内所有的零元素;
(4)对段中的数据进行标注;具体为对剩余元素中偏移值最大的元素则标记为1,对其他元素标记为0。
上面偏移的标记方法也可以相反,如对于段内第一个数据,其偏移记为0,其后方一位的数据偏移记为1,后方两位的数据偏移记为2,以此类推。得到所有数据在段内的偏移。此时在步骤4对段中的数据进行标注时,具体为对剩余元素中偏移值最大的元素则标记为1,对其他元素标记为0。
对稀疏矩阵的压缩方法,为按照给定的长度对矩阵中的元素进行逐行分段并利用上面的方法进行压缩。
为本发明脉动阵列架构的神经网络处理器所设计的上述压缩方法,经压缩后的矩阵与向量可较为方便地送入计算单元中进行处理、从而降低解码过程带来的计算开销。
另一方面,在神经网络的计算过程中,相同数据可能会被送到稀疏矩阵运算阵列的不同行。在卷积神经网络的推理过程中,为完成相应卷积运算而被送到脉动阵列不同行的特征图往往会相互重叠。当各行被分配相互独立的存储器时,由于特征图的重叠,不同存储器中需存储相同的数据的多分拷贝,从而造成存储空间的浪费。同时,在运算过程中,相同的数据需由多个存储器中多次读取以送到稀疏矩阵运算阵列的不同行、从而带来额外的访存开销。因此,本发明以汇流阵列桥接由存储单元至稀疏矩阵运算阵列的数据流以降低存储开销。该汇流阵列由多个汇流单元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,将其送到自身的阵列外数据端口。这种汇流阵列可将一个存储器中的数据传输到一个或多个输出接口,从而去除了不同存储器间的数据冗余、降低了所需的存储器容量。同时,通过避免相同数据被写入到多个存储器、并于多个存储器中被重复读取,能够达成存储功耗的降低。
由于神经网络普遍地天然具有稀疏性,对稀疏神经网络的运算达成加速就成为了一项具有重要意义的工作。同时,由于神经网络的运算过程可以很好地转换为矩阵运算,对稀疏神经网络的计算便很好地转化为稀疏矩阵的运算。
下面采用一个具体的实施例,通过将三个不同的神经网络(AlexNet,VGG16,ResNet50)的运算过程转化为稀疏矩阵运算,以对本发明所公开的架构,如图16a所示、采用了本发明架构的稀疏神经网络处理器的整体性能和技术效果进行评估和说明。
首先,如图16b所示,基于本发明架构的稀疏神经网络处理器在本实施例中采用了同步时序逻辑,在DS组件中使用FIFO对输入数据流进行缓冲;MAC部件中使用了8位定点数乘加器。编译时段长度设置为16。其中,DS组件运行频率高于MAC组件,以使MAC组件尽可能满载。
如图17所示,汇流单元同样采用了同步时序逻辑,同样采用了FIFO对数据进行暂存,其中采用的FIFO深度为16。
对下述实施例以及附图中,采用标识进行统一说明:
延迟(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比特数据占比等指标所逐层生成的、满足该指标的神经网络。
如图18所示,以16x16的脉动阵列为例,本发明于不同参数配置之下运行各种真实网络之时均能相对朴素脉动阵列的性能提升均较为稳定。结果显示,本发明可利用稀疏性对运算过程达成加速。尤其注意当FIFO尺寸较小时速度提升已基本收敛、从而避免了由于引入过大FIFO带来的面积以及功耗开销。同时,DS、MAC组件频率之比较小时速度提升也已基本收敛,DS部件可运行在较低的频率以避免引入硬件设计带来的开销。
如图19所示,通过结合用于稀疏混合精度矩阵运算的脉动阵列、用于降低存储开销的汇流阵列。本发明提出的稀疏混合精度神经网络加速器能够很好地利用神经网络训练与推断过程中的稀疏性,从而达成运算速度、功耗效率以及面积效率的提升,且该性能提升在脉动阵列尺寸、PE中各FIFO深度变化之时具有稳定性。
同样在16x16的规模之上,对本设计与朴素脉动阵列的片上功耗进行分解(on-chip power breakdown)并进行比较。如图20所示,可以看到,通过利用稀疏性对特征与权值进行压缩,本设计有效地降低了片上缓存(权值缓存,WB,weight buffer与特征缓存,FB,feature buffer)的访问量。同时,由于使用了更小的片上缓存,本设计得以大幅降降低了访问片上缓存所需的功耗。另一方面,可以看到,汇流阵列的引入有效地降低了特征缓存(FB)的访问量、从而进一步降低了所需的功耗、提升了功耗效率。
如图21所示,相比于朴素脉动阵列,本设计有效地利用了稀疏性达成了功耗效率的提升、且该提升在脉动阵列尺寸变化之时具有较强的稳定性。此外,由于之前对片上功耗分解(on-chip power breakdown)的分析,可以看到汇流阵列的引入对本设计的功耗效率达成了进一步的提升。最后对神经网络加速器的面积效率进行分析。可以看到,由于利用稀疏对输入数据进行了压缩,本发明得以使用更小的片上缓存(SRAM)。因此,在脉动阵列规模较小之时,相比于朴素设计,本发明具有显著的面积效率优势。在脉动阵列规模不断增大的过程之中,额外的FIFO带来的面积开销变得愈发显著、从而拉低了面积效率。尽管如此,可以本设计的面积效率在整体上依然具有一定的优势。
最后对神经网络加速器的面积效率进行分析。如图22所示,可以看到,由于利用稀疏对输入数据进行了压缩,本发明得以使用更小的片上缓存(SRAM)。因此,在脉动阵列规模较小之时,相比于朴素设计,本发明具有显著的面积效率优势。在脉动阵列规模不断增大的过程之中,额外的FIFO带来的面积开销变得愈发显著、从而拉低了面积效率。尽管如此,可以本设计的面积效率在整体上依然具有一定的优势。
如图23所示,通过结合用于稀疏混合精度矩阵运算的脉动阵列、用于降低存储开销的汇流阵列。本发明提出的稀疏混合精度神经网络加速器能够很好地利用神经网络训练与推断过程中的稀疏性,从而达成运算速度、功耗效率以及面积效率的提升,且该性能提升在脉动阵列尺寸、PE中各FIFO深度变化之时具有稳定性。
以上运用具体实施例对本发明进行了进一步的阐释。需要指出的是,上述内容仅为本发明的具体实施例,而不应用于限制本发明。在本发明的思想之内的任何修改、替换、改进等都应在本发明的保护范围之内。
Claims (10)
1.一种用于稀疏矩阵运算的脉动阵列架构,其特征在于,该脉动阵列架构包含网状连接的多个处理单元PE形成的脉动阵列,所述处理单元PE之间相互传递压缩后的稀疏数据,所述处理单元PE能从中选取需处理的数据对,并对其进行计算,在计算完成后将计算结果自脉动阵列中转发出来,由于去除了不影响计算结果的无效操作,达成了速度与能耗比的提升。
2.根据权利要求1所述的脉动阵列架构,其中所述处理单元PE阵列为一维脉动阵列。
3.根据权利要求1所述的脉动阵列架构,其中所述处理单元PE阵列为二维脉动阵列。
4.根据权利要求1所述的脉动阵列架构,其中输入数据与输出数据移动方向相反。
5.根据权利要求1所述的脉动阵列架构,其中输入数据与输出数据移动方向相同。
6.根据权利要求1所述的脉动阵列架构,其特征在于,所述处理单元PE的模块包含:动态选择DS组件、乘加MAC组件、结果转发RF组件;
所述动态选择DS组件用于从被导入到该处理单元PE的压缩数据流中选取需计算的数据对,并将其输出到乘加MAC组件;所述乘加MAC组件接收自动态选择DS组件送入的数据对并对其完成乘与累加操作,在计算结果完成后将其输出到结果转发RF组件中;所述结果转发RF组件在接收乘加MAC发送的计算结果后,将该结果输出到相邻处理单元PE的结果转发RF组件中以转发到脉动阵列之外。
7.根据权利要求6所述的脉动阵列架构,其特征在于,处理单元PE为同步时序电路。
8.根据权利要求6所述的脉动阵列架构,其特征在于,处理单元PE为异步时序电路。
9.根据权利要求1-8任一项所述的脉动阵列架构用于稀疏向量或矩阵运算的方法,处理单元PE包括两个数据输入端口A与B,计算结果转发的输入端口C,两个数据输出端口A’与B’,将计算结果转发的输出端口C’;两输入数据流分别从A与B进入处理单元PE后,穿过动态选择DS组件后,再分别由A’与B’端口输出到相邻的处理单元PE中,乘加MAC组件运算完成后,计算结果由MAC组件发送到结果转发RF组件中,再由C’端口输出到相邻处理单元PE中,其他PE的计算结果同样由C端口进入,穿过RF组件后同样由C’端口发送到相邻PE中,从而将PE的计算结果转发到脉动阵列之外;在将多个PE构成脉动阵列形式之时,每一个PE的A端口与另一个PE的A’端口相连,同理有B与B’相连、C与C’相连,DS组件桥接A-A’与B-B’两个方向的压缩后的稀疏数据流,从中选取需计算的数据对(a,b)并将其输出到MAC组件,MAC组件内部有寄存器用以保存部分累加和c,在收到数据对(a,b)后,对其进行乘与累加操作:c←c+ab,在计算完成后,将累加和c输出到RF组件中,RF组件将计算结果输出到其余PE的RF组件中,从而将计算结果转发到脉动阵列之外。
10.根据权利要求9的方法,其特征在于:稀疏向量或矩阵运算包括:稀疏向量与稀疏向量的运算、稀疏矩阵与稀疏向量的运算、稀疏矩阵与稀疏矩阵的运算。
优选的,所述的PE,用于处理统一精度的数据、定点数据、浮点数据、混合精度的数据、混合定点精度的数据、混合浮点精度的数据中的一种,
更优选的,可将数据划分为两个或多个精度等级,不同精度的数据使用统一的数据通路或使用不同的数据通路。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910982583.5A CN110851779B (zh) | 2019-10-16 | 2019-10-16 | 用于稀疏矩阵运算的脉动阵列架构 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910982583.5A CN110851779B (zh) | 2019-10-16 | 2019-10-16 | 用于稀疏矩阵运算的脉动阵列架构 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110851779A true CN110851779A (zh) | 2020-02-28 |
CN110851779B CN110851779B (zh) | 2021-09-14 |
Family
ID=69597516
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910982583.5A Active CN110851779B (zh) | 2019-10-16 | 2019-10-16 | 用于稀疏矩阵运算的脉动阵列架构 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110851779B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113313247A (zh) * | 2021-02-05 | 2021-08-27 | 中国科学院计算技术研究所 | 基于数据流架构的稀疏神经网络的运算方法 |
CN113836481A (zh) * | 2020-06-24 | 2021-12-24 | 北京希姆计算科技有限公司 | 矩阵计算电路、方法、电子设备及计算机可读存储介质 |
WO2021259231A1 (zh) * | 2020-06-22 | 2021-12-30 | 深圳鲲云信息科技有限公司 | 人工智能芯片和基于人工智能芯片的数据处理方法 |
WO2022053032A1 (zh) * | 2020-09-11 | 2022-03-17 | 北京希姆计算科技有限公司 | 矩阵计算电路、方法、电子设备及计算机可读存储介质 |
CN114237551A (zh) * | 2021-11-26 | 2022-03-25 | 南方科技大学 | 一种基于脉动阵列的多精度加速器及其数据处理方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102012893A (zh) * | 2010-11-25 | 2011-04-13 | 中国人民解放军国防科学技术大学 | 一种可扩展向量运算簇 |
CN103399312A (zh) * | 2013-07-15 | 2013-11-20 | 哈尔滨工程大学 | 基于压缩感知技术的时空联合滤波高分辨方位估计方法 |
CN107578098A (zh) * | 2017-09-01 | 2018-01-12 | 中国科学院计算技术研究所 | 基于脉动阵列的神经网络处理器 |
CN108710505A (zh) * | 2018-05-18 | 2018-10-26 | 南京大学 | 一种基于fpga的可扩展稀疏矩阵向量乘处理器 |
CN109472350A (zh) * | 2018-10-30 | 2019-03-15 | 南京大学 | 一种基于块循环稀疏矩阵的神经网络加速系统 |
CN109739555A (zh) * | 2019-01-04 | 2019-05-10 | 腾讯科技(深圳)有限公司 | 包括乘累加模块的芯片、终端及控制方法 |
-
2019
- 2019-10-16 CN CN201910982583.5A patent/CN110851779B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102012893A (zh) * | 2010-11-25 | 2011-04-13 | 中国人民解放军国防科学技术大学 | 一种可扩展向量运算簇 |
CN103399312A (zh) * | 2013-07-15 | 2013-11-20 | 哈尔滨工程大学 | 基于压缩感知技术的时空联合滤波高分辨方位估计方法 |
CN107578098A (zh) * | 2017-09-01 | 2018-01-12 | 中国科学院计算技术研究所 | 基于脉动阵列的神经网络处理器 |
CN108710505A (zh) * | 2018-05-18 | 2018-10-26 | 南京大学 | 一种基于fpga的可扩展稀疏矩阵向量乘处理器 |
CN109472350A (zh) * | 2018-10-30 | 2019-03-15 | 南京大学 | 一种基于块循环稀疏矩阵的神经网络加速系统 |
CN109739555A (zh) * | 2019-01-04 | 2019-05-10 | 腾讯科技(深圳)有限公司 | 包括乘累加模块的芯片、终端及控制方法 |
Non-Patent Citations (1)
Title |
---|
刘勤让 等: "基于线性脉动阵列的卷积神经网络计算优化与性能分析", 《网络与信息安全学报》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021259231A1 (zh) * | 2020-06-22 | 2021-12-30 | 深圳鲲云信息科技有限公司 | 人工智能芯片和基于人工智能芯片的数据处理方法 |
CN113836481A (zh) * | 2020-06-24 | 2021-12-24 | 北京希姆计算科技有限公司 | 矩阵计算电路、方法、电子设备及计算机可读存储介质 |
WO2022053032A1 (zh) * | 2020-09-11 | 2022-03-17 | 北京希姆计算科技有限公司 | 矩阵计算电路、方法、电子设备及计算机可读存储介质 |
CN113313247A (zh) * | 2021-02-05 | 2021-08-27 | 中国科学院计算技术研究所 | 基于数据流架构的稀疏神经网络的运算方法 |
CN113313247B (zh) * | 2021-02-05 | 2023-04-07 | 中国科学院计算技术研究所 | 基于数据流架构的稀疏神经网络的运算方法 |
CN114237551A (zh) * | 2021-11-26 | 2022-03-25 | 南方科技大学 | 一种基于脉动阵列的多精度加速器及其数据处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110851779B (zh) | 2021-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110851779B (zh) | 用于稀疏矩阵运算的脉动阵列架构 | |
CN110705703B (zh) | 基于脉动阵列的稀疏神经网络处理器 | |
CN107704916B (zh) | 一种基于fpga实现rnn神经网络的硬件加速器及方法 | |
US10698657B2 (en) | Hardware accelerator for compressed RNN on FPGA | |
CN109543816B (zh) | 一种基于权重捏合的卷积神经网络计算方法和系统 | |
CN111062472B (zh) | 一种基于结构化剪枝的稀疏神经网络加速器及其加速方法 | |
KR100336266B1 (ko) | 신경 프로세서, 포화 유니트, 계산 유니트 및 가산기 회로 | |
CN107993186A (zh) | 一种基于Winograd算法的3D CNN加速方法及系统 | |
Wang et al. | WinoNN: Optimizing FPGA-based convolutional neural network accelerators using sparse Winograd algorithm | |
CN101782893A (zh) | 可重构数据处理平台 | |
CN109284824B (zh) | 一种基于可重构技术的用于加速卷积和池化运算的装置 | |
CN110674927A (zh) | 一种用于脉动阵列结构的数据重组方法 | |
CN110543939A (zh) | 一种基于fpga的卷积神经网络后向训练的硬件加速实现架构 | |
CN110766128A (zh) | 卷积计算单元、计算方法及神经网络计算平台 | |
CN112668708A (zh) | 一种提高数据利用率的卷积运算装置 | |
CN113283587A (zh) | 一种Winograd卷积运算加速方法及加速模块 | |
CN110766136B (zh) | 一种稀疏矩阵与向量的压缩方法 | |
Shu et al. | High energy efficiency FPGA-based accelerator for convolutional neural networks using weight combination | |
EP4318275A1 (en) | Matrix multiplier and method for controlling matrix multiplier | |
Shabani et al. | Hirac: A hierarchical accelerator with sorting-based packing for spgemms in dnn applications | |
CN113705794B (zh) | 一种基于动态激活位稀疏的神经网络加速器设计方法 | |
CN110764602A (zh) | 用于降低存储开销的汇流阵列 | |
Wang et al. | An FPGA-Based Reconfigurable CNN Training Accelerator Using Decomposable Winograd | |
CN110765413A (zh) | 矩阵求和结构及神经网络计算平台 | |
CN112596912B (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 |