CN112070652A - 数据压缩、解压方法、可读存储介质和电子设备 - Google Patents
数据压缩、解压方法、可读存储介质和电子设备 Download PDFInfo
- Publication number
- CN112070652A CN112070652A CN201910498607.XA CN201910498607A CN112070652A CN 112070652 A CN112070652 A CN 112070652A CN 201910498607 A CN201910498607 A CN 201910498607A CN 112070652 A CN112070652 A CN 112070652A
- Authority
- CN
- China
- Prior art keywords
- data
- sequence
- compression
- value
- data values
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 106
- 230000006837 decompression Effects 0.000 title claims abstract description 28
- 238000013144 data compression Methods 0.000 title claims abstract description 25
- 238000007906 compression Methods 0.000 claims abstract description 47
- 230000006835 compression Effects 0.000 claims abstract description 39
- 230000004044 response Effects 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 7
- 230000011218 segmentation Effects 0.000 claims description 7
- 239000000470 constituent Substances 0.000 claims 2
- 230000008569 process Effects 0.000 abstract description 49
- 238000012545 processing Methods 0.000 abstract description 30
- 238000013500 data storage Methods 0.000 abstract description 4
- 238000013507 mapping Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000012163 sequencing technique Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明实施例公开了一种数据压缩、解压方法、可读存储介质和电子设备,在数据的压缩和解压过程中通过图形处理器(GPU)实现数据的高并行处理,提高了压缩和解压过程的效率。同时根据数据中的数据值出现次数由多至少对数据中包含的数据值进行排序,以减小压缩过程中查询哈希字典时的冲突率,还根据所述图形处理器的不同存储区域的性能对数据存储位置进行选择,提高数据的访问速度和效率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据压缩、解压方法、可读存储介质和电子设备。
背景技术
现有技术的字典压缩算法都是在中央处理器(CPU)上串行执行的,这类算法首先会找出数据中包含的所有数据值并将所述数据存储在内存中,然后数据中包含的数据值数量计算编码长度。其后对每个数据值进行编码,之后将所述数据值作为键(key),所述编码作为值(value)通过哈希函数映射构建哈希字典。在写数据压缩包之前会存储数据信息,所述数据信息包括数据量,数据中包含的数据值,编码长度等。写数据压缩包的过程会在内存中依次取出数据值,通过哈希字典查找所述数据值对应的编码,并将该编码写入压缩包。解压时,首先从数据信息中获取编码与数据值的对应关系。对于每一个压缩数据通过查找上述对应关系即可得到原始数据。但由于中央处理器(CPU)的内核数量少,提供的线程数量有限,程序无法高并发执行,导致压缩效率较低,尤其在现今数据越来越大的情况下,利用中央处理器(CPU)对数据的压缩效率是非常低下的。同时在写压缩包时,需要对照哈希字典得到数据值对应的编码,传统的字典压缩算法对数据值不作任何处理依次进行哈希映射,直接导致在对照哈希字典写压缩包时,发生的哈希冲突的次数大大增加,影响写压缩包的效率。
发明内容
有鉴于此,本发明实施例提供数据压缩、解压方法、可读存储介质和电子设备,旨在减小压缩过程的冲突率,以及通过在图形处理器(GPU)等众核硬件上进行大规模并行压缩提高效率。
第一方面,本发明实施例提供一种数据压缩方法,包括:
获取第一数据分段的数据信息,所述数据信息包括全部数据值组成的序列、编码长度和每个数据值出现的次数;
根据每个数据值在所述序列中的位置确定对应的编码;
根据所述数据值和对应的编码组成的键值对构建哈希字典;
根据所述哈希字典确定所述第一数据分段中的每个数据值对应的编码,以确定第二数据;
将压缩信息和所述第二数据写入压缩文件,所述压缩信息包括数据值组成的序列和编码长度。
进一步地,所述获取第一数据分段的数据信息包括:
确定所述第一数据分段包含的数据值以及每个数据值出现的次数;
根据每个数据值出现的次数对所述数据值进行排序确定包含全部数据值的序列。
进一步地,所述根据所述数据值和对应的编码组成的键值对构建哈希字典包括:
响应于共享内存区域的剩余空间不小于所述哈希字典占用的空间,将所述哈希字典存储至所述共享内存区域。
进一步地,所述根据所述数据值和对应的编码组成的键值对构建哈希字典还包括:
响应于共享内存区域的剩余空间小于所述哈希字典占用的空间,将所述哈希字典存储至所述全局内存区域。
第二方面,本发明实施例提供一种数据压缩方法,包括:
获取第一数据的数据信息,所述数据信息包括全部数据值组成的序列、编码长度和每个数据值出现的次数;
根据每个数据值在所述序列中的位置确定对应的编码;
根据所述数据值和对应的编码组成的键值对构建哈希字典;
对所述第一数据进行数据分段以确定多个第一数据分段,所述第一数据分段的数据数量与所述编码长度的积为字节长度的整数倍;
控制多个线程以并行方式根据所述哈希字典确定每个第一数据分段中的数据值对应的编码,以确定第二数据;
将压缩信息和所述第二数据写入压缩文件,所述压缩信息包括数据值组成的序列和编码长度。
第三方面,本发明实施例提供一种数据解压方法,包括:
读取压缩文件中的压缩信息和第二数据,所述压缩信息包括数据值组成的序列和编码长度;
对所述第二数据进行数据分段以确定多个第二数据分段,所述第二数据分段的长度为所述编码长度和字节长度的整数倍;
控制多个线程以并行方式根据所述序列确定第二数据分段中包含的编码对应的数据值,以确定第一数据。
进一步地,所述读取压缩文件中的压缩信息和第二数据包括:
响应于共享内存区域的剩余空间不小于所述序列占用的空间,将所述序列存储至所述共享内存区域。
进一步地,所述读取压缩文件中的压缩信息和第二数据还包括:
响应于共享内存区域的剩余空间小于所述序列占用的空间,将所述序列分为第一序列和第二序列;
将所述第一序列存储至所述共享内存区域;
将所述第二序列存储至所述全局内存区域。
第四方面,本发明实施例提供一种电子设备,包括存储器和处理器,其特征在于,所述存储器用于存储一条或多条计算机程序指令,其中,所述一条或多条计算机程序指令被所述处理器执行以实现如第一方面、第二方面和第三方面中任一项所述的方法。
第五方面,本发明实施例提供一种计算机可读存储介质,用于存储计算机程序指令,其特征在于,所述计算机程序指令在被处理器执行时实现如第一方面、第二方面和第三方面中任一项所述的方法。
本发明实施例通过图形处理器(GPU)实现对数据压缩和解压的高并行处理,同时通过对数据值进行排序减小压缩过程的冲突率,以及通过对数据存储位置的选择提高数据的访问效率。
附图说明
通过以下参照附图对本发明实施例的描述,本发明的上述以及其它目的、特征和优点将更为清楚,在附图中:
图1为图形处理器和中央处理器组成的异构计算机架构示意图;
图2为图形处理器一个进程块的内存架构示意图;
图3为本发明实施例一种数据压缩方法流程图;
图4为本发明实施例另一种数据压缩方法流程;
图5为本发明实施例一种数据解压方法流程图;
图6为本发明实施例一种电子设备示意图。
具体实施方式
以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。为了避免混淆本发明的实质,公知的方法、过程、流程并没有详细叙述。
此外,本领域普通技术人员应当理解,在此提供的附图都是为了说明的目的,并且附图不一定是按比例绘制的。
除非上下文明确要求,否则整个说明书和权利要求书中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。
在本发明的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
图1为图形处理器和中央处理器组成的异构计算机架构示意图,如图1所示,所述异构计算机架构由中央处理器(CPU)和图形处理器(GPU)组成,所述中央处理器和图形处理器通过高速串行总线(PCIe-bus)连接。
具体地,所述中央处理器和所述图形处理器的运算核心包括控制单元(control)10、运算器(ALU)11、高速缓冲存储器(cache)12和动态随机存取存储器(DRAM)13。由图可见,中央处理器中的中的运算核心较少而图形处理器中的运算核心较多,使得所述图形处理器更为适合执行计算简单但并行性高的任务,而所述中央处理器更为适合执行计算复杂但并行性低的任务。在本发明实施例提供的数据压缩方法和数据解压方法过程中,可以通过中央处理器处理计算复杂且并行性较低的任务。同时可以通过图形处理器处理计算简单但并行性高的任务,例如控制多个线程以并行方式根据哈希字典将每个第一数据分段中的数据值替换为对应的编码以确定第二数据以及控制多个线程以并行方式根据所述序列将第二数据分段中包含的编码替换为对应的数据值。
因此,本发明实施例在数据的压缩和解压过程中通过图形处理器(GPU)实现数据的高并行处理,提高了压缩和解压过程的效率。同时根据数据中的数据值出现次数由多至少对数据中包含的数据值进行排序,以减小压缩过程中查询哈希字典时的冲突率,还根据所述图形处理器的不同存储区域的性能对数据存储位置进行选择,提高数据的访问速度和效率。
图3为本发明实施例一种数据压缩方法,如图3所示,所述数据压缩方法包括:
步骤S100:获取第一数据分段的数据信息。
具体地,所述数据信息包括所述第一数据分段中全部数据值组成的序列、编码长度和每个数据值出现的次数,所述编码长度根据所述序列中元素的数目计算得出。可选的,所述数据信息还可以包括数据量、数据类型等。所述第一数据分段为需要进行字典压缩的第一数据中的一个分段。在所述第一数据进行压缩时,先将所述第一数据分段为多个第一数据分段,为所述多个第一数据分段分配线程。当所述线程数多于第一数据分段数目时可以为每一个第一数据分段分配一个线程,当所述线程数少于第一数据分段数目时,可以为多个第一数据分段分配同一线程,每一个线程至少处理一个第一数据分段。每个线程并行的对所述第一数据分段进行压缩。
进一步地,所述获取第一数据分段的数据信息包括先确定所述第一数据分段包含的数据值以及每个数据值出现的次数,再根据每个数据值出现的次数对所述数据值进行排序确定包含全部数据值的序列。所述排序过程可以基于图形处理器并行处理。以所述数据为{1,2,3,4,4,5,3,4}为例。所述获取到的数据信息中的序列为{4,3,1,2,5},所述序列中数据值的数量分别为{3,2,1,1,1}。
步骤S200:根据每个数据值在所述序列中的位置确定对应的编码。
具体地,先根据所述数据值的数目确定所述编码的长度,再根据所述数据值在所述序列中的位置确定对应的编码,所述编码为所述数据值在所述序列中的位置。以所述序列为{1,2,3,4},所述编码为二进制编码为例进行说明。所述序列中包含数据值的数目为4,计算得出所述编码的长度为2,所述数据值1对应的编码值为所述数据值1在所述序列中的地址0,即00;所述数据值2对应的编码值为所述数据值2在所述序列中的地址1,即01;所述数据值3对应的编码值为所述数据值3在所述序列中的地址2,即10;所述数据值4对应的编码值为所述数据值4在所述序列中的地址3,即11。
步骤S300:根据所述数据值和对应的编码组成的键值对构建哈希字典。
具体地,在步骤S200中为所述数据值与所述编码之间建立了映射关系,因此每个所述数据值和对应的编码组成了一对键值对。所述哈希字典由所述序列中全部数据值和对应的编码组成的键值对构成。所述序列中的数据值顺序为由多至少进行排列,因此构建所述哈希字典时的映射顺序也根据所述序列中的数据值顺序确定,先对数量多的数据值所在的键值对进行映射。在构建哈希字典完成后,通过在所述哈希字典中查询所述数据值可得出对应的编码,因所述哈希字典在构建过程中先对数量多的数据值所在的键值对进行映射,在哈希字典的查询过程中可以减小冲突数量。
进一步地,为了提高查询所述哈希字典的效率,根据所述哈希字典的占用空间选择存储位置。如图2所示,每个图形处理器中所有的进程块均可访问全局内存区域21。所述一个进程块的内存架构包括所述进程块内所以线程共享的共享内存区域20。其中所述共享内存区域20的存储空间容量小,读写的速率快。所述全局内存区域21的存储空间大,但读写速度慢。在本实施例对数据进行压缩的过程中需要存储哈希字典,所述哈希字典占用的空间小于共享内存区域20的剩余存储空间时,将所述哈希字典存储至所述共享内存区域20,提高压缩过程中对所述哈希字典的查询速度。当所述哈希字典占用的空间大于共享内存区域20的剩余存储空间时,将所述哈希字典存储至所述全局内存区域21,便于所有进程块对所述哈希字典的查询。即响应于共享内存区域的剩余空间不小于所述哈希字典占用的空间,将所述哈希字典存储至所述共享内存区域。响应于共享内存区域的剩余空间小于所述哈希字典占用的空间,将所述哈希字典存储至所述全局内存区域,利用共享内存区域的快速读写性能提高查询效率。
步骤S400:根据所述哈希字典确定所述第一数据分段中的每个数据值对应的编码,以确定第二数据。
具体地,所述第二数据由编码组成,其中每个编码与所述第一数据分段中的数据值一一对应。所述确定第二数据的过程具体如下,先为所述第二数据申请一段地址空间,根据所述第一数据分段中的每个数据值查询哈希字典,确定所述数据值对应的编码,然后将对应编码写进所述地址空间中对应的位置,进而确定第二数据。
进一步地,在所述查询哈希字典的过程中,因构建所述哈希字典时的映射顺序也根据所述序列中的数据值顺序确定,所述哈希字典中的键值对也按照数据值由多至少的顺序进行插入,进而降低所述在哈希字典中查询与数据值对应的编码过程的冲突率,提高所述确定第二数据的效率。以所述序列为{1,2,3,6},其中所述数据值1的数目为10,所述数据值2的数目为7,所述数据值3的数目为30,所述数据值6的数目为1000为例。当预设的哈希函数为key%5(也即,将键对数值5取余操作,所述键为数据值)时,所述数据值1和所述数据值6散列后得到的地址均为1,在哈希散列过程中发生冲突。所述序列依次进行散列,在不对所述序列进行排序的情况下,所述数据值1所在的键值对优先存储至哈希表的地址1内,而所述数据值6需要利用线性探测法、链地址法、再散列法等方法再次寻址后存储。因此在对所述第一数据分段中的数据值查询并进行替换时,每当遇到数据值6时的查询过程都会发生冲突,需要再次寻址。数据值6在所述第一数据中的数目为1000,则共发生1000次冲突。在对所述序列进行排序的情况下,所述数据值6所在的键值对优先存储至哈希表的地址1内,而所述数据值1需要利用线性探测法、链地址法、再散列法等方法再次寻址后存储。因此在对所述第一数据分段中的数据值查询并进行替换时,每当遇到数据值1时的查询过程都会发生冲突,需要再次寻址。数据值1在所述第一数据中的数目为10,则共发生10次冲突。由此可知对所述序列进行的排序会减小冲突次数,提高所述确定第二数据过程的效率。
进一步地,当所述第一数据分段较短时,也可以省略所述步骤S300和步骤S400,即不构建哈希字典直接查找每个数据值在所述序列中的位置并相应的计算其对应的编码。
步骤S500:将压缩信息和第二数据写入压缩文件。
具体地,所述压缩信息包括数据值组成的序列和编码长度。优选地,所述压缩信息还可以包括数据值的数量和数据值的类型。所述压缩信息用于解压过程的调用。在写压缩文件时先将所述压缩信息写入压缩文件,再将所述第二数据写入压缩文件。所述步骤S500中将所述压缩信息写入压缩文件的过程和所述步骤S400可以同时进行。
所述数据压缩方法在数据的压缩过程中根据数据中的数据值出现次数由多至少对数据中包含的数据值进行排序,以减小压缩过程中查询哈希字典时的冲突率,还根据所述图形处理器的不同存储区域的性能对哈希字典的存储位置进行选择,减小压缩过程中查询哈希字典带来的消耗,提高访问速度和效率。
图4为本发明实施例另一种数据压缩方法流程图,如图4所示,所述数据压缩方法包括:
步骤S600:获取第一数据的数据信息。
具体地,所述数据信息包括全部数据值组成的序列、编码长度和每个数据值出现的次数,所述编码长度根据所述序列中元素的数目计算得出。所述数据值在所述序列中的位置可以通过根据所述数据值在所述第一数据中出现的次数确定。所述数据信息可以通过多种方式进行获取。作为本申请实施例的一个实现方式,所述过程包括先控制多个线程以并行方式对所述数据值进行排序,再根据排序后的第一数据获取数据信息。例如,先确定所述第一数据包含的数据值以及每个数据值出现的次数,再根据每个数据值出现的次数对所述数据值进行排序确定包含全部数据值的序列。所述排序过程可以基于图形处理器并行处理。以所述数据为{1,2,3,4,4,5,3,4}为例。所述获取到的数据信息中的序列为{4,3,1,2,5},所述序列中数据值的数量分别为{3,2,1,1,1}。
进一步地,所述数据信息还可以包括其他内容,例如数据量、数据类型等。
步骤S700:根据每个数据值在所述序列中的位置确定对应的编码。
具体地,先根据所述数据值的数目确定所述编码的长度,再根据所述数据值在所述序列中的位置确定对应的编码。以所述序列为{1,2,3,4},所述编码为二进制编码为例进行说明。所述序列中包含数据值的数目为4,计算得出所述编码的长度为2,所述数据值1对应的编码值为所述数据值1在所述序列中的地址0,即00;所述数据值2对应的编码值为所述数据值2在所述序列中的地址1,即01;所述数据值3对应的编码值为所述数据值3在所述序列中的地址2,即10;所述数据值4对应的编码值为所述数据值4在所述序列中的地址3,即11。
步骤S800:根据所述数据值和对应的编码组成的键值对构建哈希字典。
具体地,在步骤S700中为所述数据值与所述编码之间建立了映射关系,因此每个所述数据值和对应的编码组成了一对键值对。所述哈希字典由所述序列中全部数据值和对应的编码组成的键值对构成。所述序列中的数据值顺序为由多至少进行排列,因此构建所述哈希字典时的映射顺序也根据所述序列中的数据值顺序确定,先对数量多的数据值所在的键值对进行映射。在构建哈希字典完成后,通过在所述哈希字典中查询所述数据值可得出对应的编码,因所述哈希字典在构建过程中先对数量多的数据值所在的键值对进行映射,在哈希字典的查询过程中可以减小冲突数量。
进一步地,为了提高查询所述哈希字典的效率,根据所述哈希字典的占用空间选择存储位置。即响应于共享内存区域的剩余空间不小于所述哈希字典占用的空间,将所述哈希字典存储至所述共享内存区域。响应于共享内存区域的剩余空间小于所述哈希字典占用的空间,将所述哈希字典存储至所述全局内存区域,利用共享内存区域的快速读写性能提高查询效率。
步骤S900:对所述第一数据进行数据分段以确定多个第一数据分段。
具体地,将所述第一数据分成多个第一数据分段,为所述多个第一数据分段分配线程。为避免最后一个字节中出现无效的比特位,所述第一数据分段的数据数量与所述编码长度的积为字节长度的整数倍。当所述线程数多于第一数据分段数目时可以为每一个第一数据分段分配一个线程,当所述线程数少于第一数据分段数目时,可以为多个第一数据分段分配同一线程,每一个线程至少处理一个第一数据分段。
步骤S1000:控制多个线程以并行方式根据所述哈希字典确定每个第一数据分段中的数据值对应的编码,以确定第二数据。
具体地,所述第二数据由编码组成,其中每个编码与所述第一数据分段中的数据值一一对应。所述确定第二数据的过程具体如下,先为所述第二数据申请一段地址空间,控制多个线程以并行方式根据第一数据分段中的每个数据值查询哈希字典,确定所述数据值对应的编码,然后将对应编码写进所述地址空间中对应的位置,进而确定第二数据。进一步地,在所述查询哈希字典的过程中,因构建所述哈希字典时的映射顺序也根据所述序列中的数据值顺序确定,所述哈希字典中的键值对也按照数据值由多至少的顺序进行插入,进而降低所述在哈希字典中查询与数据值对应的编码过程的冲突率,提高所述确定第二数据的效率。
步骤S1100:将压缩信息和第二数据写入压缩文件。
具体地,所述压缩信息包括数据值组成的序列和编码长度。优选地,所述压缩信息还可以包括数据值的数量和数据值的类型。在写压缩文件时先将所述压缩信息写入压缩文件,再将所述第二数据写入压缩文件。所述步骤S1100中将所述数据信息写入压缩文件的过程和所述步骤S1000可以同时进行,即先将所述压缩信息写入压缩文件,再控制多个线程以并行方式根据哈希字典确定每个第一数据分段中的数据值对应的编码,将所述编码写入所述地址空间中对应的位置以确定第二数据,再将所述第二数据写入压缩文件。
所述数据压缩方法在数据的压缩和解压过程中通过图形处理器(GPU)实现数据的高并行处理,提高了压缩和解压过程的效率。同时根据数据中的数据值出现次数由多至少对数据中包含的数据值进行排序,以减小压缩过程中查询哈希字典时的冲突率,还根据所述图形处理器的不同存储区域的性能对数据存储位置进行选择,减小压缩过程中查询哈希字典的消耗,提高访问速度和效率。
图5为本发明实施例一种数据解压方法流程图,如图5所示,所述数据解压方法用于通过图3或图4所述数据压缩方法压缩得到的压缩文件,所述数据解压方法包括:
步骤S1200:读取压缩文件中的压缩信息和第二数据。
具体地,所述压缩信息包括数据值组成的序列和编码长度。优选地,所述压缩信息还可以包括数据值的数量和数据值的类型。所述第二数据为由编码组成的编码数据。其中所述序列中的数据值的排列顺序在所述压缩文件进行压缩时确定,其中数据值对应的编码在所述第二数据中出现的次数越多,则在序列中的位置越靠前。所述编码的值为所述数据值在所述序列中的位置。例如,所述序列为{1,2,3,4},所述编码为二进制编码时,所述数据值1对应的编码为00,所述数据值2对应的编码为01,所述数据值3对应的编码为10,所述数据值4对应的编码为11。
进一步地,通过所述序列存储位置的选择提高所述序列查询的效率,如图2所示,每个图形处理器中所有的进程块均可访问全局内存区域21。所述一个进程块的内存架构包括所述进程块内所以线程共享的共享内存区域20。其中所述共享内存区域20的存储空间容量小,读写的速率快。所述全局内存区域21的存储空间大,但读写速度慢。所述数据解压的过程需要对所述序列进行存储,当所述序列占用的空间小于所述共享内存区域20的剩余空间,则将所述序列存储至所述共享内存区域20。当所述序列占用的空间大于所述共享内存区域20的剩余空间,则将所述序列中使用率高的一部分数据存储至所述共享内存区域20,剩余的部分存储至所述全局内存区域21,提高解压过程中对所述序列的查询速度。即响应于共享内存区域的剩余空间不小于所述序列占用的空间,将所述序列存储至所述共享内存区域。响应于共享内存区域的剩余空间小于所述序列占用的空间,将所述序列分为第一序列和第二序列,将所述第一序列存储至所述共享内存区域;将所述第二序列存储至所述全局内存区域。具体而言,确认所述数据值出现数量较多的数据值组成的序列为第一序列,存储至所述共享内存区域;确认所述数据值出现数量较少的数据值组成的序列为第二序列,存储至所述全局内存区域。即根据所述序列占用的空间大小和不同内存区域的性能选择存储所述序列的位置,便于对所述序列进行读写操作。
步骤S1300:对所述第二数据进行数据分段以确定多个第二数据分段。
具体地,将所述第二数据分成多个第二数据分段,为所述多个第二数据分段分配线程。为防止所述分段操作将一个编码分入两个第二数据分段内,所述第二数据分段的长度为编码长度和字节长度的整数倍。当所述线程数多于第二数据分段数目时可以为每一个第二数据分段分配一个线程,当所述线程数少于第二数据分段数目时,每一个线程至少处理一个第二数据分段。
步骤S1400:控制多个线程以并行方式根据所述序列确定第二数据分段中包含的编码对应的数据值,以确定第一数据。
具体地,所述第一数据为所述第二数据包含的编码替换为对应的数据值组成的数据,所述第一数据中的数据值与所述第二数据中的编码一一对应。所述步骤S1300为所述第二数据分段分配线程后,先为所述第一数据申请一段地址空间,控制多个线程以并行方式计算所述编码的值,再通过所述编码值在所述序列中对应的位置确定对应数据值。然后将编码对应的数据值写进所述地址空间中对应的位置,进而确定第一数据。
进一步地,当所述序列中的数据值根据对应的编码在所述第二数据中出现的数量由多至少进行排序,并将所述序列中使用率高的一部分数据存储至所述共享内存区域,剩余的部分数据存储至所述全局内存区域后,提高了所述确定第一数据的效率。以所述序列为{1,2,3,4},其中所述数据值1对应的编码的数目为10,所述数据值2对应的编码的数目为7,所述数据值3对应的编码的数目为30,所述数据值4对应的编码的数目为1000,所述共享区剩余空间可以存储两个数据值为例。当未对所述序列进行排序时,所述数据值{1,2}存储至所述共享内存区域,所述数据值{3,4}存储至所述全局内存区域。在根据编码值查询对应数据值的过程中对所述数据值1或2对应的编码在所述共享内存区域内进行查询,对所述数据值3或4对应的编码在所述全局内存区域内进行查询,因此在所述共享内存区域内进行查询的次数为17,在所述全局内存区域内进行查询的次数为1030。当对所述序列进行排序后,所述数据值{3,4}存储至所述共享内存区域,所述数据值{1,2}存储至所述全局内存区域。在根据编码值查询对应数据值的过程中对所述数据值1或2对应的编码在所述全局内存区域内进行查询,对所述数据值3或4对应的编码在所述共享内存区域内进行查询,因此在所述共享内存区域内进行查询的次数为1030,在所述全局内存区域内进行查询的次数为17。因对所述共享内存区域内的数据进行读写的速度高于对所述全局内存区域内的数据进行读写的速度,对所述序列排序后进行存储的过程提高了所述确定第一数据过程的速度和效率。
所述数据解压方法在数据的解压过程中通过图形处理器(GPU)实现数据的高并行处理,提高了解压过程的效率。同时根据所述图形处理器的不同存储区域的性能对序列的存储位置进行选择,提高对序列中数据值的访问速度和效率。
图6为本发明实施例的电子设备的示意图,如图6所示,在本实施例中,所述电子设备包括服务器、终端等。如图所示,所述电子设备包括:至少一个第一处理器62和一个第二处理器63组成的异构计算机架构,所述第一处理器例如可以是中央处理器(CPU),所述第二处理器例如可以是图形处理器(GPU);与至少一个所述异构计算机架构通信连接的存储器61;以及与存储介质通信连接的通信组件64,通信组件64在异构计算机架构的控制下接收和发送数据;其中,存储器61存储有可被至少一个异构计算机架构执行的指令,指令被至少一个异构计算机架构执行以实现上述实施例中的数据压缩、解压方法。
具体地,所述存储器61作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。异构计算机架构通过运行存储在存储器61中的非易失性软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述数据压缩、解压方法。
存储器61可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储选项列表等。此外,存储器61可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器61可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至外接设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
一个或者多个模块存储在存储器61中,当被异构计算机架构执行时,执行上述任意方法实施例中的数据压缩、解压方法。
上述产品可执行本申请实施例所提供的方法,具备执行方法相应的功能模块和有益效果,未在本实施例中详尽描述的技术细节,可参见本申请实施例所提供的方法。
本发明还涉及一种计算机可读存储介质,用于存储计算机可读程序,所述计算机可读程序用于供计算机执行上述部分或全部的方法实施例。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种数据压缩方法,其特征在于,包括:
获取第一数据分段的数据信息,所述数据信息包括全部数据值组成的序列、编码长度和每个数据值出现的次数;
根据每个数据值在所述序列中的位置确定对应的编码;
根据所述数据值和对应的编码组成的键值对构建哈希字典;
根据所述哈希字典确定所述第一数据分段中的每个数据值对应的编码,以确定第二数据;
将压缩信息和所述第二数据写入压缩文件,所述压缩信息包括数据值组成的序列和编码长度。
2.如权利要求1所述的方法,其特征在于,所述获取第一数据分段的数据信息包括:
确定所述第一数据分段包含的数据值以及每个数据值出现的次数;
根据每个数据值出现的次数对所述数据值进行排序确定包含全部数据值的序列。
3.如权利要求1所述的方法,其特征在于,所述根据所述数据值和对应的编码组成的键值对构建哈希字典包括:
响应于共享内存区域的剩余空间不小于所述哈希字典占用的空间,将所述哈希字典存储至所述共享内存区域。
4.如权利要求1所述的方法,其特征在于,所述根据所述数据值和对应的编码组成的键值对构建哈希字典还包括:
响应于共享内存区域的剩余空间小于所述哈希字典占用的空间,将所述哈希字典存储至所述全局内存区域。
5.一种数据压缩方法,其特征在于,包括:
获取第一数据的数据信息,所述数据信息包括全部数据值组成的序列、编码长度和每个数据值出现的次数;
根据每个数据值在所述序列中的位置确定对应的编码;
根据所述数据值和对应的编码组成的键值对构建哈希字典;
对所述第一数据进行数据分段以确定多个第一数据分段,所述第一数据分段的数据数量与所述编码长度的积为字节长度的整数倍;
控制多个线程以并行方式根据所述哈希字典确定每个第一数据分段中的数据值对应的编码,以确定第二数据;
将压缩信息和所述第二数据写入压缩文件,所述压缩信息包括数据值组成的序列和编码长度。
6.一种数据解压方法,其特征在于,包括:
读取压缩文件中的压缩信息和第二数据,所述压缩信息包括数据值组成的序列和编码长度;
对所述第二数据进行数据分段以确定多个第二数据分段,所述第二数据分段的长度为所述编码长度和字节长度的整数倍;
控制多个线程以并行方式根据所述序列将第二数据分段中包含的编码确定对应的数据值,以确定第一数据。
7.如权利要求6所述的方法,其特征在于,所述读取压缩文件中的压缩信息和第二数据包括:
响应于共享内存区域的剩余空间不小于所述序列占用的空间,将所述序列存储至所述共享内存区域。
8.如权利要求6所述的方法,其特征在于,所述读取压缩文件中的压缩信息和第二数据还包括:
响应于共享内存区域的剩余空间小于所述序列占用的空间,将所述序列分为第一序列和第二序列;
将所述第一序列存储至所述共享内存区域;
将所述第二序列存储至所述全局内存区域。
9.一种电子设备,包括存储器和处理器,其特征在于,所述存储器用于存储一条或多条计算机程序指令,其中,所述一条或多条计算机程序指令被所述处理器执行以实现如权利要求1-8中任一项所述的方法。
10.一种计算机可读存储介质,用于存储计算机程序指令,其特征在于,所述计算机程序指令在被处理器执行时实现如权利要求1-8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910498607.XA CN112070652A (zh) | 2019-06-10 | 2019-06-10 | 数据压缩、解压方法、可读存储介质和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910498607.XA CN112070652A (zh) | 2019-06-10 | 2019-06-10 | 数据压缩、解压方法、可读存储介质和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112070652A true CN112070652A (zh) | 2020-12-11 |
Family
ID=73658152
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910498607.XA Pending CN112070652A (zh) | 2019-06-10 | 2019-06-10 | 数据压缩、解压方法、可读存储介质和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112070652A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113469215A (zh) * | 2021-05-28 | 2021-10-01 | 北京达佳互联信息技术有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN114040028A (zh) * | 2021-10-29 | 2022-02-11 | 深圳智慧林网络科技有限公司 | 一种基于三种模式的数据压缩方法和数据解压方法 |
CN114040027A (zh) * | 2021-10-29 | 2022-02-11 | 深圳智慧林网络科技有限公司 | 一种基于双模式的数据压缩方法、装置和数据解压方法 |
CN117331512A (zh) * | 2023-12-01 | 2024-01-02 | 芯动微电子科技(武汉)有限公司 | 对gpu核内存储器执行写操作的数据压缩及处理方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101556546A (zh) * | 2009-05-27 | 2009-10-14 | 北京联合大学 | 一种基于计算机集群的压缩程序并行化的处理方法 |
CN103326730A (zh) * | 2013-06-06 | 2013-09-25 | 清华大学 | 数据并行压缩方法 |
US20130297575A1 (en) * | 1998-12-11 | 2013-11-07 | Realtime Data LLC DBA IXO | Data management systems and methods using compression |
CN103714009A (zh) * | 2013-12-20 | 2014-04-09 | 华中科技大学 | 一种GPU上基于内存统一管理的MapReduce实现方法 |
CN103916131A (zh) * | 2013-01-02 | 2014-07-09 | 三星电子株式会社 | 压缩数据的方法和用于执行该方法的设备 |
CN103984528A (zh) * | 2014-05-15 | 2014-08-13 | 中国人民解放军国防科学技术大学 | 基于飞腾处理器平台的多线程并发数据压缩方法 |
CN106603677A (zh) * | 2016-12-21 | 2017-04-26 | 济南浪潮高新科技投资发展有限公司 | 一种使用多核多线程并行的物理信息系统数据压缩传输方法 |
CN107169097A (zh) * | 2017-05-15 | 2017-09-15 | 郑州云海信息技术有限公司 | 一种Spark Broadcasthashjoin操作的改进方法 |
CN108897847A (zh) * | 2018-06-28 | 2018-11-27 | 中国人民解放军国防科技大学 | 基于局部敏感哈希的多gpu密度峰值聚类方法 |
-
2019
- 2019-06-10 CN CN201910498607.XA patent/CN112070652A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130297575A1 (en) * | 1998-12-11 | 2013-11-07 | Realtime Data LLC DBA IXO | Data management systems and methods using compression |
CN101556546A (zh) * | 2009-05-27 | 2009-10-14 | 北京联合大学 | 一种基于计算机集群的压缩程序并行化的处理方法 |
CN103916131A (zh) * | 2013-01-02 | 2014-07-09 | 三星电子株式会社 | 压缩数据的方法和用于执行该方法的设备 |
CN103326730A (zh) * | 2013-06-06 | 2013-09-25 | 清华大学 | 数据并行压缩方法 |
CN103714009A (zh) * | 2013-12-20 | 2014-04-09 | 华中科技大学 | 一种GPU上基于内存统一管理的MapReduce实现方法 |
CN103984528A (zh) * | 2014-05-15 | 2014-08-13 | 中国人民解放军国防科学技术大学 | 基于飞腾处理器平台的多线程并发数据压缩方法 |
CN106603677A (zh) * | 2016-12-21 | 2017-04-26 | 济南浪潮高新科技投资发展有限公司 | 一种使用多核多线程并行的物理信息系统数据压缩传输方法 |
CN107169097A (zh) * | 2017-05-15 | 2017-09-15 | 郑州云海信息技术有限公司 | 一种Spark Broadcasthashjoin操作的改进方法 |
CN108897847A (zh) * | 2018-06-28 | 2018-11-27 | 中国人民解放军国防科技大学 | 基于局部敏感哈希的多gpu密度峰值聚类方法 |
Non-Patent Citations (1)
Title |
---|
谭强明: "HASH 编码数据压缩", 计算机应用与软件, no. 3, pages 27 - 33 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113469215A (zh) * | 2021-05-28 | 2021-10-01 | 北京达佳互联信息技术有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN113469215B (zh) * | 2021-05-28 | 2022-07-08 | 北京达佳互联信息技术有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN114040028A (zh) * | 2021-10-29 | 2022-02-11 | 深圳智慧林网络科技有限公司 | 一种基于三种模式的数据压缩方法和数据解压方法 |
CN114040027A (zh) * | 2021-10-29 | 2022-02-11 | 深圳智慧林网络科技有限公司 | 一种基于双模式的数据压缩方法、装置和数据解压方法 |
CN114040028B (zh) * | 2021-10-29 | 2023-11-24 | 深圳智慧林网络科技有限公司 | 一种基于三种模式的数据压缩方法和数据解压方法 |
CN114040027B (zh) * | 2021-10-29 | 2023-11-24 | 深圳智慧林网络科技有限公司 | 一种基于双模式的数据压缩方法、装置和数据解压方法 |
CN117331512A (zh) * | 2023-12-01 | 2024-01-02 | 芯动微电子科技(武汉)有限公司 | 对gpu核内存储器执行写操作的数据压缩及处理方法 |
CN117331512B (zh) * | 2023-12-01 | 2024-04-12 | 芯动微电子科技(武汉)有限公司 | 对gpu核内存储器执行写操作的数据压缩及处理方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112070652A (zh) | 数据压缩、解压方法、可读存储介质和电子设备 | |
CN110268394B (zh) | 用于存储和操作键值数据的方法、系统及机器可读存储媒体 | |
CN110383261B (zh) | 用于多流存储装置的流选择 | |
US9946462B1 (en) | Address mapping table compression | |
US20190266193A1 (en) | Data processing method for bloom filter, and bloom filter | |
US10224957B1 (en) | Hash-based data matching enhanced with backward matching for data compression | |
US9977598B2 (en) | Electronic device and a method for managing memory space thereof | |
Andrzejewski et al. | GPU-WAH: Applying GPUs to compressing bitmap indexes with word aligned hybrid | |
CN107665095B (zh) | 存储器空间管理的设备、方法及可读存储介质 | |
US10482021B2 (en) | Priority-based storage and access of compressed memory lines in memory in a processor-based system | |
US8674858B2 (en) | Method for compression and real-time decompression of executable code | |
RU2633178C2 (ru) | Способ и система базы данных для индексирования ссылок на документы базы данных | |
CN112085644B (zh) | 多列数据排序方法、装置、可读存储介质和电子设备 | |
CN108377394A (zh) | 视频编码器的图像数据读取方法、计算机装置及计算机可读存储介质 | |
CN116400852A (zh) | 固态硬盘写性能的优化方法、装置、计算机设备及存储介质 | |
KR20150117522A (ko) | 그래픽스 상태 관리 장치 및 방법 | |
CN117369731B (zh) | 一种数据的缩减处理方法、装置、设备及介质 | |
US7484068B2 (en) | Storage space management methods and systems | |
CN112612790B (zh) | 卡号配置方法、装置、设备及计算机存储介质 | |
CN116975006A (zh) | 基于磁盘缓存及b树索引的数据去重方法、系统及介质 | |
Andrzejewski et al. | GPU-PLWAH: GPU-based implementation of the PLWAH algorithm for compressing bitmaps | |
US7676651B2 (en) | Micro controller for decompressing and compressing variable length codes via a compressed code dictionary | |
CN107341113B (zh) | Cache的压缩方法和装置 | |
CN112100446B (zh) | 搜索方法、可读存储介质和电子设备 | |
CN110019232B (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 |