CN107748794B - 一种空间数据存储方法 - Google Patents
一种空间数据存储方法 Download PDFInfo
- Publication number
- CN107748794B CN107748794B CN201711070905.6A CN201711070905A CN107748794B CN 107748794 B CN107748794 B CN 107748794B CN 201711070905 A CN201711070905 A CN 201711070905A CN 107748794 B CN107748794 B CN 107748794B
- Authority
- CN
- China
- Prior art keywords
- data
- hash table
- hash
- value
- stored
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 58
- 238000013500 data storage Methods 0.000 title claims abstract description 18
- 238000007906 compression Methods 0.000 claims abstract description 16
- 230000006835 compression Effects 0.000 claims abstract description 16
- 238000013507 mapping Methods 0.000 claims description 10
- 239000011159 matrix material Substances 0.000 claims description 8
- 101100322888 Escherichia coli (strain K12) metL gene Proteins 0.000 claims description 3
- 238000010187 selection method Methods 0.000 claims description 3
- 230000007717 exclusion Effects 0.000 abstract description 7
- 230000006870 function Effects 0.000 description 10
- 238000010276 construction Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 239000000523 sample Substances 0.000 description 3
- 238000005457 optimization Methods 0.000 description 2
- 230000003252 repetitive effect Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明属于计算机数据处理与存储技术领域,具体公开了一种空间数据存储方法,利用多层哈希迭代压缩存储,输入空间数据域中分成多组,每组中的数据具有相同的数据值,每组重复有效数据压缩到哈希表的同一个位置,利用互斥将剩余数据排出到间接表,继续进行下一层的哈希迭代压缩存储处理,将所有的有效数据分层地存储到多个哈希表内,并利用一个覆盖表标记有效数据被压缩在哪一层的哈希表内,根据覆盖表和存储哈希表能够快速对空间数据进行查找。本方法使用多个很小的哈希表无损、高效地存储空间数据,极大减少了内存需求量,并保证对GPU的快速随机访问性能。
Description
技术领域
本发明涉及计算机数据处理与存储技术领域,特别是涉及一种利用哈希方法对空间数据进行存储的数据存储方法。
背景技术
数据的存储和查找的方式,一直业界人士研究的课题。尤其涉及到图形学中,空间数据存在着大量的重复数据,例如,2D和3D纹理涉及到的数据通常是重复性的。如何在数据的高效存储与随机访问性能之间进行平衡,成为一个研究热点。通常的哈希算法是在哈希表中使用顺序的探针。此外,每个入口处的探针数量的不统一导致了在GPU上的低效率,因为根据单指令多数据流并行原理,所有线程都要等待具有最坏性能的探针。
2006年,Lefebvre和Hoppe首次使用完美哈希在GPU上实现对哈希表的访问。然而,该方法由于数据的位置取决于之前数据的位置,在该完美哈希方法中,所有的数据应当分别存储在哈希表的不同位置上。此外,即使那些重复的数据也要存储在哈希表的不同位置上。因此,哈希表的构建十分昂贵。
Myung等人提出了一种不含有父子指针的无链接八叉树,他使用完美哈希对细分的结点进行编码。然而,这些具有层次的结构在GPU上的随机访问性能却很低效。
发明内容
本发明主要解决的技术问题是提供一种空间数据存储方法,该存储方法能够无损地、高效地将数据压缩到较小的哈希表中,并保持对GPU的简单的随机访问。
为解决上述技术问题,本发明的空间数据存储方法采用的技术方案是:包括如下步骤:
第一步,读取原始的空间数据域U0,原始的空间数据域U0为d维度的数据域,将原始的空间数据域U0作为第一次压缩存储的输入空间数据域,由原始的空间数据域U0中的各数据所在的位置形成覆盖表C’;
第二步,识别所述输入空间数据域中的所有数据,并将需要存储的数据记为有效数据,有效数据的集合记为Ri,不需要存储的数据记为无效数据,其中i为当前迭代的次数,i取整数;
第三步,建立大小为mi的哈希表Ei,其中mi小于所述输入空间数据域的大小;
第四步,利用哈希函数对所述输入空间数据域中的有效数据集合Ri向哈希表Ei内压缩映射,映射到哈希表Ei中位置qi的有效数据记为集合hi -1(qi)∩Ri,其中,pi为有效数据在所述输入空间数据域中的位置,哈希系数M0设置为单位矩阵,为单一维度上哈希表Ei的大小;
第五步,将哈希表Ei中的位置qi进行赋值Ei(qi),将集合hi -1(qi)∩Ri中有效数据的值与值Ei(qi)相同的有效数据记为选定数据,有效数据的值与值Ei(qi)不相同的有效数据记为剩余数据,将选定数据压缩存储到哈希表Ei内的位置qi,形成存储所述选定数据的存储哈希表Ei',将剩余数据按照其在所述输入空间数据域内的位置移入到间接表Ui内,在覆盖表C’中将存储到哈希表Ei内的选定数据的位置标记成第i次压缩存储;
第六步,若输出的间接表Ui中的有效数据的集合Ri为空,则所述原始的空间数据域U0中的有效数据存储结束;若输出的间接表Ui中的有效数据的集合Ri不为空,则将间接表Ui作为下一次迭代压缩存储的输入空间数据域,并将覆盖表C’沿用到下一次迭代处理过程中,返回执行第二步操作。
进一步优选地,哈希表Ei的大小mi的选取方法为:所述输入空间数据域中的有效数据根据数据值不同,有效数据的集合Ri分为gi个不同的分组,同一个分组中的有效数据具有相同的数据值,不同分组的有效数据具有不同的数据值,满足条件的最小的mi作为哈希表Ei的大小。
进一步优选地,在哈希表Ei中的位置qi进行赋值Ei(qi)的方法为:当集合hi -1(qi)∩Ri中所有的有效数据都具有相同的数据值时,将该数据值赋给哈希表Ei中的位置qi,即当集合hi -1(qi)∩Ri中的有效数据具有不同的数据值时,对于集合hi -1(qi)∩Ri中所有的有效数据,选择一个特定的值使得集合拥有最多具有相同值的重复有效数据,其中,V(pi)表示位置pi的数据值,然后,将该特定的数据值赋给赋给哈希表Ei中的位置qi,即否则,如果集合hi -1(qi)∩Ri为空,则哈希表Ei中的位置qi的值Ei(qi)保持为默认值。
进一步优选地,所述d=2或d=3。
进一步优选地,在第六步中,当i=6时,且第六步中的输出的间接表U6中的有效数据的集合R6不为空,则执行第七步,即将第6次输出的间接表U6作为完美哈希处理的输入空间数据域,根据U6内的有效数据的位置,建立完美哈希表将间接表U6中的有效数据集合R6中的有效数据一一映射到完美哈希表的对应的位置中进行存储。
本发明的有益效果是:本方法利用多层哈希迭代压缩存储,每一层哈希迭代压缩存储过程中,该层的哈希表的每一个位置存储的数据为,有效数据中的数据值与哈希表的位置的值相同的重复的有效数据,利用互斥冲突将数据值与哈希表的位置的值不同的剩余数据排出到间接表Ui,继续进行下一层的哈希迭代压缩存储处理,将所有的有效数据分层的存储到i个哈希表内,并利用一个覆盖表C’标记有效数据被压缩在哪一层的哈希表内,根据覆盖表C’和存储哈希表能够快速对空间数据进行查找。本方法的哈希表的大小远远小于原始的空间数据域U0,因此占用的内存很小,并且哈希表的构建也很简单。本方法使用多个很小的哈希表无损、高效地存储空间数据,极大减少了内存需求量,并保证对GPU的快速随机访问性能。
附图说明
图1是本发明的空间数据存储方法的实施例的流程图;
图2是本发明的空间数据存储方法的实施例中一层哈希迭代压缩存储方法的构架图;
图3是本发明的空间数据存储方法的实施例中哈希迭代压缩存储方法的示例图;
图4是本发明的空间数据存储方法的实施例的另一个应用示例图。
具体实施方式
下面详细描述本发明的实施方式,所述实施方式的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
本技术领域技术人员可以理解的是,本发明中涉及到的相关模块及其实现的功能是在改进后的硬件及其构成的装置、器件或***上搭载现有技术中常规的计算机软件程序或有关协议就可实现,并非是对现有技术中的计算机软件程序或有关协议进行改进。例如,改进后的计算机硬件***依然可以通过装载现有的软件操作***来实现该硬件***的特定功能。因此,可以理解的是,本发明的创新之处在于对现有技术中硬件模块的改进及其连接组合关系,而非仅仅是对硬件模块中为实现有关功能而搭载的软件或协议的改进。
本技术领域技术人员可以理解的是,本发明中提到的相关模块是用于执行本申请中所述操作、方法、流程中的步骤、措施、方案中的一项或多项的硬件设备。所述硬件设备可以为所需的目的而专门设计和制造,或者也可以采用通用计算机中的已知设备或已知的其他硬件设备。所述通用计算机有存储在其内的程序选择性地激活或重构。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的任一单元和全部组合。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语)具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不会用理想化或过于正式的含义来解释。
下面对本申请的空间数据存储方法的实施方式进行详细的描述。
空间数据的压缩存储是计算机图形学中的一个基础性工作。许多图形学应用都涉及到具有大量重复数据的空间数据。例如,2D和3D纹理涉及到的数据通常是重复性的。
在详细介绍本实施例对大量重复数据的空间数据进行压缩处理的方法之前,先对空间数据中的一些术语进行解释,术语“有效数据”指的是空间数据域中需要被存储的数据,比如图片中的颜色数据;术语“分组”指的是由拥有相同数据值的重复有效数据组成,被认为是一个分组数据,也就是说,一个分组里的(许多个)重复有效数据都被压缩到哈希表的同一个位置。术语“互斥冲突”指的是,每个哈希表的哈希值为映射到该位置的所有有效数据中重复率最高的有效数据,并将该重复率最高的有效数据存储到该位置上,数据值与重复率最高的有效数据的数据值不同的有效数据不能存储在哈希表的同一个位置。最后,术语“空间”指的是哈希是用于解决多维数据集的点访问,其能在GPU上进行高效实现,其中用d来表示空间数据域的维度。
如图1所示,本实施例的流程图,利用本实施例对空间数据域进行迭代压缩存储包括如下步骤:
第一步,读取原始的空间数据域U0,其中,原始的空间数据域U0表示一个d维度的栅格数据,其中d=2或d=3。将原始的空间数据域U0作为第一层迭代的输入空间数据域,由原始的空间数据域U0中的各数据所在的位置形成覆盖表C’,其中,这里所指的第一层即为第一次迭代,第i层即为第i次迭代。
第二步,识别输入空间数据域中的所有数据,并将需要存储的数据记为有效数据,有效数据的集合记为Ri,不需要存储的数据记为无效数据,其中i为当前迭代的次数,i取整数;
第三步,建立大小为mi的哈希表Ei,其中mi小于输入空间数据域的大小;
第四步,利用哈希函数对输入空间数据域中的有效数据集合Ri向哈希表Ei内压缩映射,映射到哈希表Ei中位置qi的有效数据记为集合hi -1(qi)∩Ri,其中,pi为有效数据在所述输入空间数据域中的位置,哈希系数M0设置为单位矩阵,为单一维度上哈希表Ei的大小;
第五步,将哈希表Ei中的位置qi进行赋值Ei(qi),将集合hi -1(qi)∩Ri中有效数据的值与值Ei(qi)相同的有效数据记为选定数据,有效数据的值与值Ei(qi)不相同的有效数据记为剩余数据,将选定数据压缩存储到哈希表Ei内的位置qi,形成存储选定数据的存储哈希表Ei',将剩余数据按照其在输入空间数据域内的位置移入到间接表Ui内,在覆盖表C’中将存储到哈希表Ei内的选定数据的位置标记成第i次压缩存储;
第六步,若输出的间接表Ui中的有效数据的集合Ri为空,则原始的空间数据域U0中的有效数据存储结束;若输出的间接表Ui中的有效数据的集合Ri不为空,则将间接表Ui作为下一次迭代压缩存储的输入空间数据域,并将覆盖表C’沿用到下一次迭代处理过程中,返回执行第二步操作。
进一步优选地,哈希表Ei大小mi的选取方法为:输入空间数据域中的所有数据根据数据值不同,有效数据的集合Ri分为gi个不同的分组,同一个分组中的数据具有相同的数据值,不同分组的数据具有不同的数据值,满足条件的最小的mi作为哈希表Ei的大小。
进一步优选地,本实施例哈希表Ei的创建方法为:对于输入空间数据域中的位置pi的数据,进行取模运算并将取模运算的结果映射为哈希表Ei的位置qi,其中参数M0是一个d×d的矩阵,其值为单位矩阵。函数hi(pi):Ui-1→Ei是多对一的哈希映射,它在多个维度上分别对哈希表大小进行简单的取模运算,从而用于将对应的数据映射到哈希表中的特定位置。
进一步优选地,在哈希表Ei中的位置qi进行赋值Ei(qi)的方法为:当集合hi -1(qi)∩Ri中所有的有效数据都具有相同的数据值时,将该数据值赋给哈希表Ei中的位置qi,即当集合hi -1(qi)∩Ri中的有效数据具有不同的数据值时,对于集合hi -1(qi)∩Ri中所有的有效数据,选择一个特定的值使得集合拥有最多具有相同值的重复有效数据,其中,V(pi)表示位置pi的数据值,然后,将该特定的数据值赋给赋给哈希表Ei中的位置qi,即否则,如果集合hi -1(qi)∩Ri为空,则哈希表Ei中的位置qi的值Ei(qi)保持为默认值。
本实施例对原始的空间数据域进行迭代压缩存储结束后,输出的为一个记录原始的空间数据域中的有效数据存储层数的覆盖表C’,若干个压缩存储有效重复数据的存储哈希表Ei'。本实施例是一种多层的无损的哈希压缩存储方法,该方法将原始的空间数据域压缩到几个很小的哈希表中,同时能够保持高效的随机访问性能。具体地,本实施例将具有相同数据值(即value值相同,如不同像素具有相同的颜色值)的重复的有效数据映射到哈希表的同一个位置,根据互斥冲突的原则,将具有不同值的有效数据存入到间接表中进行下一次迭代压缩存储。对于哈希表中的每个位置,一个位置可以代替一组数量庞大的重复数据。根据不同的应用场景,这一组的重复数据的数量可能是几十个、几百个,甚至更多,本实施例使用一张覆盖表标记被压缩的有效数据所存储的哈希表的层数,保证了高效的访问性能。本实施例充分利用有效数据之间的互斥冲突,因此,哈希表的每个位置都可以存储尽量多的重复的有效数据,那些未被压缩的有效数据将进入到下一次的迭代中。本实施例的哈希表的构建可以在预处理的过程中完成,并且哈希表的构建也非常的简单,存储过程也非常的简单,因此空间数据的压缩效率得到提升。本实施例仅用几个极小的哈希表就能存储所有的重复数据,并实现在GPU上的高效随机访问。本实施例极大地减少了内存需求量,并且是无损的存储。当本实施例在GPU上存储时,仅需要三条shader指令就能实现高效地随机访问。
如图2和图3所示,以使用本实施例将一个d=2维度的栅格数据进行迭代压缩存储举例,详细说明本实施例的迭代压缩存储过程。
原始的空间数据域U0为2维的6×6的栅格数据,即d=2,原始的空间数据域U0内共包含36个数据,其中,需要存储的数据为a1、a2、a3、b1、b2、b3、c1、c2、c3、c4、c5,即有效数据的集合记为R1内包括11个数据,其余的25个为不需要存储的数据,记为无效数据。由原始的空间数据域U0中的各数据所在的位置形成6×6的栅格的覆盖表C’,其中
以下开始进行迭代压缩存储步骤。以下所指的第一层即为第一次迭代,第i层即为第i次迭代。
如图2和图3所示,第一层迭代压缩存储过程为,将原始的空间数据域U0作为第一层迭代的输入空间数据域,将U0中的有效数据集合R1分成g1=3组,{a1、a2、a3}、{b1、b2、b3}和{c1、c2、c3、c4、c5},其中每组中的有效数据都具有相同的数据值。
根据哈希表的大小,利用哈希函数进行取模运算,其中参数M0是一个2×2的矩阵,其值为单位矩阵。有效数据{c3}映射到哈希表的(0,0)位置,有效数据{b2、b3}映射到哈希表的(0,1)位置,有效数据{b1、c1、c4}映射到哈希表的(1,0)位置,有效数据{a1、a2、a3、c2、c5}映射到哈希表的(1,1)位置。
下一步,就需要将哈希表E1内的各位置进行赋值,赋值过程为:
在哈希表E1的(0,0)位置,只映射一个有效数据{c3},该有效数据{c3}的数据值则该位置的数据值则{c3}被存储在哈希表E1的(0,0)位置,覆盖表C’中各有效数据的位置与原始的空间数据域U0相对应,在覆盖表C’中有效数据{c3}的位置处标记成1,指有效数据{c3}在第一层迭代时被存储在存储哈希表E1'中。
在哈希表E1的(0,1)位置,映射有效数据{b2、b3},由于有效数据b2,b3具有相同的数据值,即则将数据值B赋给哈希表的(0,1)位置,即E1(0,1)=B,则有效数据{b2、b3}被存储在哈希表E1的(0,1)位置,在覆盖表C’中有效数据{b2、b3}的位置处标记成1,指有效数据{b2、b3}在第一层迭代时被存储在存储哈希表E1'中。
在哈希表E1的(1,0)位置,映射有效元素{b1、c1、c4},由于该有效数据的集合中存在不同的数据值有效数据时,即 但是具有数据值C的有效数据较多,所以我们选定特定的值C作为位置(1,0)的值,即E1(1,0)=C,因此该值可以代替最多的重复的有效数据{c1、c4},此时,有效数据{c1、c4}被存储在哈希表E1的(1,0)位置,有效数据{b1}被互斥冲突原则移入到间接表U1的位置(1,2),在覆盖表C’中有效数据{c1、c4}的位置处标记成1,指有效数据{c1、c4}在第一层迭代时被存储在存储哈希表E1'中。
在哈希表E1的(1,1)位置,映射有效元素有效数据{a1、a2、a3、c2、c5},由于该有效数据的集合中存在不同的数据值的有效数据,即A≠C,但是具有数据值A的有效数据较多,因此我们选定特定的值A作为位置(1,1)的值,即E1(1,1)=A,因此,该值可以代替最多的重复有效数据{a1、a2、a3},此时,有效数据{c2}、{c5}被互斥冲突原则分别对应移入到间接表U1的位置(3,5)和(5,3),在覆盖表C’中有效数据{a1、a2、a3}的位置处标记成1,指有效数据{a1、a2、a3}在第一层迭代时被存储在存储哈希表E1'中。
第一层迭代输出为一个标记被存储的有效数据所在的层数的覆盖表C’,一个存储有有效数据的存储哈希表E1',以及存储有通过互斥冲突原则移入有有效元素的间接表U1。
下面将进行第二层迭代,将间接表U1作为第二层迭代的输入空间数据域,输入空间数据域的有效数据集合R2分成g2=2组,即{b1}和{c2、c5},其中每组中的有效数据都具有相同的值。建立哈希表E2,哈希表E2的大小m2取4,即2×2规格的哈希表E2,哈希表E2的位置q2分成(0,0)、(0,1)、(1,0)、(1,1)。根据哈希表的大小,利用哈希函数进行取模运算,有效数据{b1}映射到哈希表E2的(1,0)位置,有效数据{c2、c5}映射到哈希表E2的(1,1)位置。
对哈希表E2内的各位置进行赋值,在哈希表E2的(0,0)位置为空,所以哈希表E2的(0,0)位置的值保持为默认值,通常默认值设定为0。哈希表E2的(0,1)位置为空,所以哈希表E2的(0,1)位置的值保持为默认值0。
哈希表E2的(1,0)位置映射有有效数据{b1},依照上述赋值方法,则{b1}被存储在哈希表E2的(1,0)位置,在覆盖表C’中有效数据{b1}的位置处标记成2,指有效数据{b1}在第二层迭代时被存储在存储哈希表E2'中。
在哈希表E2的(1,1)位置映射有数据{c2、c5},依照上述的赋值方法,E2(1,1)=C,则将数据值C赋给哈希表E2的(1,1)位置,则有效数据{c2、c5}被存储在哈希表E2的(1,1)位置,在覆盖表C’中有效数据{c2、c5}的位置处标记成2,指有效数据{c2、c5}在第二层迭代时被存储在存储哈希表E2'中。
第二层迭代结束后,没有有效数据再被移送到间接表U2内,即间接表U2的有效数据集合为空。此时,原始的空间数据域中的所有有效数据压缩存储结束。
如图3所示,整个过程输出两个极小的存储哈希表E1',E2',一个覆盖表C’,在查找时能够根据覆盖表C’快速地在哈希表内查找有效元素。在查找时,对GPU随机访问简单、效率高。
本实施例内存消耗为两部分:覆盖表C’消耗的内存以及存储哈希表Ei'消耗的内存,覆盖表C’的内存消耗取决于覆盖表C’的大小和表内各位置的长度。为了能够使覆盖表C’表示原始的空间数据域的位置,覆盖表C’与原始的空间数据域的大小一致。对于覆盖表C’的每个位置L∈C',使用固定长度的比特位域值。比特位域值的长度取决于本实施例的迭代层数i。为了表示i个迭代层次以及空数据,覆盖表C’的每个位置需要至少个比特。
在对于任意一个点的访问请求,其对应覆盖表C’的值C'(L)=0表示该点为空数据;C'(L)=i>0表示该点为有效数据,且其值存储在第i层存储哈希表Ei'中。
如图4所示,原始的空间数据域呈现的是5122的五角星图案,采用本实施例对该五角星图案进行迭代压缩存储,则需要i=38层迭代压缩存储所有有效数据直到输出的间接表U38为空,才能将五角星图案进行存储,输出存储哈希表E1'、E2'、……、E37'。但是在进行迭代压缩存储过程中,经过几次迭代之后,有效数据中的重复有效数据的数量正在迅速的减少,输出的间接表迅速变得稀疏,而稀疏的数据域更适合采用完美哈希进行存储处理。
因此,为了进一步减少内存总成本,本实施例中优选地,当上述迭代压缩存储进行6次后,得到一个非常稀疏的间接表,该间接表中的有效数据的重复率较低,然后利用完美哈希处理方法,对该间接表进行存储处理,完美哈希(Perfect Hash Function,简称PHF)是指没有冲突的哈希函数,也就是函数H将N个KEY值映射到M个整数上,这里M>=N。
完美哈希处理过程为,当i=6时,执行将第6次输出的间接表U6作为完美哈希处理的输入空间数据域,根据U6内的有效数据的位置,建立完美哈希表将间接表U6中的有效数据集合R6中的有效数据一一映射到完美哈希表的对应的位置中进行存储。这样处理能够进一步减少内存消耗,并且也能保证有效数据无损的存储。
上述的五角星图案包含86885像素(33.14%),分为1507个组。进行6次迭代压缩存储,建立六个哈希表,这些哈希表的大小取决于分组数,但不大于392=1521。经过6次迭代后,输出的U6内未被压缩存储的有效数据的集合非常稀疏,在间接表U6中仅包含2762像素(1.05%),然后再采用完美哈希对稀疏的间接表U6进行存储,覆盖表C’标记了迭代压缩存储和完美哈希存储的所有的有效元素的迭代层信息。
采用上述的6次迭代压缩存储以及完美哈希存储相结合的方法,内存消耗共164.6KB,其中包括6个存储哈希表26.0KB,完美哈希表和偏移表共10.6KB,以及覆盖表128.0KB。
上述迭代压缩存储在每层存储过程中,内存消耗分析由表1所示,第一次迭代的空的哈希表E1的内存消耗4.62KB,压缩存储了39025个有效数据,即存储的有效数据的内存为114.33KB,第二次迭代的空哈希表的内存消耗4.62KB,压缩存储了27423个有效数据,存储的有效数据的内存为80.34KB等。如表1所示,有效数据的重复率越高,存储哈希表所存储的有效数据就越多,随着有效数据的重复率的降低,压缩存储的有效数据的数量从第1层迭代到第6层迭代变得越来越小,其中重复率是指选定数据与选定数据的组数之比。然而,在第5层和第6层的迭代中,压缩存储的有效数据的内存消耗小于哈希表的内存消耗。因此,在第6层迭代结束之后,利用完美哈希对U6内的有效元素继续存储。这样将6层迭代哈希存储与完美哈希存储相结合,能够大大提高有效数据的存储效率,减少内存总消耗,并且与GPU处理更加和谐。
表1迭代压缩存储内存消耗情况表
但是,如果直接采用完美哈希对原始的空间数据域进行存储处理,完美哈希存储过程消耗的总内存成本为424.0KB,包括258.0KB的哈希表、134.0KB的偏移表和位域表32.0KB。由此可见采用迭代压缩存储和完美哈希存储结合的优化方法较只采用完美哈希存储方法消耗的内存小很多。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构变换,或直接或间接运用在其他相关的技术领域,均包括在本发明的专利保护范围内。
Claims (7)
1.一种空间数据存储方法,其特征在于,包括如下步骤:
第一步,读取原始的空间数据域U0,所述原始的空间数据域U0为d维度的数据域,将所述原始的空间数据域U0作为第一次压缩存储的输入空间数据域,由所述原始的空间数据域U0中的各数据所在的位置形成覆盖表C’;
第二步,识别所述输入空间数据域中的所有数据,并将需要存储的数据记为有效数据,所述有效数据的集合记为Ri,不需要存储的数据记为无效数据,其中i为当前迭代的次数,i取整数;
第三步,建立大小为mi的哈希表Ei,其中mi小于所述输入空间数据域的大小;
第四步,利用哈希函数对所述输入空间数据域中的有效数据的集合Ri向哈希表Ei内压缩映射,映射到所述哈希表Ei中位置qi的有效数据记为集合hi -1(qi)∩Ri,其中,pi为有效数据在所述输入空间数据域中的位置,哈希系数M0设置为单位矩阵,为单一维度上哈希表Ei的大小;
第五步,将所述哈希表Ei中的位置qi进行赋值Ei(qi),将集合hi -1(qi)∩Ri中有效数据的值与值Ei(qi)相同的有效数据记为选定数据,有效数据的值与值Ei(qi)不相同的有效数据记为剩余数据,将选定数据压缩存储到哈希表Ei内的位置qi,形成存储所述选定数据的存储哈希表Ei',将剩余数据按照其在所述输入空间数据域内的位置移入到间接表Ui内,在覆盖表C’中将存储到所述哈希表Ei内的选定数据的位置标记成第i次压缩存储;
第六步,若输出的所述间接表Ui中的有效数据的集合Ri为空,则所述原始的空间数据域U0中的有效数据存储结束;若输出的所述间接表Ui中的有效数据的集合Ri不为空,则将所述间接表Ui作为下一次迭代压缩存储的输入空间数据域,并将覆盖表C’沿用到下一次迭代处理过程中,返回执行第二步操作。
6.根据权利要求1所述的空间数据存储方法,其特征在于,所述d=2或d=3。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711070905.6A CN107748794B (zh) | 2017-11-03 | 2017-11-03 | 一种空间数据存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711070905.6A CN107748794B (zh) | 2017-11-03 | 2017-11-03 | 一种空间数据存储方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107748794A CN107748794A (zh) | 2018-03-02 |
CN107748794B true CN107748794B (zh) | 2021-03-12 |
Family
ID=61254421
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711070905.6A Expired - Fee Related CN107748794B (zh) | 2017-11-03 | 2017-11-03 | 一种空间数据存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107748794B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109815372A (zh) * | 2019-01-24 | 2019-05-28 | 杭州嘉楠耘智信息科技有限公司 | Scrypt算法工作量证明方法及装置 |
CN113742080B (zh) * | 2020-09-10 | 2024-03-01 | 吕戈 | 一种高效的不可变对象执行环境的构建方法及装置 |
CN115309694A (zh) | 2021-05-07 | 2022-11-08 | 脸萌有限公司 | 片上集成电路、数据处理装置和方法 |
CN113407550A (zh) * | 2021-08-19 | 2021-09-17 | 支付宝(杭州)信息技术有限公司 | 数据存储及查询方法、装置及数据库*** |
CN113641871B (zh) * | 2021-10-18 | 2022-02-08 | 北京医百科技有限公司 | 一种无锁散列方法、装置、设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006215912A (ja) * | 2005-02-04 | 2006-08-17 | Sony Corp | ファイルロック/アンロック用プログラム、記録媒体及び電子ファイル転送処理システム |
CN105790768A (zh) * | 2014-12-19 | 2016-07-20 | 珠海全志科技股份有限公司 | 数据存储方法和*** |
CN106452769A (zh) * | 2016-09-13 | 2017-02-22 | 杭州华为数字技术有限公司 | 一种数据处理方法、数据处理装置以及处理器 |
CN107291832A (zh) * | 2017-05-27 | 2017-10-24 | 华南理工大学 | 一种基于列表存储结构的数据存储方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8266325B2 (en) * | 2010-02-05 | 2012-09-11 | International Business Machines Corporation | Compression on thin provisioned volumes using extent based mapping |
-
2017
- 2017-11-03 CN CN201711070905.6A patent/CN107748794B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006215912A (ja) * | 2005-02-04 | 2006-08-17 | Sony Corp | ファイルロック/アンロック用プログラム、記録媒体及び電子ファイル転送処理システム |
CN105790768A (zh) * | 2014-12-19 | 2016-07-20 | 珠海全志科技股份有限公司 | 数据存储方法和*** |
CN106452769A (zh) * | 2016-09-13 | 2017-02-22 | 杭州华为数字技术有限公司 | 一种数据处理方法、数据处理装置以及处理器 |
CN107291832A (zh) * | 2017-05-27 | 2017-10-24 | 华南理工大学 | 一种基于列表存储结构的数据存储方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107748794A (zh) | 2018-03-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107748794B (zh) | 一种空间数据存储方法 | |
US11127167B2 (en) | Efficient matrix format suitable for neural networks | |
US11902551B2 (en) | Methods and apparatuses for hierarchically encoding and decoding a bytestream | |
CN101223769B (zh) | 在连续的图像获取之间具有降低的延迟的数字静态照相机结构 | |
US6825847B1 (en) | System and method for real-time compression of pixel colors | |
US7619623B2 (en) | Perfect multidimensional spatial hashing | |
DE102010046891B4 (de) | Hierarchische Netzquantisierung für speichereffizientes Raytracing | |
Gurung et al. | SQuad: Compact representation for triangle meshes | |
US10726519B2 (en) | Cache arrangement for graphics processing systems | |
GB2554711A (en) | Buffer addressing for a convolutional neural network | |
Dado et al. | Geometry and attribute compression for voxel scenes | |
DE102021120605A1 (de) | Effiziente softmax-berechnung | |
US20140086309A1 (en) | Method and device for encoding and decoding an image | |
US20200042189A1 (en) | Hierarchical Sparse Tensor Compression Method in Artificial Intelligent Devices | |
JP2000505274A (ja) | 希薄データセットをネスト状分割コード化するシステム及び方法 | |
CN109964204A (zh) | 用于处理图形的方法和*** | |
DE102019134020A1 (de) | Dekompprimierungstechniken zur verarbeitung komprimierter daten, die für künstliche neuronale netzwerke geeignet sind | |
CN112422972A (zh) | 用于对图像数据的压缩块进行解压缩的方法和解压缩单元 | |
DE102020108526A1 (de) | Adaptive pixelabtastreihenfolge für zeitlich dichtes rendern | |
CN101790749B (zh) | 多点采样绘制二维矢量图像 | |
CN110214338A (zh) | 增量颜色压缩到视频的应用 | |
CN114222129A (zh) | 图像压缩编码方法、装置、计算机设备和存储介质 | |
DE102022104121A1 (de) | Künstliche neuronale netze erzeugt durch sequenzen mit geringer diskrepanz | |
US20220129744A1 (en) | Method for permuting dimensions of a multi-dimensional tensor | |
US20080279463A1 (en) | Image processing apparatus, image processing circuit, and image processing method |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20210312 Termination date: 20211103 |