CN110943744A - 数据压缩、解压缩以及基于数据压缩和解压缩的处理方法及装置 - Google Patents
数据压缩、解压缩以及基于数据压缩和解压缩的处理方法及装置 Download PDFInfo
- Publication number
- CN110943744A CN110943744A CN201911217983.3A CN201911217983A CN110943744A CN 110943744 A CN110943744 A CN 110943744A CN 201911217983 A CN201911217983 A CN 201911217983A CN 110943744 A CN110943744 A CN 110943744A
- Authority
- CN
- China
- Prior art keywords
- data
- compressed
- compression
- processing
- packets
- 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
- 238000013144 data compression Methods 0.000 title claims abstract description 57
- 230000006837 decompression Effects 0.000 title claims abstract description 52
- 238000003672 processing method Methods 0.000 title claims abstract description 8
- 238000007906 compression Methods 0.000 claims abstract description 249
- 230000006835 compression Effects 0.000 claims abstract description 194
- 238000012545 processing Methods 0.000 claims abstract description 106
- 238000000034 method Methods 0.000 claims abstract description 87
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 54
- 238000003062 neural network model Methods 0.000 claims abstract description 21
- 238000007781 pre-processing Methods 0.000 claims description 33
- 230000004044 response Effects 0.000 claims description 18
- 230000008569 process Effects 0.000 claims description 17
- 230000007246 mechanism Effects 0.000 claims description 6
- 238000004886 process control Methods 0.000 claims description 6
- 238000004806 packaging method and process Methods 0.000 claims description 3
- 238000003860 storage Methods 0.000 abstract description 17
- 230000005540 biological transmission Effects 0.000 abstract description 7
- 238000010586 diagram Methods 0.000 description 22
- 238000013528 artificial neural network Methods 0.000 description 14
- 238000007667 floating Methods 0.000 description 9
- 230000008901 benefit Effects 0.000 description 7
- 238000004590 computer program Methods 0.000 description 7
- 230000000694 effects Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 239000011159 matrix material Substances 0.000 description 4
- 230000002441 reversible effect Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000002203 pretreatment Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000017105 transposition Effects 0.000 description 2
- IAZDPXIOMUYVGZ-UHFFFAOYSA-N Dimethylsulphoxide Chemical compound CS(C)=O IAZDPXIOMUYVGZ-UHFFFAOYSA-N 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005429 filling process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3059—Digital compression and data reduction techniques where the original information is represented by a subset or similar information, e.g. lossy compression
- H03M7/3064—Segmenting
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明提供了数据压缩、解压缩以及基于数据压缩和解压缩的处理方法及装置,其中数据压缩方法包括:接收待压缩数据,所述待压缩数据为神经网络模型的任意层输出的稀疏数据;基于稀疏压缩算法和位平面压缩算法对所述待压缩数据执行压缩处理,得到已压缩数据。利用上述方法,能够实现较高的压缩率,进而能够节省数据传输带宽与外部存储器的存储空间,提高访存效率,提升芯片计算能力。
Description
技术领域
本发明属于数据压缩、解压缩领域,具体涉及数据压缩、解压缩以及基于数据压缩和解压缩的处理方法及装置。
背景技术
本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
随着神经网络的快速发展,对神经网络模型的识别准确率要求不断地提高,神经网络的尺寸也不断增加。受限于片内存储资源,现有的芯片很难把整个网络的全部参数一次性加载到片内存储中,通常的做法是采用分层分块的计算以解决了片上存储资源不足的问题,但这样会导致增加了片内片外的数据交互,而访存又往往是限制加速器计算能力的主要瓶颈。因此,如何提高访存的效率,是提高加速器计算能力的关键问题。
发明内容
针对上述现有技术难以提高片内片外访存效率的问题。本发明实施例提出了一种数据压缩、解压缩以及基于数据压缩和解压缩的处理方法及装置。
利用这种方法及装置,能够解决上述问题。
本发明的实施例中提供了以下方案。
一方面,提供了一种数据压缩方法,包括:接收待压缩数据,待压缩数据为神经网络模型的任意层输出的稀疏数据;基于稀疏压缩算法和位平面压缩算法对待压缩数据执行压缩处理,得到已压缩数据。
在一些可能的实施方式中,待压缩数据的数据格式为定点类型数据或浮点类型数据。
在一些可能的实施方式中,待压缩数据为高阶张量数据,所执行的压缩处理包括:以行为单位对待压缩数据执行压缩处理。
在一些可能的实施方式中,所执行的压缩处理包括基于稀疏压缩算法的第一压缩处理,第一压缩处理包括:对待压缩数据并行地执行稀疏化压缩,输出第一压缩数据和第一附加信息,其中第一压缩数据形成为紧密排列的非0数据。
在一些可能的实施方式中,第一附加信息包括位图(bitmap)和第一行长度信息,其中位图用于指示待压缩数据中的非0数据的位置,第一行长度信息用于指示待压缩数据中的每行数据在第一压缩处理之后的数据长度。
在一些可能的实施方式中,所执行的压缩处理包括基于位平面压缩算法的第二压缩处理,第二压缩处理包括:对待压缩数据或第一压缩数据进行分包,得到多个数据包;对多个数据包分别进行位平面压缩预处理;将经过位平面压缩预处理后的多个数据包分发给多路编码器以并行地执行位平面压缩处理,得到多个BPC编码包;将多个BPC编码包合并以输出第二压缩数据和第二附加信息。
在一些可能的实施方式中,第二附加信息包括:第二行长度信息和分包长度信息,其中,第二行长度信息用于指示待压缩数据中的每行数据在第二压缩处理之后的数据长度,分包长度信息用于指示各个BPC编码包的数据长度。
在一些可能的实施方式中,,还包括:利用多路复用机制对多个数据包分别进行位平面压缩预处理。
在一些可能的实施方式中,对待压缩数据或第一压缩数据进行分包,还包括:根据预设长度对待压缩数据或第一压缩数据进行分包;其中,若多个数据包中的最后一包不足预设长度,则不压缩多个数据包中的最后一包;或对多个数据包中的最后一包进行补0处理。
在一些可能的实施方式中,基于稀疏压缩算法和位平面压缩算法对待压缩数据执行压缩处理,还包括:响应于第一使能指令,顺序地执行第一压缩处理与第二压缩处理,输出第二压缩数据、第一附加信息和第二附加信息作为已压缩数据;响应于第二使能指令,单独执行第一压缩处理,输出第一压缩数据、第一附加信息作为已压缩数据;响应于第三使能指令,单独执行第二压缩处理,输出第二压缩数据、第二附加信息作为已压缩数据。
第二方面,提供一种数据解压缩方法,包括:接收已压缩数据,已压缩数据利用如权利要求1-10中任一项的数据压缩方法而生成;利用如权利要求1-8中任一项的数据压缩方法的逆步骤对已压缩数据执行解压缩处理,以复原已压缩数据。
第三方面,提供一种基于数据压缩和解压缩的处理方法,包括:利用如权利要求1-10中任一项的方法对待压缩数据执行压缩处理,得到已压缩数据,并将已压缩数据传输并存储于外部存储器;获取存储在外部存储器的已压缩数据,并利用如权利要求11的方法对已压缩数据执行解压缩处理,将已压缩数据复原为稀疏数据,并将复原得到的稀疏数据输入神经网络模型以执行运算。
第四方面,提供一种数据压缩装置,包括:接收模块,用于接收待压缩数据,待压缩数据为神经网络模型的任意层输出的稀疏数据;压缩模块,用于基于稀疏压缩算法和位平面压缩算法对待压缩数据执行压缩处理,得到已压缩数据。
在一些可能的实施方式中,待压缩数据的数据格式为定点类型数据或浮点类型数据。
在一些可能的实施方式中,待压缩数据为高阶张量数据,压缩模块还用于:以行为单位对待压缩数据执行压缩处理。
在一些可能的实施方式中,压缩模块还包括基于稀疏压缩算法的第一压缩单元,用于:对待压缩数据并行地执行稀疏化压缩,输出第一压缩数据和第一附加信息,其中第一压缩数据形成为紧密排列的非0数据。
在一些可能的实施方式中,第一附加信息包括位图(bitmap)和第一行长度信息,其中位图用于指示待压缩数据中的非0数据的位置,第一行长度信息用于指示待压缩数据中的每行数据在第一压缩处理之后的数据长度。
在一些可能的实施方式中,压缩模块还包括基于位平面压缩算法的第二压缩单元,用于:对待压缩数据或第一压缩数据进行分包,得到多个数据包;对多个数据包分别进行位平面压缩预处理;将经过位平面压缩预处理后的多个数据包分发给多路编码器以并行地执行位平面压缩处理,得到多个BPC编码包;将多个BPC编码包合并以输出第二压缩数据和第二附加信息。
在一些可能的实施方式中,第二附加信息包括:第二行长度信息和分包长度信息,其中,第二行长度信息用于指示待压缩数据中的每行数据在第二压缩处理之后的数据长度,分包长度信息用于指示各个BPC编码包的数据长度。
在一些可能的实施方式中,第二压缩单元还用于:利用多路复用机制对多个数据包分别进行位平面压缩预处理。
在一些可能的实施方式中,第二压缩单元还用于:根据预设长度对待压缩数据或第一压缩数据进行分包;其中,若多个数据包中的最后一包不足预设长度,则不压缩多个数据包中的最后一包,或对多个数据包中的最后一包进行补0处理。
在一些可能的实施方式中,压缩模块还用于:响应于第一使能指令,顺序地执行第一压缩处理与第二压缩处理,输出第二压缩数据、第一附加信息和第二附加信息作为已压缩数据;响应于第二使能指令,单独执行第一压缩处理,输出第一压缩数据、第一附加信息作为已压缩数据;响应于第三使能指令,单独执行第二压缩处理,输出第二压缩数据、第二附加信息作为已压缩数据。
第五方面,提供一种数据解压缩装置,包括:获取模块,用于获取已压缩数据,已压缩数据利用如第一方面中的数据压缩方法而生成;解压缩模块,用于利用如权利要求1-8中任一项的数据压缩方法的逆步骤对已压缩数据执行解压缩处理,以复原已压缩数据。
第六方面,提供一种基于数据压缩和解压缩的神经网络处理装置,包括:数据压缩装置,用于利用如第一方面的方法对待压缩数据执行压缩处理以得到已压缩数据,并将已压缩数据传输并存储于外部存储器;数据解压缩装置,用于获取存储在外部存储器的已压缩数据,并利用如第二方面的方法对已压缩数据执行解压缩处理,从而将已压缩数据复原为稀疏数据,并将复原得到的稀疏数据输入神经网络模型以执行运算。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:通过采用稀疏压缩算法和位平面压缩算法对待压缩数据进行压缩处理,能够实现较高的压缩率,进而能够节省数据传输带宽与外部存储器的存储空间,提高访存效率,提升芯片计算能力。
应当理解,上述说明仅是本发明技术方案的概述,以便能够更清楚地了解本发明的技术手段,从而可依照说明书的内容予以实施。为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举例说明本发明的具体实施方式。
附图说明
通过阅读下文的示例性实施例的详细描述,本领域普通技术人员将明白本文所述的优点和益处以及其他优点和益处。附图仅用于示出示例性实施例的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的标号表示相同的部件。在附图中:
图1为示意性的神经网络芯片的结构示意图;
图2为根据本发明一实施例的数据压缩方法的流程示意图;
图3为根据本发明一实施例的数据压缩示意图;
图4为根据本发明一实施例的基于稀疏压缩算法的第一压缩处理的示意图;
图5为根据本发明另一实施例的数据压缩方法的流程示意图;
图6为根据本发明一实施例的基于位平面压缩算法的第二压缩处理的示意图;
图7为根据本发明一实施例的第一位平面压缩预处理示意图;
图8为根据本发明一实施例的第二位平面压缩预处理示意图;
图9为根据本发明一实施例的第三位平面压缩预处理示意图;
图10为根据本发明一实施例的数据解压缩方法的流程示意图;
图11为根据本发明一实施例的数据压缩装置的装置示意图;
图12为根据本发明一实施例的数据解压缩装置的装置示意图;
图13为根据本发明一实施例的基于数据压缩和解压缩的处理装置的结构示意图;
图14为根据本发明一实施例的数据压缩、或解压缩装置的结构示意图。
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
在本发明中,应理解,诸如“包括”或“具有”等术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件、部分或其组合的存在,并且不旨在排除一个或多个其他特征、数字、步骤、行为、部件、部分或其组合存在的可能性。
另外还需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
图1是一种示意性的神经网络芯片10的结构示意图。
其中神经网络处理单元11主要用于神经网络的计算,具体可以包括运算单元12以及内部存储器13。内部存储器13通常采用SRAM(Static Random-Access Memory,静态随机存取存储器),且由于其成本较高,实际应用中通常避免采用大容量的内部存储器。该神经网络芯片10还包括电连接至神经网络处理单元11的外部存储器14,其通常采用成本相对较低的DRAM(Dynamic Random Access Memory,动态随机存取存储器)、DDR(Double DataRate SDRAM=双倍速率同步动态随机存储器,简称为DDR)等,用于存储较大容量数据。
可以理解,神经网络模型可以部署在运算单元12上进行数据处理。神经网络模型包括多个层,在实际的神经网络运算过程中,需要存储神经网络模型的各个层输出的中间数据,并在后续层的运算过程中重新使用所存储的中间数据。而由于神经网络处理单元11的内部存储器13的存储空间有限,通常需要将上述各个层输出的中间数据存储到外部存储器14,并在后续需要时再从外部存储器14读取。
图2示出了根据本发明实施例的数据压缩方法20的方法流程示意图。
如图2所示,该方法20包括:
步骤21:接收待压缩数据,所述待压缩数据为神经网络模型的任意层输出的稀疏数据;
步骤22:基于稀疏压缩算法和位平面压缩算法对待压缩数据执行压缩处理,得到已压缩数据。
待压缩数据可以是在神经网络运算过程中由神经网络模型的任意层输出的中间数据。具体而言,中间数据可以是特征图(feature map)数据,特征图(feature map)数据通常会呈现稀疏化特性,比如会出现大量0值或者经过特定运算后会得到大量确定值比如全0或全1等。基于此,若上述呈现稀疏化特性的中间数据需要传输并存储到外部存储器,可以将其作为待压缩数据,并采用基于稀疏压缩算法和位平面压缩算法对待压缩数据进行压缩处理,并把压缩后得到的已压缩数据传输并存储到外部存储器中,这样能够节省数据传输带宽与外部存储器的存储空间,同时可以降低芯片的成本和功耗,提高访存效率,进而提升芯片的计算能力。
具体而言,稀疏压缩(sparse compression,以下简称SC)算法用于执行稀疏化压缩,属于无损压缩算法,其原理在于可以将待压缩数据中的非0值取出并按先后顺序紧密组合在一起,同时输出位图以指示待压缩数据中的非0值分布位置。位平面压缩(Bit PlaneCompression,以下简称BPC)算法同样属于无损压缩算法,其至少包括BPC预处理和BPC编码,其中,BPC预处理通过相邻数减法、矩阵转置、数据异或等操作来增加数据的可压缩性,然后,BPC编码根据BPC编码规则对经过BPC预处理的数据执行压缩处理。
举例来说,如图3所示,可以采用基于SC算法和BPC算法的两级压缩处理对待压缩数据执行压缩处理。比如,若待压缩数据为张量数据,可以将待压缩数据中的每行数据依次输入上述第一压缩单元,由第一压缩单元基于SC算法执行压缩处理,进而输出第一压缩数据(紧密排列的非0值)、位图以及第一压缩处理后的每行数据的行长度信息。进一步地,还可以将第一压缩数据输入第二压缩单元,由第二压缩单元基于BPC算法执行第二压缩处理,进而输出第二压缩数据以及第二压缩处理后每行数据的行长度信息等。
可选地,也可以单独基于SC算法或基于BPC算法而执行压缩处理。比如由可以将待压缩数据中的每行数据依次输入上述第一压缩单元,并输出第一压缩数据(紧密排列的非0值)、位图以及第一压缩处理后的每行数据的行长度信息作为已压缩数据。还可以将待压缩数据中的每行数据依次输入上述第二压缩单元,由第二压缩单元基于BPC算法执行第二压缩处理,进而输出第二压缩数据以及第二压缩处理后每行数据的行长度信息等作为已压缩数据。
在一些可能的实施方式中,待压缩数据的数据格式为定点类型数据或浮点类型数据。
具体地,待压缩数据可以由若干个定点类型数据或若干个浮点类型数据所组成,比如可以由若干个16bit浮点数或者8bit定点数组成。举例来说,假设待压缩数据由若干个16bit浮点数组成,图3所示出第一压缩单元和第二压缩单元的输入位宽可以是相同的,比如是128bit,那么每个时钟周期可以并行输入8个16bit浮点数,从而支持执行并行压缩处理。
在一些可能的实施方式中,其中待压缩数据为高阶张量数据,并且在步骤22中所执行的压缩处理包括:以行为单位对所述待压缩数据执行所述压缩处理。
具体地,高阶张量数据具体是指神经网络运算过程中由各网络层输出的特征图(feature map),其可以形成为二阶、三阶或四阶。比如,特征图可以是一个包括通道数、行数、行宽三个维度的三维张量,其尺寸可以表示为c(通道数)*h(行数)*w(行宽),在执行压缩处理时,以行为单位并采用逐行逐通道的顺序依次压缩待压缩的特征图中的全部数据。又比如,特征图可以是一个包括帧数、通道数、行数、行宽四个维度的四维张量,其尺寸可以表示为n(帧数)*c(通道数)*h(行数)*w(行宽),在执行压缩处理时,以行为单位并采用逐行逐通道逐帧的顺序依次压缩待压缩的特征图中的全部数据。
在一些可能的实施方式中,在步骤22中,所执行的压缩处理包括基于所述稀疏压缩算法的第一压缩处理,第一压缩处理包括:对待压缩数据并行地执行稀疏化压缩,输出第一压缩数据和第一附加信息,其中所述第一压缩数据可以形成为紧密排列的非0数据。
在一些可能的实施方式中,第一附加信息可以包括位图(bitmap)和第一行长度信息,其中所述位图用于指示所述待压缩数据中的非0数据的位置,所述第一行长度信息用于指示所述待压缩数据中的每行数据在所述第一压缩处理之后的数据长度。
以下结合图4对上述第一压缩处理进行详细介绍:
如图4所示,当以行为单位对待压缩数据进行压缩处理时,假设待压缩的当前行是图4中的d0~d31,每个数据的格式为16bit浮点数(以下简称bf16),因此每个时钟周期内可以并行向图3中的第一压缩单元输入8个数据,比如第一个时钟周期送入d0~d7,第二个时钟周期送入d8~d15,依次送完全部当前行数据d0~d31,并拉高输入完成信号以告知第一压缩单元数据输入完成,第一压缩单元可以并行处理8个数据的稀疏压缩,将其中的非0值挑出并紧密排列地存入缓存中,每当缓存中存满8个非0值或压缩结束时则输出有效信号。与此同时,第一压缩单元并行将8bit的位图(bitmap)也存入缓存中,每当存满64bit或压缩结束则输出有效信号。在位图中,每个比特用来指示待压缩数据在对应数据位是否为0值,比如在图4中,d7为非0值则位图中对应于d7的数据位置1,d6为0值则位图中对应于d6的数据位置0。在待压缩数据d0~d31均完成压缩后,输出上述紧密排列的非0值数据作为第一压缩数据,并输出位图和第一行长度信息,其中所述第一行长度信息用于指示所述待压缩数据中的每行数据在所述第一压缩处理之后的数据长度,以及对应于当前行的第一压缩数据的总比特数,比如在图4中,所示出的第一行长度信息为12(非0值个数)*16bit=192bit,其中第一行长度信息本身占用16bit。由此可以看出,当前行的待压缩数据的原始数据尺寸为32*16bit=512bit,其中有12个非0值和20个0值,经过基于SC压缩算法的第一压缩处理后,尺寸变为12*16bit(当前行的第一压缩数据)+32*1bit(当前行的位图)+16bit(当前行的第一行长度信息)=240bit,当原始数据中的0值越多,则压缩率越低,压缩效果越好。
可选地,考虑到流水线速率匹配和芯片总线位宽等因素,上述第一压缩处理的输出位宽可以与输入位宽的保持一致,比如均为128bit,也即可以并行输入或输出8个16bit浮点数,或者可以并行输入或输出16个8bit定点数。可选地,位图的输出位宽可以与总线位宽保持一致,比如为64bit。
在一些可能的实施方式中,在步骤22中,所执行的压缩处理包括基于所述位平面压缩算法的第二压缩处理。
如图5所示,上述第二压缩处理包括:
步骤51:对所述待压缩数据或所述第一压缩数据进行分包,得到多个数据包;
步骤52:对所述多个数据包分别进行位平面压缩预处理;
步骤53:将经过所述位平面压缩预处理后的多个数据包分发给多路编码器以并行地执行位平面压缩处理,得到多个BPC编码包;
步骤54:将所述多个BPC编码包合并以输出第二压缩数据和第二附加信息。
具体地,在步骤51中,第二压缩处理的对象可以是待压缩数据,也可以是经过第一压缩处理后输出的第一压缩数据,本申请实施例对此不作具体限制。此外,考虑到流水线速率匹配和芯片总线位宽等因素,第二压缩处理的输入位宽可以与第一压缩处理的输出位宽保持一致,比如均为128bit。第二压缩处理可以同样支持定点类型数据或浮点类型数据的输入,比如可以支持16bit浮点数或8bit定点数等多种格式。举例来说,可以向图3中示出的第二压缩单元并行输入8个16bit浮点数,或者可以并行输入16个8bit定点数。
在一些可能的实施方式中,上述步骤51还可以包括:根据预设长度对所述待压缩数据或所述第一压缩数据进行分包;其中,若所述多个数据包中的最后一包不足所述预设长度,则不压缩所述多个数据包中的最后一包;或对所述多个数据包中的最后一包进行补0处理。举例来说,如图6所示,就可以将数据集合d0~d98按照每16个数据分为一组,得到6个数据包,比如package0:d0~d15,packagel:d16~d31,依次类推。其中,由于package5:d96~d98不满16个点,为了避免产生误差,可以对其采取不压缩处理或空位补0处理。其中,补0处理的设计简单,而不压缩处理则不会引入无效数据,效果较好。
具体地,在步骤52中,位平面压缩预处理通常可以包括用于执行相邻数减法操作的第一BPC预处理,用于执行矩阵转置操作的第二BPC预处理,以及用于执行相邻数异或操作的第三BPC预处理,从而增加每个数据包的可压缩性。
在一些可能的实施方式中,上述步骤52还可以包括:利用多路复用机制对所述多个数据包分别进行所述位平面压缩预处理。具体地,由于BPC预处理的处理速度快,而BPC编码的速度较慢,因此可以采用多路复用机制,也即多路编码器可以共用一个用于执行BPC预处理的装置,并在BPC预处理完成按顺序将多个经过BPC预处理的数据包分发给多个编码器。
具体地,在步骤53中,由于基于BPC算法的第二压缩处理是一个前后数据有依赖关系的纯串行编码过程,难以满足芯片与外部存储器交互的速率要求,因此可以采用多路编码器并行处理的方式,上述并行处理是指将数据进行分包后再分发给不同的编码器以执行并行的BPC编码,最后将BPC编码后的数据合并后输出,进而可以满足高速率的要求。由此需要额外增加分包控制逻辑以避免数据混乱,以及需要获知分包长度信息,其中该分包长度信息用于指示每个分包在经过BPC编码后的比特数。
以下结合图6对上述步骤51~步骤54进行详细说明:
如图6所示,假设当前行的待压缩数据形成为图6中的d0~d98(也即data0~data98);或者当前行的待压缩数据在经过第一压缩处理之后,所输出的第一压缩数据形成为图6中的d0~d98(也即data0~data98),则对该d0~d98执行第二压缩处理具体可以包括:
首先,可以执行步骤51,将d0~d98中的每16个数据分为一组,得到6个数据包,比如package0:d0~d15,packagel:d16~d31,…,package5:d96~d98,依次类推。
接下来,可以执行步骤52,对于上述6个数据包依次执行BPC预处理。其中,BPC预处理具体可以包括第一BPC预处理、第二BPC预处理以及第三BPC预处理。图7~图9分别示出了上述三种BPC预处理的数据处理过程。
以下结合图7~图9并以package0:d0~d15(也即data0~data15)为例对BPC预处理过程进行详细阐述:
如图7所示,第一BPC预处理包括:选取package0的第一个数据data0作为基底base,并利用公式:deltan=datan-datan-1使剩下的数据依次与相邻数做减法,得到(delta1,...,delta15),其中n为1~15之间的正整数。为了保证不溢出,两个16bit数据相减得到17bit的减法结果,进而可以得到16bit的base和15个17bit的减法结果(delta1,...,delta15)。
如图8所示,第二BPC预处理包括:将(delta1,...,delta15)看做一个17bit*15的数据矩阵,对该数据矩阵做转置操作,可以得到一个15bit*17的新数据块,并依次将这17个15bit数据定义为(DPB0,...,DPB16),由此可以得到16bit的base和17个15bit的DBP数据。
如图9所示,第三BPC预处理包括:将得到的DBP数据依次与相邻DBP做异或操作,得到DBX数据,既DPB0与DPB1异或得到DBX0,……,DPB15与DPB16异或得到DPX15,因为DPB16是最后一个数据,没有相邻数据与其作异或,所以令DBX16=DPB16,经过此步运算后,得到16bit的base和17个15bit的DBX数据(DBX0,...,DBX16),至此,完成对package0:(data0,...,data15)的BPC预处理。
接下来,可以执行步骤53,将上述BPC预处理后的6个数据包分发给多路编码器(图中为16路)中的6路编码器以执行并行编码。如图6所示,可以将BPC预处理后的package0~6分别发送给编码器0~5,并由6路编码器并行执行基于BPC编码规则的BPC编码,最后并行输出6个BPC编码包。
表1:BPC编码规则表
BASE/DBX/DBP | length(bit) | code(binary) |
base | 17 | {1’b1,base} |
0(run length 2-17) | 6 | {2’b01,(runlength-2)[3:0]} |
0(run length 1) | 3 | {3’b001} |
all 1’s | 5 | {5’b00000} |
DBX!=0&DBP=0 | 5 | {5’b00001} |
consecutive two 1’s | 9 | {5’b00010,StartingOnePosition[3:0]} |
single 1 | 9 | {5’b00011,OnePosition[3:0]} |
uncompressed | 16 | {1’b1,DBX} |
各个编码器按照如表1所示的BPC编码规则表对数据包执行编码。
上述BPC编码规则表示出了一个串行的编码过程。举例来说,如图7~9所示,每个数据包经过BPC预处理之后包含18个数据编码(1个base+17个DBX),当对每个经过BPC预处理之后的数据包进行BPC编码时均需要18个时钟周期。基于此,若执行串行的BPC编码,完成package0~6的BPC编码需要18×6个时钟周期,因此为满足处理速度要求本实施例可以采用并行的多路编码器执行并行编码处理,从而得到更高的处理速度。
接下来,可以执行步骤54在BPC编码结束后,按照原有分包逻辑将上述并行输出的6个BPC编码包进行合并转为串行数据,输出第二压缩数据(合并后得到的串行数据)以及第二附加信息。
在一些可能的实施方式中,步骤54中的第二附加信息可以包括:第二行长度信息和分包长度信息,其中,所述第二行长度信息用于指示待压缩数据中的每行数据在所述第二压缩处理之后的数据长度,分包长度信息用于指示各个BPC编码包的数据长度,从而便于解压缩时的并行处理。
在一些可能的实施方式中,上述步骤22具体可以包括:响应于第一使能指令,顺序地执行所述第一压缩处理与所述第二压缩处理,输出第二压缩数据、第一附加信息和所述第二附加信息作为所述已压缩数据。在另外一些实施方式中,上述步骤22还可以包括:响应于第二使能指令单独执行所述第一压缩处理,输出所述第一压缩数据、所述第一附加信息作为所述已压缩数据;或者响应于第三使能指令单独执行所述第二压缩处理,输出所述第二压缩数据、所述第二附加信息作为所述已压缩数据。
表2:YoloV2-Relu网络的各层压缩率
具体地,表2以YoloV2-Relu网络为例,以随机选取50张图像输入得到的平均值为例,分别列出单独执行第一压缩处理(SC编码)、单独执行第二压缩处理(BPC编码)和顺序地执行第一压缩处理(SC编码)和第二压缩处理(BPC编码)时,三种不同压缩处理方案下针对各网络层的压缩率。从上表可以看出,当同时采用两种压缩算法时,平均压缩率可以达到33%,这就意味着可以减少70%左右的数据传输,这不仅可以减少数据传输的时间,也节省了与外部存储器进行交互时的带宽资源,进而可以将带宽资源更加合理的分配给神经网络处理装置中的其他单元,可以大幅提升装置性能。同时,并行化的设计使得压缩速度得到保证,上下游模块的压缩速率匹配。
基于相同或类似的技术构思,本发明实施例还提供一种数据解压缩方法100,如图10所示,包括:
步骤101:接收已压缩数据,其中该已压缩数据是利用上述实施例中所示出的数据压缩方法而生成;
步骤102:利用上述实施例中所示出的数据压缩方法的逆步骤,对已压缩数据执行解压缩处理以复原已压缩数据。
可以理解,解压缩处理与压缩处理互为逆处理,本实施例中的数据解压缩采用与上述数据压缩方法的实施例中各个方面完全相逆的过程,并获得相应的技术效果,在此不再赘述。
基于相同或类似的技术构思,本发明实施例还提供基于数据压缩和解压缩的处理方法,包括:
利用上述实施例中所示出的数据压缩方法对待压缩数据执行压缩处理,得到已压缩数据,并将所述已压缩数据传输并存储于外部存储器;
获取存储在所述外部存储器的所述已压缩数据,并利用上述实施例中所示出的数据解压缩方法对已压缩数据执行解压缩处理,将所述已压缩数据复原为所述稀疏数据,并将所述复原得到的稀疏数据输入所述神经网络模型以执行运算。
基于相同或类似的技术构思,本发明实施例还提供一种数据压缩装置110,如图11所示,数据压缩装置110包括:
接收模块111,用于接收待压缩数据,待压缩数据为神经网络模型的任意层输出的稀疏数据;
压缩模块112,用于基于稀疏压缩算法和位平面压缩算法对待压缩数据执行压缩处理,得到已压缩数据。
在一些可能的实施方式中,待压缩数据的数据格式为定点类型数据或浮点类型数据。
在一些可能的实施方式中,待压缩数据为高阶张量数据,压缩模块还用于:以行为单位对待压缩数据执行压缩处理。
在一些可能的实施方式中,压缩模块112还包括基于稀疏压缩算法的第一压缩单元,用于:对待压缩数据并行地执行稀疏化压缩,输出第一压缩数据和第一附加信息,其中第一压缩数据形成为紧密排列的非0数据。
在一些可能的实施方式中,第一附加信息包括位图(bitmap)和第一行长度信息,其中位图用于指示待压缩数据中的非0数据的位置,第一行长度信息用于指示待压缩数据中的每行数据在第一压缩处理之后的数据长度。
在一些可能的实施方式中,压缩模块112还包括基于位平面压缩算法的第二压缩单元,用于:对待压缩数据或第一压缩数据进行分包,得到多个数据包;对多个数据包分别进行位平面压缩预处理;将经过位平面压缩预处理后的多个数据包分发给多路编码器以并行地执行位平面压缩处理,得到多个BPC编码包;将多个BPC编码包合并以输出第二压缩数据和第二附加信息。
在一些可能的实施方式中,第二附加信息包括:第二行长度信息和分包长度信息,其中,第二行长度信息用于指示待压缩数据中的每行数据在第二压缩处理之后的数据长度,分包长度信息用于指示各个BPC编码包的数据长度。
在一些可能的实施方式中,第二压缩单元还用于:利用多路复用机制对多个数据包分别进行位平面压缩预处理。
在一些可能的实施方式中,第二压缩单元还用于:根据预设长度对待压缩数据或第一压缩数据进行分包;其中,若多个数据包中的最后一包不足预设长度,则不压缩多个数据包中的最后一包,或对多个数据包中的最后一包进行补0处理。
在一些可能的实施方式中,压缩模块112还用于:响应于第一使能指令,顺序地执行第一压缩处理与第二压缩处理,输出第二压缩数据、第一附加信息和第二附加信息作为已压缩数据;响应于第二使能指令,单独执行第一压缩处理,输出第一压缩数据、第一附加信息作为已压缩数据;响应于第三使能指令,单独执行第二压缩处理,输出第二压缩数据、第二附加信息作为已压缩数据。
基于相同或类似的技术构思,本发明实施例还提供一种数据解压缩装置120,如图12所示,数据解压缩装置120包括:
获取模块121,用于获取已压缩数据,已压缩数据利用如上述实施例所示出数据压缩方法而生成;
解压缩模块122,用于利用如上述实施例所示出数据压缩方法的逆步骤对已压缩数据执行解压缩处理,以复原已压缩数据。
基于相同或类似的技术构思,本发明实施例还提供一种基于数据压缩和解压缩的处理装置130,如图13所示,包括:
数据压缩装置131,用于从运算单元12中获取神经网络模型的任意层输出的稀疏数据作为待压缩数据,利用如上述实施例中所示出的数据压缩方法对待压缩数据执行压缩处理以得到已压缩数据,并将已压缩数据传输并存储于外部存储器14;
数据解压缩装置132,用于获取存储在外部存储器14的已压缩数据,并利用如上述实施例中所示出的数据解压缩方法对已压缩数据执行解压缩处理,从而将已压缩数据复原为稀疏数据,并将复原得到的稀疏数据输入运算单元12中的神经网络模型以执行运算。
通过上述处理装置,由于数据压缩的压缩率高,能够显著节省数据传输带宽与外部存储器的存储空间,提高访存效率。同时可以降低芯片的成本和功耗,进而可提升处理装置的计算能力。
图14为根据本申请实施例的一种数据压缩或解压缩装置的示意图,用于执行如图2所示出的数据压缩方法,或用于执行如图10所示出的数据解压缩方法,该装置包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行:接收待压缩数据,所述待压缩数据为神经网络模型的任意层输出的稀疏数据;基于稀疏压缩算法和位平面压缩算法对所述待压缩数据执行压缩处理,得到已压缩数据;或者,使至少一个处理器能够执行:接收已压缩数据,已压缩数据利用上述实施例所示出的数据压缩方法而生成;利用如上述实施例所示出的数据压缩方法的逆步骤对已压缩数据执行解压缩处理,以复原已压缩数据。
本申请一实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有程序,当程序被多核处理器执行时,使得该多核处理器执行:接收待压缩数据,待压缩数据为神经网络模型的任意层输出的稀疏数据;基于稀疏压缩算法和位平面压缩算法对待压缩数据执行压缩处理,得到已压缩数据;或者,使得该多核处理器执行:接收已压缩数据,已压缩数据利用上述实施例所示出的数据压缩方法而生成;利用如上述实施例所示出的数据压缩方法的逆步骤对已压缩数据执行解压缩处理,以复原已压缩数据。
本申请中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备和计算机可读存储介质实施例而言,由于其基本相似于方法实施例,所以其描述进行了简化,相关之处可参见方法实施例的部分说明即可。
本申请实施例提供的装置和计算机可读存储介质与方法是一一对应的,因此,装置、设备和计算机可读存储介质也具有与其对应的方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述装置、设备和计算机可读存储介质的有益技术效果。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。
Claims (24)
1.一种数据压缩方法,其特征在于,包括:
接收待压缩数据,所述待压缩数据为神经网络模型的任意层输出的稀疏数据;
基于稀疏压缩算法和位平面压缩算法对所述待压缩数据执行压缩处理,得到已压缩数据。
2.根据权利要求1所述的方法,其特征在于,所述待压缩数据的数据格式为定点类型数据或浮点类型数据。
3.根据权利要求1所述的方法,其特征在于,所述待压缩数据为高阶张量数据,所执行的压缩处理包括:且以行为单位对所述待压缩数据执行所述压缩处理。
4.由权利要求1所述的方法,其特征在于,所执行的压缩处理包括基于所述稀疏压缩算法的第一压缩处理,包括:
对待压缩数据并行地执行稀疏化压缩,输出第一压缩数据和第一附加信息,其中所述第一压缩数据形成为紧密排列的非0数据。
5.由权利要求4所述的方法,其特征在于,所述第一附加信息包括位图(bitmap)和第一行长度信息,其中所述位图用于指示所述待压缩数据中的非0数据的位置,所述第一行长度信息用于指示所述待压缩数据中的每行数据在所述第一压缩处理之后的数据长度。
6.由权利要求4所述的方法,其特征在于,所执行的压缩处理包括基于所述位平面压缩算法的第二压缩处理,包括:
对所述待压缩数据或所述第一压缩数据进行分包,得到多个数据包;
对所述多个数据包分别进行位平面压缩预处理;
将经过所述位平面压缩预处理后的多个数据包分发给多路编码器以并行地执行位平面压缩处理,得到多个BPC编码包;
将所述多个BPC编码包合并以输出第二压缩数据和第二附加信息。
7.由权利要求6所述的方法,其特征在于,所述第二附加信息包括:
第二行长度信息和分包长度信息,其中,所述第二行长度信息用于指示所述待压缩数据中的每行数据在所述第二压缩处理之后的数据长度,所述分包长度信息用于指示各个所述BPC编码包的数据长度。
8.由权利要求6所述的方法,其特征在于,还包括:利用多路复用机制对所述多个数据包分别进行所述位平面压缩预处理。
9.由权利要求6所述的方法,其特征在于,对所述待压缩数据或所述第一压缩数据进行分包,还包括:
根据预设长度对所述待压缩数据或所述第一压缩数据进行分包;
其中,若所述多个数据包中的最后一包不足所述预设长度,则不压缩所述多个数据包中的最后一包;或对所述多个数据包中的最后一包进行补0处理。
10.由权利要求3~9中任一项所述的方法,其特征在于,基于稀疏压缩算法和位平面压缩算法对所述待压缩数据执行压缩处理,还包括:
响应于第一使能指令,顺序地执行所述第一压缩处理与所述第二压缩处理,输出第二压缩数据、所述第一附加信息和所述第二附加信息作为所述已压缩数据;
响应于第二使能指令,单独执行所述第一压缩处理,输出所述第一压缩数据、所述第一附加信息作为所述已压缩数据;
响应于第三使能指令,单独执行所述第二压缩处理,输出所述第二压缩数据、所述第二附加信息作为所述已压缩数据。
11.一种数据解压缩方法,其特征在于,包括:
接收已压缩数据,所述已压缩数据利用如权利要求1-10中任一项所述的数据压缩方法而生成;
利用如权利要求1-8中任一项所述的数据压缩方法的逆步骤对所述已压缩数据执行解压缩处理,以复原所述已压缩数据。
12.一种基于数据压缩和解压缩的处理方法,其特征在于,包括:
利用如权利要求1-10中任一项所述的方法对待压缩数据执行压缩处理,得到已压缩数据,并将所述已压缩数据传输并存储于外部存储器;
获取存储在所述外部存储器的所述已压缩数据,并利用如权利要求11所述的方法对所述已压缩数据执行解压缩处理,将所述已压缩数据复原为所述稀疏数据,并将所述复原得到的稀疏数据输入所述神经网络模型以执行运算。
13.一种数据压缩装置,其特征在于,包括:
接收模块,用于接收待压缩数据,所述待压缩数据为神经网络模型的任意层输出的稀疏数据;
压缩模块,用于基于稀疏压缩算法和位平面压缩算法对所述待压缩数据执行压缩处理,得到已压缩数据。
14.根据权利要求13所述的装置,其特征在于,所述待压缩数据的数据格式为定点类型数据或浮点类型数据。
15.根据权利要求13所述的装置,其特征在于,所述待压缩数据为高阶张量数据,所述压缩模块还用于:以行为单位对所述待压缩数据执行所述压缩处理。
16.由权利要求13所述的装置,其特征在于,所述压缩模块还包括基于所述稀疏压缩算法的第一压缩单元,用于:对待压缩数据并行地执行稀疏化压缩,输出第一压缩数据和第一附加信息,其中所述第一压缩数据形成为紧密排列的非0数据。
17.由权利要求16所述的装置,其特征在于,所述第一附加信息包括位图(bitmap)和第一行长度信息,其中所述位图用于指示所述待压缩数据中的非0数据的位置,所述第一行长度信息用于指示所述待压缩数据中的每行数据在所述第一压缩处理之后的数据长度。
18.由权利要求16所述的装置,其特征在于,所述压缩模块还包括基于所述位平面压缩算法的第二压缩单元,用于:
对所述待压缩数据或所述第一压缩数据进行分包,得到多个数据包;
对所述多个数据包分别进行位平面压缩预处理;
将经过所述位平面压缩预处理后的多个数据包分发给多路编码器以并行地执行位平面压缩处理,得到多个BPC编码包;
将所述多个BPC编码包合并以输出第二压缩数据和第二附加信息。
19.由权利要求18所述的装置,其特征在于,所述第二附加信息包括:
第二行长度信息和分包长度信息,其中,所述第二行长度信息用于指示所述待压缩数据中的每行数据在所述第二压缩处理之后的数据长度,所述分包长度信息用于指示各个所述BPC编码包的数据长度。
20.由权利要求18所述的装置,其特征在于,所述第二压缩单元还用于:利用多路复用机制对所述多个数据包分别进行所述位平面压缩预处理。
21.由权利要求18所述的装置,其特征在于,所述第二压缩单元还用于:
根据预设长度对所述待压缩数据或所述第一压缩数据进行分包;
其中,若所述多个数据包中的最后一包不足所述预设长度,则不压缩所述多个数据包中的最后一包,或对所述多个数据包中的最后一包进行补0处理。
22.由权利要求16~21中任一项所述的装置,其特征在于,压缩模块还用于:
响应于第一使能指令,顺序地执行所述第一压缩处理与所述第二压缩处理,输出第二压缩数据、所述第一附加信息和所述第二附加信息作为所述已压缩数据;
响应于第二使能指令,单独执行所述第一压缩处理,输出所述第一压缩数据、所述第一附加信息作为所述已压缩数据;
响应于第三使能指令,单独执行所述第二压缩处理,输出所述第二压缩数据、所述第二附加信息作为所述已压缩数据。
23.一种数据解压缩装置,其特征在于,包括:
获取模块,用于获取已压缩数据,所述已压缩数据利用如权利要求1-8中任一项所述的数据压缩方法而生成;
解压缩模块,用于利用如权利要求1-8中任一项所述的数据压缩方法的逆步骤对所述已压缩数据执行解压缩处理,以复原所述已压缩数据。
24.一种基于数据压缩和解压缩的处理装置,其特征在于,包括:
数据压缩装置,用于利用如权利要求1-10中任一项所述的方法对所述待压缩数据执行压缩处理以得到已压缩数据,并将所述已压缩数据传输并存储于外部存储器;
数据解压缩装置,用于获取存储在所述外部存储器的所述已压缩数据,并利用如权利要求11所述的方法对所述已压缩数据执行解压缩处理,从而将所述已压缩数据复原为所述稀疏数据,并将所述复原得到的稀疏数据输入所述神经网络模型以执行运算。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911217983.3A CN110943744B (zh) | 2019-12-03 | 2019-12-03 | 数据压缩、解压缩以及基于数据压缩和解压缩的处理方法及装置 |
PCT/CN2020/118674 WO2021109696A1 (zh) | 2019-12-03 | 2020-09-29 | 数据压缩、解压缩以及基于数据压缩和解压缩的处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911217983.3A CN110943744B (zh) | 2019-12-03 | 2019-12-03 | 数据压缩、解压缩以及基于数据压缩和解压缩的处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110943744A true CN110943744A (zh) | 2020-03-31 |
CN110943744B CN110943744B (zh) | 2022-12-02 |
Family
ID=69908661
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911217983.3A Active CN110943744B (zh) | 2019-12-03 | 2019-12-03 | 数据压缩、解压缩以及基于数据压缩和解压缩的处理方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110943744B (zh) |
WO (1) | WO2021109696A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021109696A1 (zh) * | 2019-12-03 | 2021-06-10 | 嘉楠明芯(北京)科技有限公司 | 数据压缩、解压缩以及基于数据压缩和解压缩的处理方法及装置 |
WO2022089421A1 (en) * | 2020-10-30 | 2022-05-05 | International Business Machines Corporation | ReLU COMPRESSION TO REDUCE GPU MEMORY |
WO2022174731A1 (zh) * | 2021-02-22 | 2022-08-25 | 山东英信计算机技术有限公司 | 一种处理解压缩过程中数据溢出的方法和设备 |
US11750213B1 (en) | 2022-08-31 | 2023-09-05 | Hong Kong Applied Science and Technology Research Institute Company Limited | Train-linking lossless compressor of numeric values |
WO2023231571A1 (zh) * | 2022-06-02 | 2023-12-07 | 华为技术有限公司 | 数据压缩方法及装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102474565A (zh) * | 2009-09-09 | 2012-05-23 | 索尼公司 | 在无线hd1.1中用于图形模式压缩的比特流语法 |
US8457425B2 (en) * | 2009-06-09 | 2013-06-04 | Sony Corporation | Embedded graphics coding for images with sparse histograms |
CN103402043A (zh) * | 2013-08-16 | 2013-11-20 | 中国科学院长春光学精密机械与物理研究所 | 一种大视场空间tdiccd相机的图像压缩装置 |
CN106612438A (zh) * | 2016-01-28 | 2017-05-03 | 四川用联信息技术有限公司 | 一种基于重叠分区高级小波变换技术的图像压缩方法 |
CN107590533A (zh) * | 2017-08-29 | 2018-01-16 | 中国科学院计算技术研究所 | 一种用于深度神经网络的压缩装置 |
CN107888197A (zh) * | 2017-10-31 | 2018-04-06 | 华为技术有限公司 | 一种数据压缩方法和装置 |
CN110008965A (zh) * | 2019-04-02 | 2019-07-12 | 杭州嘉楠耘智信息科技有限公司 | 目标物识别方法及识别系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108628807B (zh) * | 2017-03-20 | 2022-11-25 | 北京百度网讯科技有限公司 | 浮点数矩阵的处理方法、装置、设备及计算机可读存储介质 |
US20190081637A1 (en) * | 2017-09-08 | 2019-03-14 | Nvidia Corporation | Data inspection for compression/decompression configuration and data type determination |
CN110377288A (zh) * | 2018-04-13 | 2019-10-25 | 赛灵思公司 | 神经网络压缩编译器及其编译压缩方法 |
CN110943744B (zh) * | 2019-12-03 | 2022-12-02 | 嘉楠明芯(北京)科技有限公司 | 数据压缩、解压缩以及基于数据压缩和解压缩的处理方法及装置 |
-
2019
- 2019-12-03 CN CN201911217983.3A patent/CN110943744B/zh active Active
-
2020
- 2020-09-29 WO PCT/CN2020/118674 patent/WO2021109696A1/zh active Application Filing
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8457425B2 (en) * | 2009-06-09 | 2013-06-04 | Sony Corporation | Embedded graphics coding for images with sparse histograms |
CN102474565A (zh) * | 2009-09-09 | 2012-05-23 | 索尼公司 | 在无线hd1.1中用于图形模式压缩的比特流语法 |
CN103402043A (zh) * | 2013-08-16 | 2013-11-20 | 中国科学院长春光学精密机械与物理研究所 | 一种大视场空间tdiccd相机的图像压缩装置 |
CN106612438A (zh) * | 2016-01-28 | 2017-05-03 | 四川用联信息技术有限公司 | 一种基于重叠分区高级小波变换技术的图像压缩方法 |
CN107590533A (zh) * | 2017-08-29 | 2018-01-16 | 中国科学院计算技术研究所 | 一种用于深度神经网络的压缩装置 |
CN107888197A (zh) * | 2017-10-31 | 2018-04-06 | 华为技术有限公司 | 一种数据压缩方法和装置 |
CN110008965A (zh) * | 2019-04-02 | 2019-07-12 | 杭州嘉楠耘智信息科技有限公司 | 目标物识别方法及识别系统 |
Non-Patent Citations (1)
Title |
---|
MING-BO LIN, ETC: "A New Architecture of a Two-Stage Lossless Data Compression and Decompression Algorithm", 《IEEE TRANSACTIONS ON VERY LARGE SCALE INTEGRATION (VLSI) SYSTEMS》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021109696A1 (zh) * | 2019-12-03 | 2021-06-10 | 嘉楠明芯(北京)科技有限公司 | 数据压缩、解压缩以及基于数据压缩和解压缩的处理方法及装置 |
WO2022089421A1 (en) * | 2020-10-30 | 2022-05-05 | International Business Machines Corporation | ReLU COMPRESSION TO REDUCE GPU MEMORY |
GB2615267A (en) * | 2020-10-30 | 2023-08-02 | Ibm | ReLU compression to reduce GPU memory |
WO2022174731A1 (zh) * | 2021-02-22 | 2022-08-25 | 山东英信计算机技术有限公司 | 一种处理解压缩过程中数据溢出的方法和设备 |
US11809807B1 (en) | 2021-02-22 | 2023-11-07 | Shandong Yingxin Computer Technologies Co., Ltd. | Method and device for processing data overflow in decompression process |
WO2023231571A1 (zh) * | 2022-06-02 | 2023-12-07 | 华为技术有限公司 | 数据压缩方法及装置 |
US11750213B1 (en) | 2022-08-31 | 2023-09-05 | Hong Kong Applied Science and Technology Research Institute Company Limited | Train-linking lossless compressor of numeric values |
Also Published As
Publication number | Publication date |
---|---|
CN110943744B (zh) | 2022-12-02 |
WO2021109696A1 (zh) | 2021-06-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110943744B (zh) | 数据压缩、解压缩以及基于数据压缩和解压缩的处理方法及装置 | |
US7924183B2 (en) | Method and system for reducing required storage during decompression of a compressed file | |
US8847798B2 (en) | Systems and methods for data compression and parallel, pipelined decompression | |
US20190110082A1 (en) | Compressing blocks of data values by performing spatial decorrelation on reorganized blocks | |
US8208532B2 (en) | Method and apparatus for data compression and decompression | |
CN112514264A (zh) | 数据压缩、解压方法及相关装置、电子设备、系统 | |
KR20120096749A (ko) | 메모리 장치 및 메모리 시스템 | |
US11955995B2 (en) | Apparatus and method for two-stage lossless data compression, and two-stage lossless data decompression | |
CN103997648B (zh) | 一种基于dsp的jpeg2000标准图像快速解压缩系统及方法 | |
CN113497627A (zh) | 一种数据压缩和解压缩方法、装置及系统 | |
CN108572787A (zh) | 一种数据存储、读取的方法及装置 | |
WO2024066753A1 (zh) | 压缩数据的方法和相关装置 | |
Tomari et al. | Compressing floating-point number stream for numerical applications | |
CN110007855B (zh) | 一种硬件支持的3d堆叠nvm内存数据压缩方法及系统 | |
WO2014000443A1 (zh) | 一种图像数据压缩和解压缩方法、装置 | |
CN108932315A (zh) | 一种数据解压的方法以及相关装置 | |
CN111431539A (zh) | 一种神经网络数据的压缩方法、装置及计算机可读存储介质 | |
Lloyd et al. | Run-length base-delta encoding for high-speed compression | |
US10411733B2 (en) | Data compression and decompression | |
CN113495669B (zh) | 一种解压装置、加速器、和用于解压装置的方法 | |
CN103581675A (zh) | 视频数据的压缩/解压缩方法及系统 | |
US8711013B2 (en) | Coding circuitry for difference-based data transformation | |
KR20220100030A (ko) | 패턴 기반 캐시 블록 압축 | |
US12040821B2 (en) | Weight processing for a neural network | |
CN114095036B (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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20201211 Address after: Room 206, 2 / F, building C, phase I, Zhongguancun Software Park, No. 8, Dongbei Wangxi Road, Haidian District, Beijing 100094 Applicant after: Canaan Bright Sight Co.,Ltd. Address before: 310000 Room 1203, 12/F, Building 4, No. 9, Jiuhuan Road, Jianggan District, Hangzhou City, Zhejiang Province Applicant before: Hangzhou Canaan Creative Information Technology Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |