CN110766136B - 一种稀疏矩阵与向量的压缩方法 - Google Patents
一种稀疏矩阵与向量的压缩方法 Download PDFInfo
- Publication number
- CN110766136B CN110766136B CN201910982345.4A CN201910982345A CN110766136B CN 110766136 B CN110766136 B CN 110766136B CN 201910982345 A CN201910982345 A CN 201910982345A CN 110766136 B CN110766136 B CN 110766136B
- Authority
- CN
- China
- Prior art keywords
- array
- data
- segment
- elements
- bus
- 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
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
本发明提供一种应用于稀疏矩阵与向量的压缩方法:增强坐标列表(ECOO,enhanced coordinate list)。包括在压缩过程中对矩阵或向量按行(列)划分成多个数据段。在分段后将每个非零数据用三元组表示,包括数值(value)、段内偏移(offset)以及段末标记(EOG,end of group)。本压缩方法其能够利用有限的位宽表示任意大的稀疏矩阵与向量、同时能以较低的开销完成解码操作。因此,相比于朴素的坐标列表(COO,coordinate list)压缩方法、本方法尤其适用于位宽有限的硬件结构之中存储需按行或列访问稀疏矩阵或向量。
Description
技术领域
本发明涉及神经网络处理器数据处理技术领域,具体涉及一种稀疏矩阵与向量的压缩方法。
背景技术
近年来,深度学***台所满足。
神经网络的稀疏性指其权值与特征中所包含零的比例。在稀疏度较高的神经网络的训练与推理过程之中,绝大部分的操作会包含一个或多个等于零的操作数、可被去除而不对计算结果产生影响。稀疏矩阵与向量为科学探索与工程实践中经常处理的重要对象。稀疏矩阵与向量中包含大量零元素,这部分零元素可被去除以降低存储过程中所需的空间开销。然而在这一过程中,对稀疏矩阵与向量不恰当的压缩方式会降低其存储与使用的效率。由此,多种压缩方式被提出以对稀疏矩阵与向量的存储与计算过程达成优化。例如,COO(COOrdinatelist)格式中,稀疏矩阵中每一非零元素均使用三元组(行号、列号、数值)进行表示;CSR(Compressed Row Storage)格式中,每一非零数据仅保留其与上一个非零数据的相对偏移。然而,尤其在专用硬件上对稀疏矩阵与向量进行处理之时,这些已有的压缩格式均为计算过程带来了一定的约束。例如,COO格式难以利用有限的位宽对任意大的稀疏矩阵进行压缩;CSR格式则需对相对偏移进行累加以进行后续操作、从而带来了额外的计算开销。因此,提出对稀疏矩阵与向量的新的压缩格式、以在专有硬件上对稀疏矩阵与向量进行高效处理具有重要的现实意义。
发明内容
为了至少解决上述提出的技术问题,本发明提出了一种稀疏矩阵与向量的压缩方法。本方法可利用有限的位宽对任意大的矩阵或向量进行压缩,尤其适用于稀疏矩阵与向量的硬件处理。相较于CRS,由本方法压缩后的矩阵与向量可较为方便地送入计算单元中进行处理,从而降低解码过程带来的计算开销。
本发明完整的技术方案包括:
一种稀疏向量的压缩方法,包括如下步骤:
(1)按照给定的长度对向量中的元素进行分段;
(2)标注每一数据在段内的偏移值,具体为对段内元素xi,其偏移值记为N-i,xi为该段内的第i个元素,N为段内元素总数;
(3)判断段内的元素为非零元素或零元素;
(4)若段内无非零元素,则于该段中保留第一个或任意一个零元素以进行占位;若段中有非零元素,则移除段内所有的零元素;
(5)对段中的数据进行EOG标注;具体为对剩余元素中偏移值最大的元素标记为1,对其他元素标记为0。
所用的向量压缩方法也可以为如下步骤:
(1)按照给定的长度对向量中的元素进行分段;
(2)标注每一数据在段内的偏移值,具体为对段内元素xi,其偏移值记为i-1,xi为该段内的第i个元素;
(3)判断段内的元素为非零元素或零元素;
(4)若段内无非零元素,则于该段中保留第一个或任意一个零元素以进行占位;若段中有非零元素,则移除段内所有的零元素;
(5)对段中的数据进行EOG标注;具体为对剩余元素中偏移值最大的元素标记为1,对其他元素标记为0。
进一步的,对于上面的两种向量压缩方法,在步骤(2)中,除了采用顺序或逆序标注偏移值以外,也可以采用任意序的方式标注偏移值。
一种稀疏矩阵的压缩方法,包括如下步骤:
(1)按照给定的长度对矩阵中的元素进行逐行或逐列分段,
(2)标注每一数据在段内的偏移值,具体为对段内元素xi,其偏移值记为N-i,xi为该段内的第i个元素,N为段内元素总数;
(3)判断段内的元素为非零元素或零元素;
(4)若段内无非零元素,则于该段中保留第一个或任意一个零元素以进行占位;若段中有非零元素,则移除段内所有的零元素;
(5)对段中的数据进行EOG标注;具体为对剩余元素中偏移值最大的元素标记为1,对其他元素标记为0。
所用的矩阵压缩方法也可以为如下步骤:
(1)按照给定的长度对矩阵中的元素进行逐行或逐列分段,
(2)标注每一数据在段内的偏移,具体为对段内元素xi,其偏移记为i-1,xi为该段内的第i个元素;
(3)判断段内的元素为非零元素或零元素;
(4)若段内无非零元素,则于该段中保留第一个或任意一个零元素以进行占位;若段中有非零元素,则移除段内所有的零元素;
(5)对段中的数据进行EOG标注;具体为对剩余元素中偏移值最大的元素标记为1,对其他元素标记为0。
进一步的,对于上面的两种矩阵压缩方法,在步骤(2)中,除了采用顺序或逆序标注偏移值以外,也可以采用任意序的方式标注偏移值。
本发明公开的压缩方法,能够利用有限的位宽表示任意大的稀疏矩阵与向量、同时能以较低的开销完成解码操作。因此,相比于朴素的坐标列表(COO,coordinate list)压缩方法、本方法尤其适用于位宽有限的硬件结构之中存储需按行或列访问稀疏矩阵或向量。同时,相较于CRS,由本方法压缩后的矩阵与向量可方便的送入对应的神经网络处理器计算单元中进行处理,从而降低解码过程带来的计算开销。
附图说明
图1为本发明的一个实施例对压缩稀疏向量进行压缩时的流程。
图2为本发明的一个实施例对稀疏向量进行压缩的过程示意图。
图3是本发明用于处理的一个典型的稀疏矩阵示意图。
图4为图3中所示稀疏矩阵由本发明提出的方法压缩后的示意图。
图5a是利用本发明压缩的数据进行运算的稀疏神经网络处理器一个实施例的结构示意图。
图5b是图5a所示采用本发明架构的稀疏神经网络处理器的一个实施例中PE的结构示意图。
图6图5a所示采用本发明架构的稀疏神经网络处理器的一个实施例中CE的结构示意图。
图7是运行真实神经网络时与朴素脉动阵列的性能对比图。
图中a、b、c分别为AlexNet,VGG16,ResNet50三个不同的神经网络各自的结果对比。
图8是采用本发明压缩方法的神经网络处理器对稀疏度的敏感性的评估结果。
图中a、b、c分别为AlexNet,VGG16,ResNet50三个不同的神经网络各自的结果对比。
图9为如图5b所示的PE实施例对利用本发明压缩后的稀疏向量进行运算的过程示意图。
具体实施方式
为了使本发明的目的、技术方案和优势更加清楚明白,接下来通过结合具体实施例与附图对本发明进行进一步详细说明。
为提高稀疏矩阵与向量存储与计算的效率,本发明提出了一种对稀疏矩阵与向量的压缩方法、以利用有限的位宽表示任意大的矩阵或向量。
图1为本发明一个实施例用于压缩稀疏向量的流程图。包括首先将稀疏向量按给定长度划分成各段,后续的操作以段为粒度进行。之后,标注每一数据在组内的偏移(offset)值并移除无需保留的数据。同时在对每一组中最后的数据进行EOG标注后,便完成了压缩过程。
图2结合一个具体的稀疏向量展示了压缩过程。
对于具有多个零元素的稀疏向量,首先按照给定的长度6对向量中的元素进行分段,共分为3段。
随后标注每一数据在段内的偏移,如对于段内最后一个数据,其偏移记为0,其前方一位的数据偏移记为1,前方两位的数据偏移记为2。以此类推,得到所有数据在段内的偏移。
判断段内的元素为非零元素或零元素;若段内无非零元素,则于该段中保留第一个零元素以进行占位;若段中有非零元素,则移除段内所有的零元素。
对段中的数据进行EOG标注;具体为对剩余元素中偏移值最大的元素则标记为1,对其他元素标记为0。
上面偏移的标记方法也可以相反,如对于段内第一个数据,其偏移记为0,其后方一位的数据偏移记为1,后方两位的数据偏移记为2。以此类推,得到所有数据在段内的偏移。在步骤4对段中的数据进行EOG标注时,同样为对剩余元素中偏移值最大的元素则标记为1、对其他元素标记为0。
本方法同样可进行稀疏矩阵的压缩。图3展示了本发明用于压缩的一个典型的稀疏矩阵示意图。首先设定段长为3,并逐行分段并压缩后,得到压缩结果如图4所示。每一非零元素压缩后的三元组中均包含其在段内的偏移(offset)。同时,若某一段中无非零元素,则于该段中保留一零元素以进行占位。最后,将每段剩余元素中偏移值最大的元素标记为EOG从而完成了整个压缩过程。
采用本发明的上述压缩方法,可以应用于本发明的发明人所设计的脉动阵列架构的神经网络处理器,经压缩后的矩阵与向量可方便地送入处理器计算单元中进行处理、从而降低解码过程带来的计算开销。在这里对该神经网络处理器,以及压缩方法在该处理器中的应用方式进行简要介绍:
应用本发明压缩方法的稀疏神经网络处理器,包括存储单元、控制单元、汇流阵列、稀疏矩阵运算阵列和计算单元。其中所述存储单元用以存储神经网络权值、梯度、特征以及用于数据流调度的指令序列。所述控制单元与存储单元相连接,并依据指令序列的调度,从存储中获取所需数据,并将所述数据重整为矩阵运算的形式后经由汇流阵列桥接后送入到稀疏矩阵运算阵列以完成相应计算。所述计算单元接收稀疏矩阵运算阵列的计算结果,对其进一步完成如非线性激活函数、池化等操作以完成最终计算。该处理器能够利用多种神经网络的训练与推断过程中的稀疏性对其达成速度与功耗比的提升。
权值与神经网络各层计算的中间结果(各层的特征)在控制单元的调度之下由存储单元取出,经由汇流阵列桥接后送入稀疏矩阵运算阵列。稀疏矩阵运算阵列将结果送入到计算单元中进行所需的非线性操作以完成计算。最后,在控制单元的调度下,计算结果于计算单元中被取出并存入到存储单元之中以进行下一层的计算。
其中稀疏矩阵运算阵列中包括多个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组件中,从而将计算结果转发到脉动阵列之外。
在多层感知器(MLP)中,其训练与推断过程中绝大多数计算任务都可被分解为稀疏矩阵-向量乘法。此外,卷积神经网络的训练与推断过程中的绝大多数计算任务均可被分解为稀疏卷积运算。因此,在处理器中,整合而成的稀疏矩阵经压缩后被送入稀疏矩阵运算阵列以完成相应计算。稀疏矩阵运算阵列中每一PE独立完成结果矩阵R中一个元素的计算。由卷积操作所整合而成稀疏矩阵经压缩后被送入稀疏矩阵运算阵列以完成相应计算。同样,此时稀疏矩阵运算阵列中每一PE独立完成结果矩阵R中一个元素的计算。因此应用了本发明的压缩方法的处理器能够利用多种神经网络的训练与推断过程中的稀疏性对其达成速度与功耗比的提升。
同时在许多应用之中,同一矩阵或向量中的数据所需位宽有所不同。使用相同的位宽对矩阵或向量中所有数值进行统一表示会带来不必要的开销。然而,通用计算平台难以对细粒度混合精度数据的处理过程达成有效的加速。另一方面,通过在加速器中添加额外的数据通路以对混合精度数据进行计算会带来一定的开销:当高精度数据占比过低时,高精度数据通路可能会闲置从而带来浪费;另一方面,当高精度数据占比过高时,高精度数据通路满载带来的阻塞可能会拉低整个脉动阵列的性能。因此,本发明通过在加速器中使用统一的数据通路对混合精度的数据进行计算,利用数据精度的不同从而达成存储空间以及计算功耗上的优化。具体为:
对具有稀疏混合精度向量,使用统一的数据通路处理,首先,对输入的稀疏混合精度向量进行预处理,将数据划分为两个或多个精度等级。例如采用8位数据路径进行数据处理,对于向量中的16位无符号定点数,将其拆分为两个8位无符号定点数,并在数据压缩过程中采用额外的标记进行标记,随后,将两个8位无符号定点数馈入PE进行正常处理。
当两个16位数据在同一PE处相遇时,通过将数据分成四对,并送到PE中进行处理。
上面的混合精度处理方法也可以用来处理浮点数据。
上述对无符号混合精度的处理过程同样可用于处理有符号数据。且上述单个PE表示的混合精度稀疏向量-向量乘法的过程可适用于一维或二维脉动阵列、进而用于处理稀疏混合精度矩阵-向量运算或混合精度稀疏矩阵-矩阵运算。可利用数据精度的不同达成优化、同时避免额外添加高精度数据通路带来的开销。
另一方面,在神经网络的计算过程中,相同数据可能会被送到稀疏矩阵运算阵列的不同行。在卷积神经网络的推理过程中,为完成相应卷积运算而被送到脉动阵列不同行的特征图往往会相互重叠。当各行被分配相互独立的存储器时,由于特征图的重叠,不同存储器中需存储相同的数据的多分拷贝,从而造成存储空间的浪费。同时,在运算过程中,相同的数据需由多个存储器中多次读取以送到稀疏矩阵运算阵列的不同行、从而带来额外的访存开销。因此,应用了本发明压缩方法的神经网络处理器以汇流阵列桥接由存储单元至稀疏矩阵运算阵列的数据流以降低存储开销。该汇流阵列由多个汇流单元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)的运算过程转化为稀疏矩阵运算,以对本发明所公开的向量与矩阵压缩方法,以及如图5a所示、采用了本发明压缩方法的基于脉动阵列的稀疏神经网络处理器的整体性能和技术效果进行评估和说明。
首先,如图5b所示,基于本发明压缩方法的稀疏神经网络处理器在本实施例中采用了同步时序逻辑,在DS组件中使用FIFO对输入数据流进行缓冲;MAC部件中使用了8位定点数乘加器。编译时段长度设置为16。其中,DS组件运行频率高于MAC组件,以使MAC组件尽可能满载。
如图6所示,汇流单元同样采用了同步时序逻辑,同样采用了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比特数据占比等指标所逐层生成的、满足该指标的神经网络。
如图7所示,以16x16的脉动阵列为例,本发明于不同参数配置之下运行各种真实网络之时均能相对朴素脉动阵列的性能提升均较为稳定。结果显示,本发明可利用稀疏性对运算过程达成加速。尤其注意当FIFO尺寸较小时速度提升已基本收敛、从而避免了由于引入过大FIFO带来的面积以及功耗开销。同时,DS、MAC组件频率之比较小时速度提升也已基本收敛,DS部件可运行在较低的频率以避免引入硬件设计带来的开销。
图8为同样将脉动阵列规模控制在16x16,对输入数据进行了压缩后,使用一系列具有不同稀疏度的生成神经网络对本神经网络处理器对稀疏度的敏感性的评估结果。
从图8可以以看出,本神经网络处理器能利用稀疏性达成运算速度的优化。在输入神经网络完全稠密之时,额外添加的组件引入的功耗降低了脉动阵列的功耗效率;然而,由于利用稠密对输入数据进行了压缩,从而减少了所需的缓存容量,可以使用更小的片上缓存(on-chip-buffer,SRAM)从而在面积效率上取得了优势。因此,相比于朴素脉动阵列,本发明在进行稀疏矩阵运算之时能够利用数据的稀疏性有效地达成了运算速度、功耗效率、面积效率方面的提升。
图9为如图5b所示的PE实施例对利用本专利压缩后的稀疏向量进行运算的过程示意图。下对其各周期的行为进行描述。
在周期0中,权值寄存器中所存数据的偏移量(0)小于特征寄存器中所存偏移量(1)。则此时权值流的落后于特征流,此时特征流保持不动、取出权值FIFO(OW-FIFO)中第一个元素、同时写入权值寄存器(OW-Reg)并送入到相邻PE之中。
在周期1中,权值寄存器中所存数据的偏移量(1)等于特征寄存器中所存偏移量(1)。则此时该权值-特征对(w1-f0)为所需的特征、将该特征送入到MAC组件中。此外,取出权值FIFO(OW-FIFO)中第一个元素、同时写入权值寄存器(OW-Reg)并送入到相邻PE之中;并且取出特征FIFO(F-FIFO)中第一个元素、同时写入特征寄存器(F-Reg)并送入到相邻PE之中。
周期2的情况与周期0恰好相反。
在周期3中,尽管权值寄存器中所存数据的偏移量(3)小于特征寄存器中所存偏移量(4),但由于权值寄存器中数据已经遇到了段末标记(EOG=1),同周期2中一样、权值流保持不动、特征流推进。
在周期4中,权值寄存器中所存数据与特征寄存器中所存数据均遇到端末标记,则此时两数据流均推进。此时,该PE已完成对该数据段的处理。
在周期5中,PE开始处理对下一数据段进行处理。
可以看到,通过对数据的偏移量与EOG进行简单比较,PE中的动态选择组件便能简单地从两输入数据流中选出需计算的数据对。因此,该压缩策略得以降低PE的设计复杂度、从而得以实现性能的提升。
以上运用具体实施例对本发明进行了进一步的阐释。需要指出的是,上述内容仅为本发明的具体实施例,而不应用于限制本发明。在本发明的思想之内的任何修改、替换、改进等都应在本发明的保护范围之内。
Claims (6)
1.一种应用于脉动阵列架构的神经网络处理器的稀疏向量压缩方法,其特征在于,包括如下步骤:
(1)按照给定的长度对向量中的元素进行分段;
(2)标注每一数据在段内的偏移值,具体为对段内元素xi,其偏移值记为N-i,xi为该段内的第i个元素,N为段内元素总数;
(3)判断段内的元素为非零元素或零元素;
(4)若段内无非零元素,则于该段中保留一个零元素以进行占位;若段中有非零元素,则移除段内所有的零元素;
(5)对段中的数据进行EOG标注;具体为对剩余元素中偏移值最大的元素标记为1,对其他元素标记为0;
所述压缩方法应用于脉动阵列架构的神经网络处理器,压缩后的向量送入处理器的计算单元中进行处理;具体地,所述脉动阵列架构的神经网络处理器包括存储单元、控制单元、汇流阵列、稀疏矩阵运算阵列和计算单元;其中所述存储单元用以存储神经网络权值、梯度、特征以及用于数据流调度的指令序列;所述控制单元与存储单元相连接,并依据指令序列的调度,从存储中获取所需数据,并将所述数据重整为矩阵运算的形式后经由汇流阵列桥接后送入到稀疏矩阵运算阵列以完成相应计算;
所述汇流阵列由多个汇流单元CE组成,每个汇流单元CE内部均包含局部存储器;并可从阵列外或相邻汇流单元CE接收数据;每一汇流单元CE可将接收到的数据暂存在内部缓存或输出到阵列之外;具体为,每个汇流单元CE包括阵列外输入端口C和阵列外输出端口D,以及与其余汇流单元CE的数据端口A和B,各汇流单元CE通过C端口接收由阵列外输入的数据;通过A与B端口与其余汇流单元CE进行数据交换;通过D端口将数据输出到阵列外;
所述计算单元接收稀疏矩阵运算阵列的计算结果,对其进一步完成非线性激活函数、池化操作以完成最终计算。
2.一种应用于脉动阵列架构的神经网络处理器的稀疏向量的压缩方法,其特征在于,包括如下步骤:
(1)按照给定的长度对向量中的元素进行分段;
(2)标注每一数据在段内的偏移值,具体为对段内元素xi,其偏移值记为i-1,xi为该段内的第i个元素;
(3)判断段内的元素为非零元素或零元素;
(4)若段内无非零元素,则于该段中保留第一个或任意一个零元素以进行占位;若段中有非零元素,则移除段内所有的零元素;
(5)对段中的数据进行EOG标注;具体为对剩余元素中偏移值最大的元素标记为1,对其他元素标记为0;
所述压缩方法应用于脉动阵列架构的神经网络处理器,压缩后的向量送入处理器的计算单元中进行处理;具体地,所述脉动阵列架构的神经网络处理器包括存储单元、控制单元、汇流阵列、稀疏矩阵运算阵列和计算单元;其中所述存储单元用以存储神经网络权值、梯度、特征以及用于数据流调度的指令序列;所述控制单元与存储单元相连接,并依据指令序列的调度,从存储中获取所需数据,并将所述数据重整为矩阵运算的形式后经由汇流阵列桥接后送入到稀疏矩阵运算阵列以完成相应计算;
所述汇流阵列由多个汇流单元CE组成,每个汇流单元CE内部均包含局部存储器;并可从阵列外或相邻汇流单元CE接收数据;每一汇流单元CE可将接收到的数据暂存在内部缓存或输出到阵列之外;具体为,每个汇流单元CE包括阵列外输入端口C和阵列外输出端口D,以及与其余汇流单元CE的数据端口A和B,各汇流单元CE通过C端口接收由阵列外输入的数据;通过A与B端口与其余汇流单元CE进行数据交换;通过D端口将数据输出到阵列外;
所述计算单元接收稀疏矩阵运算阵列的计算结果,对其进一步完成非线性激活函数、池化操作以完成最终计算。
3.一种应用于脉动阵列架构的神经网络处理器的稀疏向量的压缩方法,其特征在于,包括如下步骤:
(1)按照给定的长度对向量中的元素进行分段;
(2)标注每一数据在段内的偏移值,具体为对段内元素,采用顺序或逆序的方式标注偏移值;
(3)判断段内的元素为非零元素或零元素;
(4)若段内无非零元素,则于该段中保留第一个或任意一个零元素以进行占位;若段中有非零元素,则移除段内所有的零元素;
(5)对段中的数据进行EOG标注;具体为对剩余元素中偏移值最大的元素标记为1,对其他元素标记为0;
所述压缩方法应用于脉动阵列架构的神经网络处理器,压缩后的向量送入处理器的计算单元中进行处理;具体地,所述脉动阵列架构的神经网络处理器包括存储单元、控制单元、汇流阵列、稀疏矩阵运算阵列和计算单元;其中所述存储单元用以存储神经网络权值、梯度、特征以及用于数据流调度的指令序列;所述控制单元与存储单元相连接,并依据指令序列的调度,从存储中获取所需数据,并将所述数据重整为矩阵运算的形式后经由汇流阵列桥接后送入到稀疏矩阵运算阵列以完成相应计算;
所述汇流阵列由多个汇流单元CE组成,每个汇流单元CE内部均包含局部存储器;并可从阵列外或相邻汇流单元CE接收数据;每一汇流单元CE可将接收到的数据暂存在内部缓存或输出到阵列之外;具体为,每个汇流单元CE包括阵列外输入端口C和阵列外输出端口D,以及与其余汇流单元CE的数据端口A和B,各汇流单元CE通过C端口接收由阵列外输入的数据;通过A与B端口与其余汇流单元CE进行数据交换;通过D端口将数据输出到阵列外;
所述计算单元接收稀疏矩阵运算阵列的计算结果,对其进一步完成非线性激活函数、池化操作以完成最终计算。
4.一种应用于脉动阵列架构的神经网络处理器的稀疏矩阵的压缩方法,其特征在于,包括如下步骤:
(1)按照给定的长度对矩阵中的元素进行逐行或逐列分段,
(2)标注每一数据在段内的偏移值,具体为对段内元素xi,其偏移值记为N-i,xi为该段内的第i个元素,N为段内元素总数;
(3)判断段内的元素为非零元素或零元素;
(4)若段内无非零元素,则于该段中保留第一个或任意一个零元素以进行占位;若段中有非零元素,则移除段内所有的零元素;
(5)对段中的数据进行EOG标注;具体为对剩余元素中偏移值最大的元素标记为1,对其他元素标记为0;
所述压缩方法应用于脉动阵列架构的神经网络处理器,压缩后的矩阵送入处理器的计算单元中进行处理;具体地,所述脉动阵列架构的神经网络处理器包括存储单元、控制单元、汇流阵列、稀疏矩阵运算阵列和计算单元;其中所述存储单元用以存储神经网络权值、梯度、特征以及用于数据流调度的指令序列;所述控制单元与存储单元相连接,并依据指令序列的调度,从存储中获取所需数据,并将所述数据重整为矩阵运算的形式后经由汇流阵列桥接后送入到稀疏矩阵运算阵列以完成相应计算;
所述汇流阵列由多个汇流单元CE组成,每个汇流单元CE内部均包含局部存储器;并可从阵列外或相邻汇流单元CE接收数据;每一汇流单元CE可将接收到的数据暂存在内部缓存或输出到阵列之外;具体为,每个汇流单元CE包括阵列外输入端口C和阵列外输出端口D,以及与其余汇流单元CE的数据端口A和B,各汇流单元CE通过C端口接收由阵列外输入的数据;通过A与B端口与其余汇流单元CE进行数据交换;通过D端口将数据输出到阵列外;
所述计算单元接收稀疏矩阵运算阵列的计算结果,对其进一步完成非线性激活函数、池化操作以完成最终计算。
5.一种应用于脉动阵列架构的神经网络处理器的稀疏矩阵的压缩方法,其特征在于,包括如下步骤:
(1)按照给定的长度对矩阵中的元素进行逐行或逐列分段,
(2)标注每一数据在段内的偏移,具体为对段内元素xi,其偏移记为i-1,xi为该段内的第i个元素;
(3)判断段内的元素为非零元素或零元素;
(4)若段内无非零元素,则于该段中保留第一个或任意一个零元素以进行占位;若段中有非零元素,则移除段内所有的零元素;
(5)对段中的数据进行EOG标注;具体为对剩余元素中偏移值最大的元素标记为1,对其他元素标记为0;
所述压缩方法应用于脉动阵列架构的神经网络处理器,压缩后的矩阵送入处理器的计算单元中进行处理;具体地,所述脉动阵列架构的神经网络处理器包括存储单元、控制单元、汇流阵列、稀疏矩阵运算阵列和计算单元;其中所述存储单元用以存储神经网络权值、梯度、特征以及用于数据流调度的指令序列;所述控制单元与存储单元相连接,并依据指令序列的调度,从存储中获取所需数据,并将所述数据重整为矩阵运算的形式后经由汇流阵列桥接后送入到稀疏矩阵运算阵列以完成相应计算;
所述汇流阵列由多个汇流单元CE组成,每个汇流单元CE内部均包含局部存储器;并可从阵列外或相邻汇流单元CE接收数据;每一汇流单元CE可将接收到的数据暂存在内部缓存或输出到阵列之外;具体为,每个汇流单元CE包括阵列外输入端口C和阵列外输出端口D,以及与其余汇流单元CE的数据端口A和B,各汇流单元CE通过C端口接收由阵列外输入的数据;通过A与B端口与其余汇流单元CE进行数据交换;通过D端口将数据输出到阵列外;
所述计算单元接收稀疏矩阵运算阵列的计算结果,对其进一步完成非线性激活函数、池化操作以完成最终计算。
6.一种应用于脉动阵列架构的神经网络处理器的稀疏矩阵的压缩方法,其特征在于,包括如下步骤:
(1)按照给定的长度对矩阵中的元素进行逐行或逐列分段,
(2)标注每一数据在段内的偏移,具体为对段内元素xi,采用顺序或逆序的方式标注偏移值;
(3)判断段内的元素为非零元素或零元素;
(4)若段内无非零元素,则于该段中保留第一个或任意一个零元素以进行占位;若段中有非零元素,则移除段内所有的零元素;
(5)对段中的数据进行EOG标注;具体为对剩余元素中偏移值最大的元素标记为1,对其他元素标记为0;
所述压缩方法应用于脉动阵列架构的神经网络处理器,压缩后的矩阵送入处理器的计算单元中进行处理;具体地,所述脉动阵列架构的神经网络处理器包括存储单元、控制单元、汇流阵列、稀疏矩阵运算阵列和计算单元;其中所述存储单元用以存储神经网络权值、梯度、特征以及用于数据流调度的指令序列;所述控制单元与存储单元相连接,并依据指令序列的调度,从存储中获取所需数据,并将所述数据重整为矩阵运算的形式后经由汇流阵列桥接后送入到稀疏矩阵运算阵列以完成相应计算;
所述汇流阵列由多个汇流单元CE组成,每个汇流单元CE内部均包含局部存储器;并可从阵列外或相邻汇流单元CE接收数据;每一汇流单元CE可将接收到的数据暂存在内部缓存或输出到阵列之外;具体为,每个汇流单元CE包括阵列外输入端口C和阵列外输出端口D,以及与其余汇流单元CE的数据端口A和B,各汇流单元CE通过C端口接收由阵列外输入的数据;通过A与B端口与其余汇流单元CE进行数据交换;通过D端口将数据输出到阵列外;
所述计算单元接收稀疏矩阵运算阵列的计算结果,对其进一步完成非线性激活函数、池化操作以完成最终计算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910982345.4A CN110766136B (zh) | 2019-10-16 | 2019-10-16 | 一种稀疏矩阵与向量的压缩方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910982345.4A CN110766136B (zh) | 2019-10-16 | 2019-10-16 | 一种稀疏矩阵与向量的压缩方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110766136A CN110766136A (zh) | 2020-02-07 |
CN110766136B true CN110766136B (zh) | 2022-09-09 |
Family
ID=69331377
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910982345.4A Active CN110766136B (zh) | 2019-10-16 | 2019-10-16 | 一种稀疏矩阵与向量的压缩方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110766136B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113835754B (zh) * | 2021-08-26 | 2023-04-18 | 电子科技大学 | 主动稀疏化向量处理器 |
CN114416180B (zh) * | 2022-03-28 | 2022-07-15 | 腾讯科技(深圳)有限公司 | 向量数据的压缩方法、向量数据的解压方法、装置及设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103336758A (zh) * | 2013-06-29 | 2013-10-02 | 中国科学院软件研究所 | 一种稀疏矩阵的存储方法CSRL及基于该方法的SpMV实现方法 |
CN107273094A (zh) * | 2017-05-18 | 2017-10-20 | 中国科学院软件研究所 | 一种适应于“神威·太湖之光”上hpcg优化的数据结构及其高效实现方法 |
CN109255429A (zh) * | 2018-07-27 | 2019-01-22 | 中国人民解放军国防科技大学 | 一种用于稀疏神经网络模型的参数解压方法 |
CN109726314A (zh) * | 2019-01-03 | 2019-05-07 | 中国人民解放军国防科技大学 | 基于位图的稀疏矩阵压缩存储方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10572568B2 (en) * | 2018-03-28 | 2020-02-25 | Intel Corporation | Accelerator for sparse-dense matrix multiplication |
-
2019
- 2019-10-16 CN CN201910982345.4A patent/CN110766136B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103336758A (zh) * | 2013-06-29 | 2013-10-02 | 中国科学院软件研究所 | 一种稀疏矩阵的存储方法CSRL及基于该方法的SpMV实现方法 |
CN107273094A (zh) * | 2017-05-18 | 2017-10-20 | 中国科学院软件研究所 | 一种适应于“神威·太湖之光”上hpcg优化的数据结构及其高效实现方法 |
CN109255429A (zh) * | 2018-07-27 | 2019-01-22 | 中国人民解放军国防科技大学 | 一种用于稀疏神经网络模型的参数解压方法 |
CN109726314A (zh) * | 2019-01-03 | 2019-05-07 | 中国人民解放军国防科技大学 | 基于位图的稀疏矩阵压缩存储方法 |
Non-Patent Citations (2)
Title |
---|
"基于稀疏矩阵并行算法的混合调度模型研究";孙涛;《中国优秀博硕士学位论文全文数据库(硕士) 信息科技辑》;20180615;第19页 * |
"面向定制结构的稀疏矩阵分块方法";邬贵明;《计算机科学》;20151115;第42卷(第11期);第64页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110766136A (zh) | 2020-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110705703B (zh) | 基于脉动阵列的稀疏神经网络处理器 | |
CN109063825B (zh) | 卷积神经网络加速装置 | |
CN108805266B (zh) | 一种可重构cnn高并发卷积加速器 | |
US10810484B2 (en) | Hardware accelerator for compressed GRU on FPGA | |
US10698657B2 (en) | Hardware accelerator for compressed RNN on FPGA | |
CN107704916B (zh) | 一种基于fpga实现rnn神经网络的硬件加速器及方法 | |
CN110851779B (zh) | 用于稀疏矩阵运算的脉动阵列架构 | |
US20180046895A1 (en) | Device and method for implementing a sparse neural network | |
CN107256424B (zh) | 三值权重卷积网络处理***及方法 | |
CN110543939B (zh) | 一种基于fpga的卷积神经网络后向训练的硬件加速实现装置 | |
CN110210615B (zh) | 一种用于执行神经网络计算的脉动阵列*** | |
CN112668708B (zh) | 一种提高数据利用率的卷积运算装置 | |
CN112199636B (zh) | 适用于微处理器的快速卷积方法及装置 | |
CN112257844B (zh) | 一种基于混合精度配置的卷积神经网络加速器及其实现方法 | |
CN112836813B (zh) | 一种用于混合精度神经网络计算的可重构脉动阵列*** | |
CN110766128A (zh) | 卷积计算单元、计算方法及神经网络计算平台 | |
CN110580519B (zh) | 一种卷积运算装置及其方法 | |
CN110766136B (zh) | 一种稀疏矩阵与向量的压缩方法 | |
EP4318275A1 (en) | Matrix multiplier and method for controlling matrix multiplier | |
CN111340198A (zh) | 基于fpga的数据高度复用的神经网络加速器 | |
CN114003201A (zh) | 矩阵变换方法、装置及卷积神经网络加速器 | |
CN210295181U (zh) | 一种用于执行神经网络计算的脉动阵列***及处理设备 | |
CN110764602B (zh) | 用于降低存储开销的汇流阵列 | |
CN115496190A (zh) | 一种面向卷积神经网络训练的高效可重构硬件加速器 | |
JP6888073B2 (ja) | チップ装置および関連製品 |
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 |