CN115828044B - 基于神经网络双重稀疏性矩阵乘法运算电路、方法和装置 - Google Patents
基于神经网络双重稀疏性矩阵乘法运算电路、方法和装置 Download PDFInfo
- Publication number
- CN115828044B CN115828044B CN202310126876.XA CN202310126876A CN115828044B CN 115828044 B CN115828044 B CN 115828044B CN 202310126876 A CN202310126876 A CN 202310126876A CN 115828044 B CN115828044 B CN 115828044B
- Authority
- CN
- China
- Prior art keywords
- data
- matrix
- sparse
- vector
- fifo
- 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
-
- 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
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本申请公开一种基于神经网络双重稀疏性矩阵乘法运算电路、方法和装置,包括主控制器、矩阵计算阵列、数据输入输出缓存单元、存储器;矩阵计算阵列根据程序指令接收输入矩阵或向量数据,执行对应的计算;所述矩阵计算阵列包含若干个PE计算单元,用于执行具体乘累加、池化、激活运算;所述矩阵计算阵列根据预设程序或配置指令,将矩阵数据分解为向量段,发送至对应的所述PE计算单元执行。本申请能够降低内存空间消耗、提高访存读写效率及缓存命中率,从而提高AI处理器的计算效率。
Description
技术领域
本申请涉及神经网络技术领域,具体地涉及基于神经网络双重稀疏性矩阵乘法运算电路、方法和装置。
背景技术
首先,现有技术在神经网络加速运算过程中,加速器单元顺序从内存单元中读取数据,而且,图像或者特征图在内存中的存贮按照预设规则存贮,而神经网络的运算是通过滑窗操作以此对图像取数,此时加速器读取的数据在图像上是不连续的,即从内存行中数据是不连续的,而我们知道,指令索址阶段跨行索址在时间和功耗方面都会提高,同时缓存命中率也会大大降低,不利于AI处理器对数据加速处理; 同时在神经网络滑窗运算过程中,滑窗部分数据以及各输入通道的数据会被重新利用,而传统加速计算过程中未能很好的利用可重复数据,这就进步一提高的内存与处理器计算内核之间的带宽和资源占用;
其次,卷积神经网络具有卷积核和激活输出双重稀疏性,大量的零元素占用了大量的内存空间,同时无效的零运算降低了加速器芯片的运算效率;
并且,嵌入式AIOT设备内存空间较为紧张,在神经网络推理运算时需要存储当前计算节点的激活、权重等相关依赖数据,因此亟需减少神经网络在模型推理时的内存消耗。现有的一种方案是在神经网络的模型推理过程中采用动态分配内存的方法,根据每个计算节点生命周期所需内存大小动态分配内存块,该方法可以减少大量内存消耗,但是需要在每一次推理过程中频繁的分配和释放内存空间,不可避免地影响到模型推理时的执行效率,增加了模型推理的时间消耗,同时常见的内存分配算(FirstFit/BestFit等)会造成内存碎片化问题。有的方法是根据各计算节点生命周期所需内存容量的下限静态的分配内存,然后基于每个计算节点生命周期动态分配内存空间,但这种方法融合造成个计算节点间的内存间隙。三是基于每个计算节点激活输出的稀疏性质对其进行压缩,从而减少存储空间,但是当前针对稀疏激活压缩的物理电路具体实现效率低下,灵活性不足,尤其针对长向量或者大矩阵的稀疏数据压缩比较低,同时目前大部分的稀疏压缩均是基于CPU实现,压缩效率低下,无法满足神经网络推理计算的实时性要求。
本背景技术描述的内容仅为了便于了解本领域的相关技术,不视作对现有技术的承认。
发明内容
因此,本发明实施例意图提供基于神经网络双重稀疏性矩阵乘法运算电路、方法和装置。
在第一方面,本发明实施例提供了基于神经网络双重稀疏性矩阵乘法运算电路,包括:主控制器、矩阵计算阵列、数据输入输出缓存单元、存储器;
主控制器,用于执行程序指令;
数据输入输出缓存单元,用于缓存卷积核权重编码数据、特征编码数据;
存储器,用于存储程序和数据;
所述矩阵计算阵列根据程序指令接收输入矩阵或向量数据,执行对应的计算;所述矩阵计算阵列包含若干个PE计算单元,用于执行具体乘累加、池化、激活运算;所述矩阵计算阵列根据预设程序或配置指令,将矩阵数据分解为向量段,发送至对应的所述PE计算单元执行。
在其中一个实施例中,所述矩阵计算阵列对卷积核及激活输出数据进行重排,最大限度实现内存行内搜索。
在其中一个实施例中,所述电路采用预设稀疏编码规则对稀疏卷积核进行压缩,所述存储器只存储非零元素及其索引位置的编码信息。
在其中一个实施例中,所述电路还包括专用稀疏激活压缩编码电路,所述专用稀疏激活压缩编码电路对计算节点的稀疏激活特征输出进行压缩编码处理。
在其中一个实施例中,所述电路还包括非稀疏权重编码数据缓存队列单元,用于接收缓存输入的非稀疏权重向量编码数据,所述非稀疏权重编码数据缓存队列单元判断所述非稀疏权重向量编码数据的存储格式配置为双FIFO模式还是单FIFO模式,若所述非稀疏权重向量编码数据的存储格式配置为双FIFO模式,则一个FIFO存储权重数据,另一个FIFO存储对应权重数据的位置编码信息;若所述非稀疏权重向量编码数据的存储格式配置为单FIFO模式,则每个FIFO存储单元格中存储权重数据和位置编码信息。
在其中一个实施例中,所述电路还包括解码器,所述解码器将权重数据和位置编码数据分离,其中所述位置编码信息用于计算非零权重对应特征数据的位置。
在其中一个实施例中,所述PE计算单元至少包括第一解码器和第二解码器,所述第二解码器通过位置选择信号,从解压后的稀疏特征激活向量中选择输出与非零权重对应的特征激活数据,所述第一解码器根据位置选择信号将压缩的特征激活数据解压为稀疏特征激活向量,所述稀疏特征激活向量为第二解码器的输入。
在第二方面,本发明实施例提供了基于神经网络双重稀疏性矩阵乘法运算方法,包括:
根据程序指令接收输入矩阵或向量数据,执行对应的计算;
执行具体乘累加、池化、激活运算;
根据预设程序或配置指令,将矩阵数据分解为向量段,发送至对应的PE计算单元执行。
在其中一个实施例中,包括:
对卷积核及激活输出数据进行重排,最大限度实现内存行内搜索。
在第三方面,本发明实施例提供了基于神经网络双重稀疏性矩阵乘法运算装置,包括:
第一模块,用于根据程序指令接收输入矩阵或向量数据,执行对应的计算;
第二模块,用于执行具体乘累加、池化、激活运算;
第三模块,用于根据预设程序或配置指令,将矩阵数据分解为向量段,发送至对应的PE计算单元执行。
本发明实施例使用的基于神经网络双重稀疏性矩阵乘法运算电路、方法和装置,能够避免跨行搜索,提高缓存命中率,使得特征向量与权重向量更高效的执行矩阵乘法运算,通过专用稀疏激活压缩编码电路对其进行压缩编码处理,只存储非零特征元素及对应的位置编码信息,进一步降低内存占用。
本发明实施例的其他可选特征和技术效果一部分在下文描述,一部分可通过阅读本文而明白。
附图说明
以下,结合附图来详细说明本发明的实施例,所示出的元件不受附图所显示的比例限制,附图中相同或相似的附图标记表示相同或类似的元件,其中:
图1示出了根据本发明实施例的基于神经网络双重稀疏性矩阵乘法运算电路的稀疏激活编码器的示意图;
图2示出了根据本发明实施例的第一解码器架构原理图;
图3示出了根据本发明实施例的稀疏权重向量数据压缩编码原理图;
图4示出了根据本发明实施例的第二解码器架构原理图;
图5示出了根据本发明实施例的第二解码器互联交换网络架构原理图;
图6示出了根据本发明实施例的稀疏激活压缩解码步骤流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合具体实施方式和附图,对本发明做进一步详细说明。在此,本发明的示意性实施方式及其说明用于解释本发明,但并不作为对本发明的限定。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
首先,现有技术在神经网络加速运算过程中,加速器单元顺序从内存单元中读取数据,而且,图像或者特征图在内存中的存贮按照预设规则存贮,而神经网络的运算是通过滑窗操作以此对图像取数,此时加速器读取的数据在图像上是不连续的,即从内存行中数据是不连续的,而我们知道,指令索址阶段跨行索址在时间和功耗方面都会提高,同时缓存命中率也会大大降低,不利于AI处理器对数据加速处理; 同时在神经网络滑窗运算过程中,滑窗部分数据以及各输入通道的数据会被重新利用,而传统加速计算过程中未能很好的利用可重复数据,这就进步一提高的内存与处理器计算内核之间的带宽和资源占用;
其次,卷积神经网络具有卷积核和激活输出双重稀疏性,大量的零元素占用了大量的内存空间,同时无效的零运算降低了加速器芯片的运算效率;
并且,嵌入式AIOT设备内存空间较为紧张,在神经网络推理运算时需要存储当前计算节点的激活、权重等相关依赖数据,因此亟需减少神经网络在模型推理时的内存消耗。现有的一种方案是在神经网络的模型推理过程中采用动态分配内存的方法,根据每个计算节点生命周期所需内存大小动态分配内存块,该方法可以减少大量内存消耗,但是需要在每一次推理过程中频繁的分配和释放内存空间,不可避免地影响到模型推理时的执行效率,增加了模型推理的时间消耗,同时常见的内存分配算(FirstFit/BestFit等)会造成内存碎片化问题。有的方法是根据各计算节点生命周期所需内存容量的下限静态的分配内存,然后基于每个计算节点生命周期动态分配内存空间,但这种方法融合造成个计算节点间的内存间隙。三是基于每个计算节点激活输出的稀疏性质对其进行压缩,从而减少存储空间,但是当前针对稀疏激活压缩的物理电路具体实现效率低下,灵活性不足,尤其针对长向量或者大矩阵的稀疏数据压缩比较低,同时目前大部分的稀疏压缩均是基于CPU实现,压缩效率低下,无法满足神经网络推理计算的实时性要求。
为了解决上述问题,本申请提出了一种基于神经网络双重稀疏性矩阵乘法运算电路、方法和装置。
在卷积神经网络计算具体实现时,需将卷积运算转换为矩阵乘法运算以便于神经网络加速器并行计算能力被高效利用,但在实际计算过程中受数据结构、读写方式、存储空间大小、通信带宽等诸多方面因素影响很难实现理想的高效卷积加速,因此为获得接近最佳的卷积神经网络加速计算性能,需要在宏观层面上对操作进行分层、对数据进行重新排列,并在微观层面上设计高性能内核。改进1:设计了一种基于神经网络双重稀疏性的矩阵乘法运算电路架构;改进2:对推理过程中的卷积核及激活输出数据进行重排,使其最大限度实现内存行内搜索,避免跨行搜索,提高缓存命中率,同时通过预取技术进一步提高数据处理效率;进一步的对于部分输入特征图通道大于某一阈值的卷积核(输入特征图通道数等于卷积核维度),在卷积核展开成向量形式后,就会出现权重数据构成的宽远远少于其对应的高度(举例来说:对于一个大小为32×3×3的卷积核,有32个维度,每个维度展开后的权重向量长度为9,而高度为32,……),在对其重排后使得特征向量与权重向量跟高效的执行矩阵乘法运算;改进3:对于稀疏卷积核采用预设稀疏编码规则进行压缩,只存储非零元素及其索引位置编码信息(对于神经网络推理计算,卷积核的结构性是确定的,只需要在编译初始化时对其编码即可,因此不会引入额外计算);对于每个计算节点的稀疏激活特征输出,通过专用稀疏激活压缩编码电路对其进行压缩编码处理,只存储非零特征元素及对应的位置编码信息,进一步降低内存占用;改进4:基于神经网络推理时各计算节点内存空间需求属性(节点依赖数据的计算生命周期、数据大小、数据稀疏性等),采用动静结合的内存分配方式,减少内存消耗;
上述4点改进相互依存,互为补充,首先改进点1是后续各改进的物理实行,基于卷积神经网络权重及激活输出的稀疏性对其进行压缩处理,并对中间计算输出结果重排,最后采用动静结合的内存分配方式,降低内存空间消耗、提高访存读写效率及缓存命中率,从而提高AI处理器的计算效率。
本申请提出的基于神经网络双重稀疏性矩阵乘法运算电路,包括主控制器、矩阵计算阵列、数据输入输出缓存单元、存储器;主控制器,用于执行程序指令;数据输入输出缓存单元,用于缓存卷积核权重编码数据、特征编码数据;存储器,用于存储程序和数据;所述矩阵计算阵列根据程序指令接收输入矩阵或向量数据,执行对应的计算;所述矩阵计算阵列包含若干个PE计算单元,用于执行具体乘累加、池化、激活运算;所述矩阵计算阵列根据预设程序或配置指令,将矩阵数据分解为向量段,发送至对应的所述PE计算单元执行。此外,本实施例还包括总线,用各单元间通信。
其中,所述矩阵计算阵列对卷积核及激活输出数据进行重排,最大限度实现内存行内搜索。
本申请的电路采用预设稀疏编码规则对稀疏卷积核进行压缩,所述存储器只存储非零元素及其索引位置的编码信息。
如图1所示,本实施例的稀疏激活编码器包括非稀疏权重编码数据缓存队列单元(FIFO),用于接收缓存输入的非稀疏权重向量编码数据,其中:该FIFO可根具权重编码数据的存储格式配置为双FIFO模式或单FIFO模式;其中双FIFO模式,一个FIFO存储权重数据,另一个FIFO存储对应权重数据的位置编码信息;若单FIFO,则每个FIFO存储单元格中存储权重数据+位置编码信息,在计算时可通过解码器将权重数据和位置编码数据分离,其中位置编码信息用于计算非零权重对应特征数据的位置。同理由于特征数据也是经过编码压缩后的数据,因此亦可通过设置不同的FIFO模式将数据载入至PE中,其中图2示例中特征数据经过压缩处理被编码为特征数据+位置编码信息的存储格式,经过数据解码器可将特征数据和位置编码信息分离,并通过下述的第一解码器基于位置编码信息将特征数据解压还原,并输出稀疏特征向量数据。
本发明实施例使用的基于神经网络双重稀疏性矩阵乘法运算电路、方法和装置,能够避免跨行搜索,提高缓存命中率,使得特征向量与权重向量更高效的执行矩阵乘法运算,通过专用稀疏激活压缩编码电路对其进行压缩编码处理,只存储非零特征元素及对应的位置编码信息,进一步降低内存占用。
需要说明的是,经过压缩编码后的权重数据和特征数数据为不定长状态,尤其特征数据,不同原始输入在各计算节点输出、重排、向量化、及压缩后长短不一,因此在加载至FIFO中的数据按原始向量所在的数组长度加载,由于压缩原因导致的空闲FIFO存储单元格可对其进行屏蔽或者零填充处理,从而使得其在整个计算过程中权重向量数据和对应的特征向量数据能够对齐,从而减少基于来自软件程序控制的复杂度。
可选的,每个PE可包含多个乘累加器,用于接收并行输入的多个非零权重数据与对应特征数据执行并行向量乘加计算,基于此上述FIFO则可通过串并转换实现并行输出;多个PE可执行多个向量数据间的乘累加运算,从而实现前述所说的矩阵乘法运算,相关输出结果经过其他计算节点处理输出重排后,生成卷积运算的结果,并对其激活输出的特征向量数据进行压缩编码处理,从而减少存储空间。
例如,PE计算单元至少包括第一解码器和第二解码器,所述第二解码器通过位置选择信号,从解压后的稀疏特征激活向量中选择输出与非零权重对应的特征激活数据,所述第一解码器根据位置选择信号将压缩的特征激活数据解压为稀疏特征激活向量,所述稀疏特征激活向量为第二解码器的输入。
此外,本实施例的所述电路还包括至少两个解码器,所述解码器将权重数据和位置编码数据分离,其中所述位置编码信息用于计算非零权重对应特征数据的位置。
图2示出了根据本发明实施例的第一解码器架构原理图,如图2所示,第一解码器,用于解压特征编码数据;其中第一解码器接收来自非稀疏特征编码数据缓存队列单元(FIFO)的位置编码信息和对应的非零激活特征数据,经过第一解码器解码后将非零激活数据解压还原为稀疏向量数据,并作为第二解码器的输入数据,然后通过对应权重向量中非零权重的第一位置信息作为选择信号输出至乘累加器中,执行向量乘法运算。
图3为稀疏权重向量数据压缩编码原理图,图4示出了根据本发明实施例的第二解码器架构原理图,如图3和图4所示,第二解码器包括多个级联加法器、多路复用器MUX;具体包括,编码器的级联加法器接收非稀疏权重编码数据缓存队列单元(FIFO)的位置编码数据,经过级联加法运算后输出权重数据在权重向量中的对应第一位置信息,然后将该第一位置信息作为选择信号,通过MUX从对应解压后的稀疏特征数据向量中选择输出对应的特征数据,作为乘累加器的特征输入数据。
对比来看,第一解码器和第二解码器架构上有些类似,不同的是第二解码器通过位置选择信号,从还解压原后的稀疏特征激活向量中选择输出与非零权重对应的特征激活数据,而第一解码器是基于第二位置选择信号将压缩的特征激活数据进行解压为稀疏特征激活向量,作为第二解码器的输入;具体的第二解码器通过MUX完成数据选择输出,第一解码器通过级联的加法器解码还原出压缩的非零激活数据在原稀疏激活向量数据中的第二位置信息,并将其作为选择信号通过一个互联交换网络实现解码处理。
需要说明的是,本说明书仅列举两个编码器的情况,不对编码器的数量构成不当限定,即本申请的编码器可以包含第一编码器、第二编码器、第三编码器等多种数量。
可选地,本实施例的电路还包括专用稀疏激活压缩编码电路,所述专用稀疏激活压缩编码电路对计算节点的稀疏激活特征输出进行压缩编码处理。
可选地,本实施例的电路还包括非稀疏权重编码数据缓存队列单元,用于接收缓存输入的非稀疏权重向量编码数据,所述非稀疏权重编码数据缓存队列单元判断所述非稀疏权重向量编码数据的存储格式配置为双FIFO模式还是单FIFO模式,若所述非稀疏权重向量编码数据的存储格式配置为双FIFO模式,则一个FIFO存储权重数据,另一个FIFO存储对应权重数据的位置编码信息;若所述非稀疏权重向量编码数据的存储格式配置为单FIFO模式,则每个FIFO存储单元格中存储权重数据和位置编码信息。
图5为第二解码器互联交换网络架构原理图,如图5所示,互联交换网络功能主要用于根据激活数据的位置编码解码后的第二位置信息作为控制信号,将待解压的非激活数据通过端口映射,分别映射到原稀疏激活向量中对应的端口位置。
举例来说,非零激活数据A的位置编码为2,其经过级联加法器解码后的第二位置为信息2,表示其原位置位于稀疏激活向量的第二个位置,现A元素位于端口1,因此需要通过互联网络通过端口映射将A元素从端口1映射到输出端口2;同理元素D的位置编码为2,经过级联加法器解码后的第二位置为8,表示其原位置位于稀疏激活向量的第8的位置,因此需要通过互连网络通过端口映射将D元素从端口4映射到出处端口8。经过上述过程实现压缩激活数据的解压,对应无数据的映射输出的端口采用零填充或屏蔽即可。
本实施例的互联交换网络具体实现过程包括:首先将第二位置信息作为选择信号,经过第一译地址码器生成输出端口选择信号,使能对应的多路选择器,然后将非零元素FIFO输出端口编号通过第二译码器生成输入端口选择信号,通过上述输入、输出端口信号,使能对应的多路输出选择器输出对应输入端口选择信号对应的数据。距离来说对于元素B,其输入端口选择信号为2、输出端口选择信号为5,因此首先使能输出端口为5的多路选择器,然后基于输入端口选择信号2使能对应数据通路,从而完成数据解压;进一步的可通过时分复用的方式完成端口映射控制或通过在输入输出端口设置FIFO队列实现异步端口映射功能。
可选的,在另一种实现方式中,可以通过采用双端口RAM存储器寻址的方式实现数据输入输出端口映射功能,即首先读取压缩数据对应的位置编码经过解码后获得对应的压缩数据的转移存储地址信息作为第二位置的地址信息,将压缩数据从原地址转存至转移存储地址然后读出,并输入至第二解码器;
需要说明的是,第一解码器和第二解码器中的级联加法器可以共享复用(即只使用一个级联加法器完成第一解码器和第二解码器第一位置信息和第二位置信息的解码工作),主要是因为在神经网络推理计算过程中权重的结构是固定的,只需要在初始化时通过级联加法器完成原第一位置信息解码即可,因此本发明附图中第一解码器和第二解码器均设置级联加法器,只是为了跟好的理解本发明具体实现过程。
同时需要说明的是,在一般的实际计算过程中特征数据和权重数据为长向量,若采用直接位置编码的方法(即直接记录非零元素在向量数组中的位置,会降低压缩效率,如对于长度为1024位的数组,第1000、1008、第1024位为非零元素,之间均为零元素,若采用直接位置编码,则该非零元素的位置编码信息为1000、1008、1024,需要10位二进制编码来实现,若采用本发明方案只需要记录该非零元素与前一非零元素之间的零间隔数据即可,即1008位的位置编码为8,1024位的位置编码为16,只需要4位二进制编码即可实现,因此本发明的编码方式可大大减少因额外存储位置编码信息带来的存储空间消耗。
经过矩阵计算阵列计算后,经过数据重排,可获得稀疏的特征矩阵数据;若直接存储稀疏特征矩阵则会消耗大量的存储空间,因此本发明通过设置稀疏激活编码器,对输出的特征矩阵激活数据按照预设向量长度进行编码压缩。本申请的稀疏激活压缩编码单元包括:
(1)稀疏激活队列(FIFO):用于装载稀疏的特征矩阵向量数据。
零检测器(多输或门阵列):用于检测数据是否为“零”,零检测器可以由或门阵列构成,用于对输入的二进制数据各位进行或运算,若输入为零则输出0,若输入非零,则输出1;并将其输出作为控制信号用于筛选非零数据。
(2)“0”计数器:用于在有效的计数周期内统计零数据个数COUNT_0,且默认初始值COUNT_0=1,即若在连续周期内统计的零个数为2,则计数器实际输出值为COUNT_0=3,作为当前非零元素的位置编码。
(3)延时位寄存器1:用于缓存前一周期零检测器输出状态。
(4)异或门:用于接收零检测器前后周期输出状态位数据,若零检测器前后周期输出状态未发生反转,则说明当前输出的是连续零或者连续非零数据;若发生反转则说明当前输出由非零数据变为零数据,或由零变为非零数据;其中异或门输出状态信号为“0”时,表示前后状态未翻转,为“1”时前后状态发生翻转。
(5)数据选择器(MUX1、MUX2):如图6所示,MUX1根据零检测器的输出状态信号选择数据通路;若输出状态信号为1,则说明当前的输入数据为非零元素,则控制MUX1数据通路使得非零元素输出至非零激活缓存队列(FIFO);若若输出状态信号为0,则说明当前的输入数据为零元素,则控制数据通路使得“0”输出至“0”计数器;MUX2根据零检测器信号状态判断是否输出当前计数器值;当控制信号为1时,则将当前计数器中的值COUNT_0作为位置编码;其中对于连续的非零元素,每个周期均输出1作为各连续非零元素的位置编码(因为连续非零元素间的“0”数量为0);若控制信号为0,则当前的输入元素为零,并由计数器加一,直至输入数据为非零元素,即控制信号变为1,时将以前若干周期同的零个数COUNT_0作为当前非零元素的位置编码;并对计数器清零。
此外,本申请还提供了一种基于神经网络双重稀疏性矩阵乘法运算方法,包括:根据程序指令接收输入矩阵或向量数据,执行对应的计算;执行具体乘累加、池化、激活运算;根据预设程序或配置指令,将矩阵数据分解为向量段,发送至对应的PE计算单元执行。
本实施例的方法还包括对卷积核及激活输出数据进行重排,最大限度实现内存行内搜索。
此外,本申请还提供了一种基于神经网络双重稀疏性矩阵乘法运算装置,包括:
第一模块,用于根据程序指令接收输入矩阵或向量数据,执行对应的计算;
第二模块,用于执行具体乘累加、池化、激活运算;
第三模块,用于根据预设程序或配置指令,将矩阵数据分解为向量段,发送至对应的PE计算单元执行。
上述实施例阐明的系统、装置、模块或单元,可以由计算机或其关联部件实现。计算机例如可以为移动终端、智能电话、个人计算机、膝上型计算机、车载人机交互设备、个人数字助理、媒体播放器、导航设备、游戏控制台、平板电脑、可穿戴设备、智能电视、物联网系统、智能家居、工业计算机、服务器或者其组合。
尽管未示出,在本发明实施例中,提供一种存储介质,所述存储介质存储有计算机程序,所述计算机程序配置成被运行时执行任一本发明实施例的基于文件差异的编译方法。
在本发明的实施例的方法、程序、系统、装置等,可以在单个或多个连网的计算机中执行或实现,也可以在分布式计算环境中实践。在本说明书实施例中,在这些分布式计算环境中,可以由通过通信网络而被连接的远程处理设备来执行任务。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本领域技术人员可想到,上述实施例阐明的功能模块/单元或控制器以及相关方法步骤的实现,可以用软件、硬件和软/硬件结合的方式实现。
除非明确指出,根据本发明实施例记载的方法、程序的动作或步骤并不必须按照特定的顺序来执行并且仍然可以实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本文中,针对本发明的多个实施例进行了描述,但为简明起见,各实施例的描述并不是详尽的,各个实施例之间相同或相似的特征或部分可能会被省略。在本文中,“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”意指适用于根据本发明的至少一个实施例或示例中,而非所有实施例。上述术语并不必然意味着指代相同的实施例或示例。在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
已参考上述实施例具体示出并描述了本发明的示例性系统及方法,其仅为实施本系统及方法的最佳模式的示例。本领域的技术人员可以理解的是可以在实施本系统及/或方法时对这里描述的系统及方法的实施例做各种改变而不脱离界定在所附权利要求中的本发明的精神及范围。
Claims (9)
1.基于神经网络双重稀疏性矩阵乘法运算电路,其特征在于,包括主控制器、矩阵计算阵列、数据输入输出缓存单元、存储器;
主控制器,用于执行程序指令;
数据输入输出缓存单元,用于缓存卷积核权重编码数据、特征编码数据;
存储器,用于存储程序和数据;
所述矩阵计算阵列根据程序指令接收输入矩阵或向量数据,执行对应的计算;所述矩阵计算阵列包含若干个PE计算单元,用于执行具体乘累加、池化、激活运算;所述矩阵计算阵列根据预设程序或配置指令,将矩阵数据分解为向量段,发送至对应的所述PE计算单元执行;
还包括非稀疏权重编码数据缓存队列单元,用于接收缓存输入的非稀疏权重向量编码数据,所述非稀疏权重编码数据缓存队列单元判断所述非稀疏权重向量编码数据的存储格式配置为双FIFO模式还是单FIFO模式,若所述非稀疏权重向量编码数据的存储格式配置为双FIFO模式,则一个FIFO存储权重数据,另一个FIFO存储对应权重数据的位置编码信息;若所述非稀疏权重向量编码数据的存储格式配置为单FIFO模式,则每个FIFO存储单元格中存储权重数据和位置编码信息。
2.根据权利要求1所述的基于神经网络双重稀疏性矩阵乘法运算电路,其特征在于,所述矩阵计算阵列对卷积核及激活输出数据进行重排,最大限度实现内存行内搜索。
3.根据权利要求1所述的基于神经网络双重稀疏性矩阵乘法运算电路,其特征在于,所述电路采用预设稀疏编码规则对稀疏卷积核进行压缩,所述存储器只存储非零元素及其索引位置的编码信息。
4.根据权利要求1所述的基于神经网络双重稀疏性矩阵乘法运算电路,其特征在于,所述电路还包括专用稀疏激活压缩编码电路,所述专用稀疏激活压缩编码电路对计算节点的稀疏激活特征输出进行压缩编码处理。
5.根据权利要求4所述的基于神经网络双重稀疏性矩阵乘法运算电路,其特征在于,所述电路还包括解码器,所述解码器将权重数据和位置编码数据分离,其中所述位置编码信息用于计算非零权重对应特征数据的位置。
6.根据权利要求1所述的基于神经网络双重稀疏性矩阵乘法运算电路,其特征在于,所述PE计算单元至少包括第一解码器和第二解码器,所述第二解码器通过位置选择信号,从解压后的稀疏特征激活向量中选择输出与非零权重对应的特征激活数据,所述第一解码器根据位置选择信号将压缩的特征激活数据解压为稀疏特征激活向量,所述稀疏特征激活向量为第二解码器的输入。
7.基于神经网络双重稀疏性矩阵乘法运算方法,其特征在于,包括:
根据程序指令接收输入矩阵或向量数据,执行对应的计算;
执行具体乘累加、池化、激活运算;
根据预设程序或配置指令,将矩阵数据分解为向量段,发送至对应的PE计算单元执行;
还包括接收缓存输入的非稀疏权重向量编码数据判断所述非稀疏权重向量编码数据的存储格式配置为双FIFO模式还是单FIFO模式,若所述非稀疏权重向量编码数据的存储格式配置为双FIFO模式,则一个FIFO存储权重数据,另一个FIFO存储对应权重数据的位置编码信息;若所述非稀疏权重向量编码数据的存储格式配置为单FIFO模式,则每个FIFO存储单元格中存储权重数据和位置编码信息。
8.根据权利要求7所述的基于神经网络双重稀疏性矩阵乘法运算方法,其特征在于,包括:
对卷积核及激活输出数据进行重排,最大限度实现内存行内搜索。
9.基于神经网络双重稀疏性矩阵乘法运算装置,其特征在于,包括:
第一模块,用于根据程序指令接收输入矩阵或向量数据,执行对应的计算;
第二模块,用于执行具体乘累加、池化、激活运算;
第三模块,用于根据预设程序或配置指令,将矩阵数据分解为向量段,发送至对应的PE计算单元执行;
第四模块,用于接收缓存输入的非稀疏权重向量编码数据判断所述非稀疏权重向量编码数据的存储格式配置为双FIFO模式还是单FIFO模式,若所述非稀疏权重向量编码数据的存储格式配置为双FIFO模式,则一个FIFO存储权重数据,另一个FIFO存储对应权重数据的位置编码信息;若所述非稀疏权重向量编码数据的存储格式配置为单FIFO模式,则每个FIFO存储单元格中存储权重数据和位置编码信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310126876.XA CN115828044B (zh) | 2023-02-17 | 2023-02-17 | 基于神经网络双重稀疏性矩阵乘法运算电路、方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310126876.XA CN115828044B (zh) | 2023-02-17 | 2023-02-17 | 基于神经网络双重稀疏性矩阵乘法运算电路、方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115828044A CN115828044A (zh) | 2023-03-21 |
CN115828044B true CN115828044B (zh) | 2023-05-19 |
Family
ID=85521676
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310126876.XA Active CN115828044B (zh) | 2023-02-17 | 2023-02-17 | 基于神经网络双重稀疏性矩阵乘法运算电路、方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115828044B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117421112B (zh) * | 2023-10-18 | 2024-08-06 | 中科驭数(北京)科技有限公司 | 加速单元、网卡、主机和报文处理加速方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110705703A (zh) * | 2019-10-16 | 2020-01-17 | 北京航空航天大学 | 基于脉动阵列的稀疏神经网络处理器 |
US11500962B1 (en) * | 2020-06-30 | 2022-11-15 | Amazon Technologies, Inc. | Emulating fine-grained sparsity in a systolic array |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107229967B (zh) * | 2016-08-22 | 2021-06-15 | 赛灵思公司 | 一种基于fpga实现稀疏化gru神经网络的硬件加速器及方法 |
CN107239823A (zh) * | 2016-08-12 | 2017-10-10 | 北京深鉴科技有限公司 | 一种用于实现稀疏神经网络的装置和方法 |
CN107239824A (zh) * | 2016-12-05 | 2017-10-10 | 北京深鉴智能科技有限公司 | 用于实现稀疏卷积神经网络加速器的装置和方法 |
CN108376285A (zh) * | 2018-03-23 | 2018-08-07 | 中国科学院计算技术研究所 | 一种面向多变异体lstm神经网络加速器及数据处理方法 |
CN109472350B (zh) * | 2018-10-30 | 2021-11-16 | 南京大学 | 一种基于块循环稀疏矩阵的神经网络加速系统 |
CN109635944B (zh) * | 2018-12-24 | 2020-10-27 | 西安交通大学 | 一种稀疏卷积神经网络加速器及实现方法 |
CN110378468B (zh) * | 2019-07-08 | 2020-11-20 | 浙江大学 | 一种基于结构化剪枝和低比特量化的神经网络加速器 |
CN111401554B (zh) * | 2020-03-12 | 2023-03-24 | 交叉信息核心技术研究院(西安)有限公司 | 支持多粒度稀疏与多模式量化的卷积神经网络的加速器 |
-
2023
- 2023-02-17 CN CN202310126876.XA patent/CN115828044B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110705703A (zh) * | 2019-10-16 | 2020-01-17 | 北京航空航天大学 | 基于脉动阵列的稀疏神经网络处理器 |
US11500962B1 (en) * | 2020-06-30 | 2022-11-15 | Amazon Technologies, Inc. | Emulating fine-grained sparsity in a systolic array |
Also Published As
Publication number | Publication date |
---|---|
CN115828044A (zh) | 2023-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20180046895A1 (en) | Device and method for implementing a sparse neural network | |
CN111240743B (zh) | 人工智能集成电路 | |
WO2022037257A1 (zh) | 卷积计算引擎、人工智能芯片以及数据处理方法 | |
CN112005214B (zh) | 具有包括多端口存储器的向量寄存器文件的矩阵向量乘法器 | |
US20050262510A1 (en) | Multi-threaded processing design in architecture with multiple co-processors | |
CN101527849B (zh) | 集成视频解码器的存储系统 | |
CN115828044B (zh) | 基于神经网络双重稀疏性矩阵乘法运算电路、方法和装置 | |
CN101895676B (zh) | 一种适用于bm3d实时处理的集合方法 | |
CN107943756A (zh) | 一种计算方法及相关产品 | |
CN118012628A (zh) | 一种数据处理方法、装置和存储介质 | |
CN108108189B (zh) | 一种计算方法及相关产品 | |
CN116888591A (zh) | 一种矩阵乘法器、矩阵计算方法及相关设备 | |
WO2022213073A1 (en) | Sparse machine learning acceleration | |
CN115708090A (zh) | 一种计算装置、方法、系统、电路、芯片及设备 | |
KR100295304B1 (ko) | Ic메모리를갖는멀티미디어컴퓨터 | |
Liguori | A MAC-less Neural Inference Processor Supporting Compressed, Variable Precision Weights | |
CN117395437B (zh) | 一种基于异构计算的视频编解码方法、装置、设备及介质 | |
JP7481167B2 (ja) | 圧縮データの解凍システム及びメモリシステム並びにデータ解凍方法 | |
CN113836481B (zh) | 矩阵计算电路、方法、电子设备及计算机可读存储介质 | |
CN212873459U (zh) | 一种用于数据压缩存储的系统 | |
US20230334329A1 (en) | Multi-agent reinforcement learning system and operating method thereof | |
US11048413B2 (en) | Method for reducing read ports and accelerating decompression in memory systems | |
CN114691087A (zh) | 一种数据运算装置及方法、处理核和电子设备 | |
CN116707536A (zh) | 一种基于FPGA的Zstd数据压缩算法优化加速方法 | |
CN115333544A (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 |