CN112636765A - 基于数据压缩存储的细粒度并行查表方法 - Google Patents
基于数据压缩存储的细粒度并行查表方法 Download PDFInfo
- Publication number
- CN112636765A CN112636765A CN201910903873.6A CN201910903873A CN112636765A CN 112636765 A CN112636765 A CN 112636765A CN 201910903873 A CN201910903873 A CN 201910903873A CN 112636765 A CN112636765 A CN 112636765A
- Authority
- CN
- China
- Prior art keywords
- granularity
- fine
- original
- parallel
- table lookup
- 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
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/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/42—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory
-
- 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)
- Compression Of Band Width Or Redundancy In Fax (AREA)
Abstract
本发明公开了一种基于数据压缩存储的细粒度并行查表方法,包括以下步骤,原始数据压缩,将原细元素粒度的表按照其粒度压缩存储为int类型的表X;根据原表元素粒度生成不同的掩码表Y;根据原表元素粒度对原查表偏移进行处理,得到偏移量为A和B;按查表偏移A按int类型并行查表X,得到查表结果X1;按查表偏移B按int类型并行查表Y,得到查表结果Y1;对X1和Y1进行逻辑运算及移位操作得到最终查表结果。本发明是对用户原始细粒度表元素合并压缩存储,通过增加简单逻辑运算及移位运算实现细粒度的并行查表功能,有效避免以int为单位进行查表导致的空间膨胀,大大提升了具有细粒度查表类课题的向量并行优化的可能性。
Description
技术领域
本发明属于计算机算法领域,尤其涉及一种基于数据压缩存储的细粒度并行查表方法。
背景技术
许多大规模并行算法运算复杂,一种常见的提升性能的方法是将复杂运算简化为等效的查表(以某索引值对某数组进行离散访存)操作,对于以向量宽度并行存储的数据,简单的算术或逻辑运算的效率可以大幅提升,但是并行查表(以向量宽度并行存储的数据作为索引进行并行查表(离散访存)操作)是其一大瓶颈,如果向量并行查表的效率等于甚至弱于各分位的标量查表之和,则失去了向量并行的意义。
现有部分的异构众核平台支持快速int类型的并行查表功能,但这需要按照向量宽度将原表空间复制多份。应用课题中往往存在byte类型甚至是bit类型的细粒度并行查表需求,针对大规模的表,若采用int类型存储byte类型甚至是bit类型的表元素数据,再结合并行查表带来的空间复制,会使表空间迅速膨胀,以至于无法存入高速暂存存储器(Scratch Pad Memory,SPM)空间,这种方法不能满足byte类型甚至是bit类型的细粒度并行查表需求。
发明内容
本发明目的在于提供一种基于数据压缩存储的细粒度并行查表方法,以解决使用int类型存储byte类型或bit类型的表元素数据后,再结合并行查表带来的空间复制,使表空间迅速膨胀,以至于无法存入高速存储区域的问题。
为达到上述目的,本发明采用的技术方案是:一种基于数据压缩存储的细粒度并行查表方法,包括以下步骤,
S1:原始数据压缩,将原细粒度的表按照其原始元素粒度压缩存储为int类型的表X;
S2:根据原表元素粒度生成不同的掩码表Y;
S3:根据原表元素粒度对原查表偏移进行处理,得到偏移量为A和B;
S4:按S3中生成的查表偏移A按int类型并行查S1中生成的表X,得到查表结果X1;
S5:按S3中生成的查表偏移B按int类型并行查S1中生成的表Y,得到查表结果Y1;
S6:对S4和S5中的查表结果X1和Y1进行逻辑运算及移位操作得到最终查表结果。
1. 上述方案中,所述原细粒度表的元素粒度为半字粒度或byte粒度或bit粒度。
2. 上述方案中,所述细粒度查表对于半字粒度或byte粒度的查表结果处理是通过两次查表结果X1和Y1进行简单逻辑运算及移位得出的。
3. 上述方案中,所述细粒度查表对于bit粒度的查表结果处理是将两次查表结果X1和Y1进行逻辑运算后判断结果为0或1,不需做移位运算。
由于上述技术方案的运用,本发明与现有技术相比具有下列优点:
本发明基于数据压缩存储的细粒度并行查表方法,该细粒度并行查表方法是对用户原始细粒度表元素合并压缩存储,通过增加简单逻辑运算及移位运算实现细粒度的并行查表功能,有效避免以int为单位直接存储原始表空间后进行查表导致的空间膨胀,大大提升了具有细粒度查表类课题的向量并行优化的可能性。
附图说明
附图1为本发明基于数据压缩存储的细粒度并行查表方法的流程图。
附图2为本发明的基于数据压缩存储的细粒度并行查表法与现有的直接查表的对比表格。
具体实施方式
实施例:如图1所示,一种基于数据压缩存储的细粒度并行查表方法,包括以下步骤,
S1:原始数据压缩,将原细粒度的表按照其原始元素粒度压缩存储为int类型的表X;
S2:根据原表元素粒度生成不同的掩码表Y;
S3:根据原表元素粒度对原查表偏移进行处理,得到偏移量为A和B;
S4:按S3中生成的查表偏移A按int类型并行查S1中生成的表X,得到查表结果X1;
S5:按S3中生成的查表偏移B按int类型并行查S1中生成的表Y,得到查表结果Y1;
S6:对S4和S5中的查表结果X1和Y1进行逻辑运算及移位操作得到最终查表结果。
所述原细粒度表的元素粒度为半字粒度或byte粒度或bit粒度。
所述细粒度查表对于半字粒度或byte粒度的查表结果处理是通过两次查表结果X1和Y1进行简单逻辑运算及移位得出的。
所述细粒度查表对于bit粒度的查表结果处理是将两次查表结果X1和Y1进行逻辑运算后判断结果为0或1,不需做移位运算。
实施例进一步解释如下:
基于数据压缩存储的细粒度并行查表方法的具体流程如下:第一步原始数据处理:
S1:原始数据压缩,将原本细粒度的表Xo按照其元素粒度压缩存储为int类型的表X。如以byte类型的查表操作为例,设原表为
char Xo[8]={0xaa,0xbb,0xcc,0xdd,0x11,0x22,0x33,0x44};
压缩后的表为int X[2]={0xddccbbaa,0x44332211};
虽然压缩后的表数据所占空间没有变化,但是压缩后的表项为int类型,可以进行int类型的并行查表。
S2:根据S1中的原元素粒度生成不同的掩码表,该掩码表很小。该原细粒度表的元素粒度可以为byte粒度或bit粒度。如以byte类型查表为例,该掩码表为:Y={0xff000000,0xff0000;0xff00;0xff}。
S3:根据S1中的原元素粒度对原查表偏移P进行处理。如以byte类型的查表操作为例,生成的偏移A和B为:A=P>>2,B=P&3。
第二步并行查表:
S4:根据S3中的查表偏移A并行查找S1中生成的int类型表X,得到查表结果X1;
S5:根据S3中的查表偏移B并行查找S2中生成的int类型掩码表Y,得到查表结果Y1;
第三步查表结果处理:
此处根据S1中的原始表元素粒度的不同,其查表结果处理略有不同,以byte类型查表与bit类型查表为例作为对比。
对于byte类型查表,对两次查表结果进行简单逻辑运算及移位即可得到最终的查表结果。其运算为:
C=A&B,
Res=((C)|(C>>8)| (C>>16)| (C>>24))&0xff;
对于bit类型查表,因为查表结果仅为0或者1,因此只要将两次查表结果做逻辑运算后判断结果为0或1即可,不需做移位运算。运算为:
C=A&B,
Res=IsZero(C);
其中IsZero是用来判断C的各分量是否为0,只需2条指令即可实现。
通过以上过程,通过两次int类型查表及一些简单的逻辑运算就可以在仅仅增加了很小的掩码表(byte类型为0.25kb,bit类型为2kb)的基础上,实现细粒度查表,这大大节省了查表空间。
如图2给出了基于数据压缩存储的并行查表方法与直接查表的对比,可见以表空间为2kb的byte类型查表为例,将4个byte类型的表项压缩拼接成为一个int类型的表项,这样将所有表元素都转为int类型的基础上,并不增加原始表所占空间,而直接将byte类型转换为int类型则需要将原表空间扩大4倍;而后进行int类型并行查表,表空间需要复制16份,所以直接int类型查表的表空间变为128kb,而压缩查表的表空间则仅仅为32kb左右,这样压缩查表仅仅增加了10条左右的指令,就节省了接近4倍的SPM空间。
采用一种基于数据压缩存储的细粒度并行查表方法时,通过对用户原始byte类型或bit类型表元素合并压缩存储,以时间换空间,在增加很少的额外空间以及少量运算指令的的情况下,实现细粒度的并行查表功能。
上述实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。
Claims (4)
1.一种基于数据压缩存储的细粒度并行查表方法,其特征在于:包括以下步骤,
S1:原始数据压缩,将原细粒度的表按照其原始元素粒度压缩存储为int类型的表X;
S2:根据S1中的原表元素粒度生成不同的掩码表Y;
S3:根据S1中的原表元素粒度对原查表偏移进行处理,得到偏移量为A和B;
S4:按S3中生成的查表偏移A按int类型并行查S1中生成的表X,得到查表结果X1;
S5:按S3中生成的查表偏移B按int类型并行查S1中生成的表Y,得到查表结果Y1;
S6:根据S1中的原表元素粒度对S4和S5中的查表结果X1和Y1进行逻辑运算及移位操作得到最终查表结果。
2.根据权利要求1所述的基于数据压缩存储的细粒度并行查表方法,其特征在于:所述原细粒度表的元素粒度为字以内的元素粒度,包括半字粒度、byte粒度和bit粒度。
3.根据权利要求2所述的基于数据压缩存储的细粒度并行查表方法,其特征在于:所述细粒度查表对于半字粒度或byte粒度的查表结果处理是通过两次查表结果X1和Y1进行简单逻辑运算及移位得出的。
4.根据权利要求2所述的基于数据压缩存储的细粒度并行查表方法,其特征在于:所述细粒度查表对于bit粒度的查表结果处理是将两次查表结果X1和Y1进行逻辑运算后判断结果为0或1,不需做移位运算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910903873.6A CN112636765B (zh) | 2019-09-24 | 2019-09-24 | 基于数据压缩存储的细粒度并行查表方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910903873.6A CN112636765B (zh) | 2019-09-24 | 2019-09-24 | 基于数据压缩存储的细粒度并行查表方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112636765A true CN112636765A (zh) | 2021-04-09 |
CN112636765B CN112636765B (zh) | 2022-07-12 |
Family
ID=75282924
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910903873.6A Active CN112636765B (zh) | 2019-09-24 | 2019-09-24 | 基于数据压缩存储的细粒度并行查表方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112636765B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1658513A (zh) * | 2005-03-10 | 2005-08-24 | 复旦大学 | 通过查表实现的算术编解码方法 |
US10270464B1 (en) * | 2018-03-30 | 2019-04-23 | Intel Corporation | Method and apparatus for high performance compression and decompression |
-
2019
- 2019-09-24 CN CN201910903873.6A patent/CN112636765B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1658513A (zh) * | 2005-03-10 | 2005-08-24 | 复旦大学 | 通过查表实现的算术编解码方法 |
US10270464B1 (en) * | 2018-03-30 | 2019-04-23 | Intel Corporation | Method and apparatus for high performance compression and decompression |
Non-Patent Citations (2)
Title |
---|
SUSANA LADRA 等: "《Scalable and queryable compressed storage structure for raster data》", 《INFORMATION SYSTEMS》 * |
周伟: "《基于Huffman编码的XML文件压缩存储算法研究与实现》", 《软件导刊》 * |
Also Published As
Publication number | Publication date |
---|---|
CN112636765B (zh) | 2022-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113705135B (zh) | 基于fpga进位链的电路结构优化方法及系统 | |
Yamabe | A generalization of a theorem of Gleason | |
Loetamonphong et al. | An efficient solution procedure for fuzzy relation equations with max-product composition | |
RU2006110319A (ru) | Устройство и способ для обработки, по меньшей мере, двух входных значений | |
CN114253508B (zh) | 逻辑功能模块与可编程逻辑门阵列 | |
CN105589908A (zh) | 用于事务集合的关联规则计算方法 | |
CN113741858A (zh) | 存内乘加计算方法、装置、芯片和计算设备 | |
CN112636765B (zh) | 基于数据压缩存储的细粒度并行查表方法 | |
CN114610267A (zh) | 一种基于指数函数和softmax函数的优化方法、硬件系统及芯片 | |
CN114449061A (zh) | 一种可配置式的协议解析方法、装置、设备及存储介质 | |
CN112328258A (zh) | 一种编程语言的转换方法及系统 | |
CN115827555B (zh) | 数据处理方法、计算机设备、存储介质和乘法器结构 | |
CN115526131A (zh) | 多级编码近似计算Tanh函数的方法及装置 | |
CN114385139B (zh) | 一种flink框架运行ETL流程的消息序列化以及比较方法与装置 | |
WO2021185287A1 (zh) | 一种解压装置、加速器、和用于解压装置的方法 | |
CN114925640A (zh) | 一种多级mprm逻辑电路功耗优化方法 | |
CN110941938B (zh) | 基于与非/或非-与异或非图的电路面积和功耗优化方法 | |
CN113157247A (zh) | 一种可重构整型-浮点型乘法器 | |
CN102545910B (zh) | 一种jpeg霍夫曼解码电路及其解码方法 | |
JP5523360B2 (ja) | N分木内部ノードの圧縮方法及び装置及びプログラム | |
JPH07210533A (ja) | ニューラルネットワーク回路及びこれを用いた演算方法 | |
CN114095036B (zh) | 一种动态哈夫曼编码的码长生成装置 | |
Chen et al. | Repair the faulty TSVs with the improved FNS-CAC codec | |
US5825644A (en) | Method for encoding a state machine | |
CN111444180A (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 |