CN110515939B - 一种基于gpu的多列数据排序方法 - Google Patents
一种基于gpu的多列数据排序方法 Download PDFInfo
- Publication number
- CN110515939B CN110515939B CN201910593411.9A CN201910593411A CN110515939B CN 110515939 B CN110515939 B CN 110515939B CN 201910593411 A CN201910593411 A CN 201910593411A CN 110515939 B CN110515939 B CN 110515939B
- Authority
- CN
- China
- Prior art keywords
- data
- gpu
- index
- column
- group
- 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
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
-
- 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/23—Updating
-
- 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
-
- 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)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明技术方案公开了一种基于GPU的多列数据排序方法,通过GPU分别对第一列、第二列、第n列数据进行排序,通过使用CPU结合GPU处理多列数据排序方法,在需要大数据量进行排序时,利用GPU强大的并发处理能力,可以有效提升单台机器的性能,有效弥补了单台服务器性能上的短板;在不增加集群规模前提下,通过增加GPU大幅提高集群计算能力。
Description
技术领域
本发明涉及数据处理技术领域,尤其是涉及一种基于GPU的多列数据排序方法。
背景技术
随着人们对大数据处理性能的要求越来越高,对大数据并行处理技术提出了更高的要求。在集群规模难以扩大的情况下,由于单台服务器受限于CPU核数,很难提升集群性能;在这种情况下,近年来出现了将GPU与大数据结合的实例,相对于CPU核数限制,GPU拥有成千上万的处理核心,可以大幅提升大数据的并发处理能力,有效提升单台服务器的并行计算能力;同类技术中,有对MapReduce的排序进行优化,实现将单列数据排序移植到协处理器(GPU)执行,如《基于GPU排序的MapReduce优化方法》和《CN107102839A-一种基于硬件排序MapReduce的数据处理方法》,对于多列数据的排序方法未有提及。因此,本发明提出了一种针对一条记录多列数据的排序问题,借助CPU和GPU各自的优势,完成多列数据的排序。
发明内容
本发明解决的技术问题是提供一种使用协处理器处理多列数据排序的方法,在不增加集群规模的前提下,在原有集群配置基础上,通过增加配置GPU,提升多列数据排序的性能。
为解决上述的技术问题,本发明技术方案提供一种基于GPU的多列数据排序方法,其中,包括以下步骤:
步骤1:对第一列数据进行排序,处理方法如下;
GPU对第一列数据进行排序,以数据作为排序的关键字,数据索引同步跟随数据进行排序,排序后记录以下信息;
a、记录数据排序后对应的索引数组,最后一列排序结束后输出该索引数组;
b、对相同的数据进行分组,记录每组起始元素位于索引数组中的偏移量;
c、记录每个分组中的重复数据个数;
d、记录所有重复数据的索引,回传给业务层,由业务层根据重复数据索引,将下一列需要排序的数据放置到连续内存,在下一列排序时,将数据传递给GPU进行排序;
步骤2:对下一列数据进行排序,处理方法如下:
GPU对本列数据进行排序时,如果前一列重复数据索引为空,则流程结束,将排序后的数据索引传递给业务层,根据数据索引输出最终结果;如果前一列有重复数据,业务层根据重复数据的索引,将重复数据的索引对应的本列数据拷贝到连续内存空间,传递给GPU,按照所述每个分组中的重复数据个数对所述拷贝的数据分组,对每个分组中的数据分别进行排序并按排序顺序交换数据的索引,排序结束后,GPU将排序结果回传给CPU进行以下操作:
a、更新全局索引:对前一列重复、本列不重复的组内数据,按照本列排序对应的索引、所述偏移量、所述每个分组中的重复数据个数更新全局索引;
b、记录新的分组,每个分组内数据相同,记录每个分组位于全局索引中起始位置;
c、记录每个新的分组中重复数据的个数;
d、记录重复数据的索引,用于后一列数据排序时,将索引对应的数据传递给GPU进行后一列数据的排序;
在通过GPU对数据进行排序时,对于分组数量大于第一预设值,而每个分组内部元素小于第二预设值的情况,每个线程处理一个分组,每个分组内部使用冒泡排序以达到多组并发排序的目的;
步骤3:重复步骤2至所有需要排序的数据排序完成,流程结束。
可选地,在步骤1之前,还包括CPU读取业务层的数据并将数据缓存至堆外内存,同时将第一列数据传递给GPU,GPU对第一列数据进行排序。
为解决上述的技术问题,本发明技术方案还提供一种采用如上述中任一项所述的基于GPU的多列数据排序方法的数据处理设备,所述数据处理设备内部设有CPU和GPU。
本发明技术方案的有益效果是:
本发明通过使用CPU结合GPU处理多列数据排序方法,在需要大数据量进行排序时,利用GPU强大的并发处理能力,可以有效提升单台机器的性能,有效弥补了单台服务器性能上的短板;在不增加集群规模前提下,通过增加GPU大幅提高集群计算能力。
具体实施方式:
下面结合具体实施例对本发明作进一步说明,但不作为本发明的限定。
一种实施例的基于GPU的多列数据排序方法,其中,包括以下步骤:
步骤1:对第一列数据进行排序,处理方法如下;
GPU对第一列数据进行排序,以数据作为排序的关键字,数据索引同步跟随数据进行排序,排序后记录以下信息;
a、记录数据排序后对应的索引数组,最后一列排序结束后输出该索引数组;
b、对相同的数据进行分组,记录每组起始元素位于索引数组中的偏移量;
c、记录每个分组中的重复数据个数;
d、记录所有重复数据的索引,回传给业务层,由业务层根据重复数据索引,将下一列需要排序的数据放置到连续内存,在下一列排序时,将数据传递给GPU进行排序;
步骤2:对下一列数据进行排序,处理方法如下:
GPU对本列数据进行排序时,如果前一列重复数据索引为空,则流程结束,将排序后的数据索引传递给业务层,根据数据索引输出最终结果;如果前一列有重复数据,业务层根据重复数据的索引,将重复数据的索引对应的本列数据拷贝到连续内存空间,传递给GPU,按照所述每个分组中的重复数据个数对所述拷贝的数据分组,对每个分组中的数据分别进行排序并按排序顺序交换数据的索引,排序结束后,GPU将排序结果回传给CPU进行以下操作;
a、更新全局索引:对前一列重复、本列不重复的组内数据,按照本列排序对应的索引、所述偏移量、所述每个分组中的重复数据个数更新全局索引;
b、记录新的分组,每个分组内数据相同,记录每个分组位于全局索引中起始位置;
c、记录每个新的分组中重复数据的个数;
d、记录重复数据的索引,用于后一列数据排序时,将索引对应的数据传递给GPU进行后一列数据的排序;
在通过GPU对数据进行排序时,对于分组数量大于第一预设值,而每个分组内部元素小于第二预设值的情况,每个线程处理一个分组,每个分组内部使用冒泡排序以达到多组并发排序的目的;
步骤3:重复步骤2至所有需要排序的数据排序完成,流程结束。
可选地,在步骤1之前,还包括CPU读取业务层的数据并将数据缓存至堆外内存,同时将第一列数据传递给GPU,GPU对第一列数据进行排序。
本实施例中,在步骤3中还包括,没有重复数据,不需要对后续列继续排序时,流程结束。
本发明技术方案还提供一种采用如上述中任一项所述的数据处理设备,数据处理设备内部设有CPU和GPU。
通过以下说明进一步地认识本发明的技术方案。
如下表1所示,本实施例中以2列数据,每列10给数据排序为例,第一列为int型数据,第二列为long型数据。
数据索引 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
第一列数据int | 18 | 5 | 4 | 16 | 8 | 16 | 22 | 26 | 16 | 22 |
第二列数据long | 18 | 23 | 4 | 22 | 8 | 7 | 22 | 6 | 17 | 2 |
表1
表1示出了第一列排序,其中索引3、5、8对应的都是数值16,数据索引6和9对应的都是数值22。
表2
对表1的多列数据进行排序,步骤如下:
步骤一:利用GPU对数据排序,同步对数据索引排序,可以得到“排序后数据”和“排序后数据索引”;
步骤二:对“排序后数据”遍历计算每个位置的值是否与后面值相同,且与前面值不同,记录这个值对应的下标,可以得到B,重复数据位于排序好的数组中的偏移量:[3,7]。
步骤三:在步骤二计算过程中,如果是第一个元素,判断该值与后面值是否相同,相同则该值对应的数量加1;如果是中间元素,则判断该值与前面值是否相同,相同则当前分组重复数据数量加1;如果与前面值不同,与后面值相同,则下一个分组数量加1.直到计算完最后一个元素,即可得到C,每个重复数据的分组内数据个数:[3,2]。
步骤四:在步骤二和步骤三中,如果元素与前面值相同或者与后面值相同,则保存排序后数据的索引。即可得到D,重复数据的索引:[3,5,8,6,9],如上表2所示。
最终得到数据:
A、全局数据排序索引为:[2,1,4,3,5,8,0,6,9,7]。
B、重复数据位于排序好的数组中的偏移量:[3,7]。
C、每个重复数据的分组内数据个数:[3,2]。
D、重复数据的索引:[3,5,8,6,9]。
表3
数据原索引 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
第二列数据 | 18 | 23 | 4 | 22 | 8 | 7 | 22 | 6 | 17 | 2 |
参与排序的数据 | 22 | 7 | 22 | 17 | 2 |
如上表3示出了第二列排序,且根据如上表2所示的第一列排序的结果。对表3的多列数据进行排序,步骤如下:
步骤一:第一列数据排序结束后,将第一列重复数据的下标对应的第二列中数值拷贝到连续的内存区域,可得到A,[22,7,17,22,2];
步骤二:第一列数据排序后,重复数据每个分组中重复数据的数量为[3,2],利用GPU对每个分组分别排序,每个分组使用冒泡排序对数据进行排序,同时交换数据的索引,得到B,排序后数据为[7,17,22,2,22],及对应的索引[5,8,3,9,6];
步骤三第一列排序后数据索引为[2,1,4,3,5,8,0,6,9,7],同时记录了每个重复数据位于排序好的数组中的偏移量[3,7],及每个重复数据的分组内数据个数[3,2],这样就可以更新[3,5,8]为[5,8,3],[6,9]更新为[9,6].得到C全局数据索引排序[2,1,4,5,8,3,0,9,6,7]。同时利用第一列排序时的方法计算得到,第二列排序后的重复数据索引,每个分组内重复数据的数量及位于全局索引中的偏移量。
步骤四:判断是否还有待排序的列或者当前列没有重复数据,如果当前列是最后一列或当前列没有重复数据,则输出步骤三结论即为多列排序结果,如表4所示。
最终得到数据:
A、第一列中排序后重复数据的索引分别为[3,5,8,6,9],这些索引对应的第二列数据分别为[22,7,17,22,2]。
B、第二列数据分为2组[22,7,17]和[22,2]进行组内排序,组间排序不交叉,排序后顺序为[7,17,22,2,22],数据排序后对应的索引为[5,8,3,9,6]。
C、更新第一列排序的全局索引[2,1,4,3,5,8,0,6,9,7]中,生成的新的全局索引为[2,1,4,5,8,3,0,9,6,7]。
D、输出多列排序结果。
数据索引 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
第一列数据值int | 4 | 5 | 8 | 16 | 16 | 16 | 18 | 22 | 22 | 26 |
第二列数据值long | 4 | 23 | 8 | 7 | 17 | 22 | 18 | 2 | 22 | 6 |
表4
综上所述,本发明通过使用CPU结合GPU处理多列数据排序方法,在需要大数据量进行排序时,利用GPU强大的并发处理能力,可以有效提升单台机器的性能,有效弥补了单台服务器性能上的短板;在不增加集群规模前提下,通过增加GPU大幅提高集群计算能力。
对于存在多列数据的记录,对多列数据排序,前列和后列之间有依赖关系,在数据库多列排序领域也可以应用此发明技术;
多列排序时,结合CPU和GPU完成多列数据的排序,第一列排序结果直接影响第二列排序的数据,采用了CPU内存预分配方案,减少内存的频繁申请和释放,提升了整体集群性能;
对于分组较多,而每个分组内部元素较少时,使用GPU进行排序时,每个线程处理一个分组,每个分组内部使用冒泡排序以达到多组并发排序的目的。
以上仅为本发明较佳的实施例,并非因此限制本发明的实施方式及保护范围,对于本领域技术人员而言,应当能够意识到凡运用本发明说明书及图示内容所作出的等同替换和显而易见的变化所得到的方案,均应当包含在本发明的保护范围内。
Claims (3)
1.一种基于GPU的多列数据排序方法,其特征在于,包括以下步骤:
步骤1:对第一列数据进行排序,处理方法如下;
GPU对第一列数据进行排序,以数据作为排序的关键字,数据索引同步跟随数据进行排序,排序后记录以下信息;
a、记录数据排序后对应的索引数组,最后一列排序结束后输出该索引数组;
b、对相同的数据进行分组,记录每组起始元素位于索引数组中的偏移量;
c、记录每个分组中的重复数据个数;
d、记录所有重复数据的索引,回传给业务层,由业务层根据重复数据索引,将下一列需要排序的数据放置到连续内存,在下一列排序时,将数据传递给GPU进行排序;
步骤2:对下一列数据进行排序,处理方法如下:
GPU对本列数据进行排序时,如果前一列重复数据索引为空,则流程结束,将排序后的数据索引传递给业务层,根据数据索引输出最终结果;如果前一列有重复数据,业务层根据重复数据的索引,将重复数据的索引对应的本列数据拷贝到连续内存空间,传递给GPU,按照所述每个分组中的重复数据个数对所述拷贝的数据分组,对每个分组中的数据分别进行排序并按排序顺序交换数据的索引,排序结束后,GPU将排序结果回传给CPU进行以下操作:
a、更新全局索引:对前一列重复、本列不重复的组内数据,按照本列排序对应的索引、所述偏移量、所述每个分组中的重复数据个数更新全局索引;
b、记录新的分组,每个分组内数据相同,记录每个分组位于全局索引中起始位置;
c、记录每个新的分组中重复数据的个数;
d、记录重复数据的索引,用于后一列数据排序时,将索引对应的数据传递给GPU进行后一列数据的排序;
在通过GPU对数据进行排序时,对于分组数量大于第一预设值,而每个分组内部元素小于第二预设值的情况,每个线程处理一个分组,每个分组内部使用冒泡排序以达到多组并发排序的目的;
步骤3:重复步骤2至所有需要排序的数据排序完成,流程结束。
2.根据权利要求1所述的基于GPU的多列数据排序方法,其特征在于,在步骤1之前,还包括CPU读取业务层的数据并将数据缓存至堆外内存,同时将第一列数据传递给GPU,GPU对第一列数据进行排序。
3.一种采用如权利要求1-2中任一项所述的基于GPU的多列数据排序方法的数据处理设备,其特征在于,所述数据处理设备内部设有CPU和GPU。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910593411.9A CN110515939B (zh) | 2019-07-03 | 2019-07-03 | 一种基于gpu的多列数据排序方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910593411.9A CN110515939B (zh) | 2019-07-03 | 2019-07-03 | 一种基于gpu的多列数据排序方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110515939A CN110515939A (zh) | 2019-11-29 |
CN110515939B true CN110515939B (zh) | 2022-08-12 |
Family
ID=68623578
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910593411.9A Active CN110515939B (zh) | 2019-07-03 | 2019-07-03 | 一种基于gpu的多列数据排序方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110515939B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112631631B (zh) * | 2020-12-29 | 2021-11-16 | 中国科学院计算机网络信息中心 | 一种针对gpu加速多步长前缀树的更新序列维护方法 |
CN115858628A (zh) * | 2021-12-28 | 2023-03-28 | 上海右云信息技术有限公司 | 一种获取多列数据的综合排列数据的方法与设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103294831A (zh) * | 2013-06-27 | 2013-09-11 | 中国人民大学 | 列存储数据库中基于多维数组的分组聚集计算方法 |
CN103514042A (zh) * | 2012-06-18 | 2014-01-15 | 中国科学院计算机网络信息中心 | 一种双调归并排序调优方法及装置 |
CN107102839A (zh) * | 2017-04-13 | 2017-08-29 | 青岛蓝云信息技术有限公司 | 一种基于硬件排序MapReduce的数据处理方法 |
US10114846B1 (en) * | 2016-06-24 | 2018-10-30 | Amazon Technologies, Inc. | Balanced distribution of sort order values for a multi-column sort order of a relational database |
-
2019
- 2019-07-03 CN CN201910593411.9A patent/CN110515939B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103514042A (zh) * | 2012-06-18 | 2014-01-15 | 中国科学院计算机网络信息中心 | 一种双调归并排序调优方法及装置 |
CN103294831A (zh) * | 2013-06-27 | 2013-09-11 | 中国人民大学 | 列存储数据库中基于多维数组的分组聚集计算方法 |
US10114846B1 (en) * | 2016-06-24 | 2018-10-30 | Amazon Technologies, Inc. | Balanced distribution of sort order values for a multi-column sort order of a relational database |
CN107102839A (zh) * | 2017-04-13 | 2017-08-29 | 青岛蓝云信息技术有限公司 | 一种基于硬件排序MapReduce的数据处理方法 |
Non-Patent Citations (1)
Title |
---|
基于GPU的空间并行算法研究与实现;潘茜;《中国优秀硕士学位论文全文数据库 (信息科技辑)》;20170315(第2017年第03期);I138-5565 * |
Also Published As
Publication number | Publication date |
---|---|
CN110515939A (zh) | 2019-11-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11514045B2 (en) | Structured cluster execution for data streams | |
CN107818115B (zh) | 一种处理数据表的方法及装置 | |
CN106227894B (zh) | 一种数据分页查询方法和装置 | |
CN108563923B (zh) | 一种基因变异数据分布式存储方法及系统 | |
CA2317081C (en) | Estimation of column cardinality in a partitioned relational database | |
CN103678408B (zh) | 一种查询数据的方法及装置 | |
US9195701B2 (en) | System and method for flexible distributed massively parallel processing (MPP) database | |
US20040122845A1 (en) | System and method for automating data partitioning in a parallel database | |
CN110515939B (zh) | 一种基于gpu的多列数据排序方法 | |
EP0522488A2 (en) | Method of sorting on distributed database system and method of accessing thereto | |
US8051058B2 (en) | System for estimating cardinality in a database system | |
CN107329814A (zh) | 一种基于rdma的分布式内存数据库查询引擎系统 | |
CN105517644B (zh) | 一种数据分区方法和设备 | |
CN106649828A (zh) | 一种数据查询方法及系统 | |
CN103177414A (zh) | 一种基于结构的图节点相似度并行计算方法 | |
CN110569263A (zh) | 实时数据去重计数方法及装置 | |
CN113495872A (zh) | 分布式数据库中的事务处理方法及系统 | |
CN110175202B (zh) | 用于数据库的表的外连接的方法和系统 | |
JPH05242049A (ja) | 分散データベースのソート方法およびアクセス方法 | |
CN110019380B (zh) | 一种数据查询方法、装置、服务器及存储介质 | |
CN111259062B (zh) | 一种能够保证分布式数据库全表查询语句结果集顺序的方法和装置 | |
CN103902614B (zh) | 一种数据处理方法、设备和系统 | |
CN116561135A (zh) | 多特征数据交叉查询方法、设备及计算机可读存储介质 | |
CN116450675A (zh) | 基于元数据及相似度实现任务优化合并方法、系统及装置 | |
CN110597857A (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 |