CN111831861A - 一种大数据领域使用gpu实现多分组数据排序的方法 - Google Patents
一种大数据领域使用gpu实现多分组数据排序的方法 Download PDFInfo
- Publication number
- CN111831861A CN111831861A CN202010661365.4A CN202010661365A CN111831861A CN 111831861 A CN111831861 A CN 111831861A CN 202010661365 A CN202010661365 A CN 202010661365A CN 111831861 A CN111831861 A CN 111831861A
- Authority
- CN
- China
- Prior art keywords
- data
- gpu
- group
- original data
- memory area
- 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
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/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/06—Arrangements for sorting, selecting, merging, or comparing data on individual record carriers
- G06F7/08—Sorting, i.e. grouping record carriers in numerical or other ordered sequence according to the classification of at least some of the information they carry
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种大数据领域使用GPU实现多分组数据排序的方法,通过获取原始数据;根据预设条件对原始数据进行分组,确定多个分组;标记每个分组在整个内存区域的起始位置;计算每个分组内部数据的个数;将原始数据、多个分组、每个分组在整个内存区域的起始位置、每个分组内部数据的个数通过CPU传输至GPU中;利用GPU的多核结构,GPU线程从整个内存区域的目标位置获取原始数据,对每个分组的内部数据进行排序。本发明基于GPU多核的特点,将数据交给GPU进行处理,能够解决先分组、再排序的场景。并且本发明使用CPU结合GPU来实现数据先分组、再排序的场景,大幅提升了CPU处理上述数据的性能。
Description
技术领域
本发明涉及大数据技术领域,特别是涉及一种大数据领域使用GPU实现多分组数据排序的方法。
背景技术
在数据量呈指数级增长的态势下,人们对大数据处理的性能有了更高的要求。面对海量级的数据,有些场景下,需要对多个分组数据进行排序,且分组数量庞大,然而每个分组内部数据量却很少的场景。针对这种场景,CPU由于其硬件限制,数据处理的并行度低,就造成数据处理速度慢,在数据量较大时,性能难以接收。并且现有技术利用CPU对多分组数据排序,由于CPU核数少,硬件也不足以支撑超大数据量下的每个数据分组的同时排序。
发明内容
鉴于以上所述现有技术的缺点,本发明的目的在于提供一种大数据领域使用GPU实现多分组数据排序的方法,用于解决现有技术中存在的问题。
为实现上述目的及其他相关目的,本发明提供一种大数据领域使用GPU实现多分组数据排序的方法,包括以下步骤:
获取多个原始数据;
根据预设条件对所述多个原始数据进行分组,确定多个分组;
标记每个分组在整个内存区域的起始位置;
计算每个分组内部数据的个数;
将所述多个原始数据、所述多个分组、每个分组在整个内存区域的起始位置、每个分组内部数据的个数从CPU传输至GPU中;
利用所述GPU的多核结构,通过所述GPU线程从整个内存区域的目标位置获取原始数据,并根据获取到的原始数据对每个分组的内部数据进行排序。
可选地,标记每个分组在整个内存区域的起始位置,包括有:
通过自然数建立与所述多个原始数据对应的索引,使一个索引对应一个原始数据;
获取所有起始索引,根据所有起始索引标记每个分组在整个内存区域的起始位置。
可选地,还包括:
利用所述GPU的多核结构,通过所述GPU线程从整个内存区域的目标位置获取原始数据,并根据获取到的原始数据对每个分组的内部数据进行计算;
所述计算包括以下至少之一:排序、求和、求最大值、求最小值、求平均值。
可选地,所述计算通过SQL中的关键字group by(min、max、avg、count)、这些算法实现。
如上所述,本发明提供一种大数据领域使用GPU实现多分组数据排序的方法,具有以下有益效果:
本发明通过获取多个原始数据;根据预设条件对多个原始数据进行分组,确定多个分组;标记每个分组在整个内存区域的起始位置;计算每个分组内部数据的个数;将多个原始数据、多个分组、每个分组在整个内存区域的起始位置、每个分组内部数据的个数从CPU传输至GPU中;利用GPU的多核结构,通过GPU线程从整个内存区域的目标位置获取原始数据,并根据获取到的原始数据对每个分组的内部数据进行排序。本发明可以利用GPU的多核硬件架构,合理巧妙的组织数据,从而能够利用GPU多线程处理数据的特性。基于GPU多核的特点,将数据交给GPU进行处理,能够解决先分组、再排序的场景。并且本发明使用GPU来实现数据先分组、再排序的场景,大幅提升了CPU处理上述数据的性能。
附图说明
图1为一实施例提供的大数据领域使用GPU实现多分组数据排序的方法的流程示意图;
图2为一实施例提供的利用GPU多线程处理数据的示意图。
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
请参阅图1和图2,本发明提供一种大数据领域使用GPU实现多分组数据排序的方法,包括以下步骤:
S100,获取多个原始数据;
S200,根据预设条件对多个原始数据进行分组,确定多个分组;
S300,标记每个分组在整个内存区域的起始位置;
S400,计算每个分组内部数据的个数;
S500,将这多个原始数据、多个分组、每个分组在整个内存区域的起始位置、每个分组内部数据的个数从CPU传输至GPU中;
S600,利用GPU的多核结构,通过GPU线程从整个内存区域的目标位置获取原始数据,并根据获取到的原始数据对每个分组的内部数据进行排序。
通过上述记载,本发明可以利用GPU的多核硬件架构,合理巧妙的组织数据,从而能够利用GPU多线程处理数据的特性。基于GPU多核的特点,将数据交给GPU进行处理,能够解决先分组、再排序的场景。并且本发明使用GPU来实现数据先分组、再排序的场景,大幅提升了CPU处理上述数据的性能。
在一示例性实施例中,标记每个分组在整个内存区域的起始位置,包括有:
通过自然数建立与多个原始数据对应的索引,使一个索引对应一个原始数据;
获取所有起始索引,根据所有起始索引标记每个分组在整个内存区域的起始位置。
根据上述记载,在一些示例性实施例中,还包括:
利用GPU的多核结构,通过GPU线程从整个内存区域的目标位置获取原始数据,并根据获取到的原始数据对每个分组的内部数据进行计算;
计算包括以下至少之一:排序、求和、求最大值、求最小值、求平均值。
其中,计算通过SQL中的关键字group by(max、min、avg、count)这些算法实现。
根据上述描述,作为示例,在一具体实施例中,
获取原始数据:5 1 3 19 30 56 23 45 88 6 9 55 32 67 54 30;
根据实际情况或预设条件对数据进行分组,确定多个分组;例如:5 1 3|19 30|5623 45 88|6 9 55 32|67 54 30。本发明中的实际情况或预设条件根据实际进行确定,本申请不做任何限制。
标记每个分组在整个内存区域的起始位置;具体地,通过自然数建立与所述多个原始数据对应的索引,使一个索引对应一个原始数据;获取所有起始索引,根据所有起始索引标记每个分组在整个内存区域的起始位置。例如:
建立索引:0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15;
分组后的数据:5 1 3|19 30|56 23 45 88|6 9 55 32|67 54 30;
获取起始索引:0|3|5|9|13;
根据所有起始索引来标记每个分组在整个内存区域的起始位置。
计算每个分组内数据的个数;即计算:5 1 3|19 30|56 23 45 88|6 9 55 32|6754 30的个数,有:3个|2个|4个|4个|3个。
将这些原始数据、这些分组、每个分组在整个内存区域的起始位置、每个分组内部数据的个数传输至GPU中。设置每个线程从整个内存区域的目标位置获取数据,并通过每个线程对个数进行排序,这样就能够保证对每个分组分别进行排序。并且,每个分组之间不关心数据的顺序;即任意两个分组之间的数据顺序不存在干扰或关联。
利用GPU的多核结构,通过GPU线程从整个内存区域的目标位置获取原始数据,并根据获取到的原始数据对每个分组的内部数据进行排序。所有GPU线程排序后,数据占用内存大小不变,只是位置更换。每个分组内数据都是有序的,无需关心分组之间数据的顺序。
原始数据:5 1 3|19 30|56 23 45 88|6 9 55 32|67 54 30;
排序数据:1 3 5|19 30|23 45 56 88|6 9 32 55|54 30 67。
通过上述记载,本申请实施例可以利用GPU的多核硬件架构,合理巧妙的组织数据,从而能够利用GPU多线程处理数据的特性。基于GPU多核的特点,将数据交给GPU进行处理,能够解决先分组、再排序的场景。并且本申请实施例使用GPU来实现数据先分组、再排序的场景,大幅提升了CPU处理上述数据的性能。
综上所述,现有技术对于数据分组多、而每个分组内数据量少、每个分组之间数据排序不交叉的场景,使用CPU性能较低。而本发明能够适用多个分组数据进行排序,且分组数量庞大,每个分组内部数据量却很少的场景。并且,本发明为了实现上述场景,可以利用GPU的多核特点,每个GPU线程对一组数据进行计算(例如排序、求和、求最大值、最小值、平均值等)。同时,为了使用GPU,可以对数据进行位置标记、分组数量标记,从而能够适用于GPU进行并行计算的存储结构。并且,本发明还可以用SQL中的关键字group by(max、min、avg、count)算法实现。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
Claims (3)
1.一种大数据领域使用GPU实现多分组数据排序的方法,其特征在于,包括以下步骤:
获取多个原始数据;
根据预设条件对所述多个原始数据进行分组,确定多个分组;
标记每个分组在整个内存区域的起始位置;
计算每个分组内部数据的个数;
将所述多个原始数据、所述多个分组、每个分组在整个内存区域的起始位置、每个分组内部数据的个数从CPU传输至GPU中;
利用所述GPU的多核结构,通过所述GPU线程从整个内存区域的目标位置获取原始数据,并根据获取到的原始数据对每个分组的内部数据进行排序。
2.根据权利要求1所述的大数据领域使用GPU实现多分组数据排序的方法,其特征在于,标记每个分组在整个内存区域的起始位置,包括有:
通过自然数建立与所述多个原始数据对应的索引,使一个索引对应一个原始数据;
获取所有起始索引,根据所有起始索引标记每个分组在整个内存区域的起始位置。
3.根据权利要求1所述的大数据领域使用GPU实现多分组数据排序的方法,其特征在于,还包括:
利用所述GPU的多核结构,通过所述GPU线程从整个内存区域的目标位置获取原始数据,并根据获取到的原始数据对每个分组的内部数据进行计算;
所述计算包括以下至少之一:排序、求和、求最大值、求最小值、求平均值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010661365.4A CN111831861A (zh) | 2020-07-15 | 2020-07-15 | 一种大数据领域使用gpu实现多分组数据排序的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010661365.4A CN111831861A (zh) | 2020-07-15 | 2020-07-15 | 一种大数据领域使用gpu实现多分组数据排序的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111831861A true CN111831861A (zh) | 2020-10-27 |
Family
ID=72899874
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010661365.4A Pending CN111831861A (zh) | 2020-07-15 | 2020-07-15 | 一种大数据领域使用gpu实现多分组数据排序的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111831861A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103559016A (zh) * | 2013-10-23 | 2014-02-05 | 江西理工大学 | 一种基于图形处理器并行计算的频繁子图挖掘方法 |
CN103714009A (zh) * | 2013-12-20 | 2014-04-09 | 华中科技大学 | 一种GPU上基于内存统一管理的MapReduce实现方法 |
CN110442574A (zh) * | 2019-07-01 | 2019-11-12 | 上海赜睿信息科技有限公司 | 一种数据处理方法、电子设备和计算机可读存储介质 |
-
2020
- 2020-07-15 CN CN202010661365.4A patent/CN111831861A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103559016A (zh) * | 2013-10-23 | 2014-02-05 | 江西理工大学 | 一种基于图形处理器并行计算的频繁子图挖掘方法 |
CN103714009A (zh) * | 2013-12-20 | 2014-04-09 | 华中科技大学 | 一种GPU上基于内存统一管理的MapReduce实现方法 |
CN110442574A (zh) * | 2019-07-01 | 2019-11-12 | 上海赜睿信息科技有限公司 | 一种数据处理方法、电子设备和计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104199827B (zh) | 基于局部敏感哈希的大规模多媒体数据的高维索引方法 | |
He et al. | Computing nearest-neighbor fields via propagation-assisted kd-trees | |
US20110078133A1 (en) | Searching Multi-Dimensional Data | |
CN105574212B (zh) | 一种多索引磁盘哈希结构的图像检索方法 | |
CN106202548A (zh) | 数据存储方法、查找方法及装置 | |
US20170365071A1 (en) | System and method for compressing graphs via cliques | |
CN108733780A (zh) | 一种图片搜索方法及装置 | |
CN107341507B (zh) | 一种基于gpu与级联哈希的快速图像sift特征匹配方法 | |
CN110210558B (zh) | 评估神经网络性能的方法及装置 | |
CN111858651A (zh) | 一种数据处理方法以及数据处理装置 | |
US9792337B2 (en) | In-database connectivity components analysis of data | |
CN115357571A (zh) | 一种数据去重方法、装置、设备及介质 | |
CN111831861A (zh) | 一种大数据领域使用gpu实现多分组数据排序的方法 | |
CN106126681A (zh) | 一种增量式流式数据聚类方法及系统 | |
JP6705764B2 (ja) | 生成装置、生成方法、及び生成プログラム | |
Yang et al. | Weakly supervised class-agnostic image similarity search based on convolutional neural network | |
CN109753510B (zh) | 一种目标数据的获取方法、系统、电子设备及存储介质 | |
CN104866818B (zh) | 一种用于搜索包含人脸的图片的方法和装置 | |
JP4440246B2 (ja) | 空間インデックス方法 | |
Porto et al. | Constellation queries over big data | |
CN108256058A (zh) | 一种基于微型计算平台的实时响应大媒体近邻检索方法 | |
CN106652023B (zh) | 一种大规模无序图像快速运动恢复结构的方法及系统 | |
CN107077481A (zh) | 信息处理装置、信息处理方法和计算机可读存储介质 | |
CN109271413A (zh) | 一种数据查询的方法、装置及计算机存储介质 | |
Last et al. | What is typical? |
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 |