CN111767023A - 数据排序方法和数据排序系统 - Google Patents

数据排序方法和数据排序系统 Download PDF

Info

Publication number
CN111767023A
CN111767023A CN201910646488.8A CN201910646488A CN111767023A CN 111767023 A CN111767023 A CN 111767023A CN 201910646488 A CN201910646488 A CN 201910646488A CN 111767023 A CN111767023 A CN 111767023A
Authority
CN
China
Prior art keywords
data
target data
sorting
memory
target
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
Application number
CN201910646488.8A
Other languages
English (en)
Inventor
闻玉峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Jingdong Century Trading Co Ltd, Beijing Jingdong Shangke Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201910646488.8A priority Critical patent/CN111767023A/zh
Publication of CN111767023A publication Critical patent/CN111767023A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/22Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
    • G06F7/24Sorting, i.e. extracting data from one or more carriers, rearranging the data in numerical or other ordered sequence, and rerecording the sorted data on the original carrier or on a different carrier or set of carriers sorting methods in general
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Image Processing (AREA)

Abstract

本发明实施例提供一种数据排序方法和数据排序系统,该数据排序方法包括:获取待排序的多个目标数据,将其分为多个分组;采用图形处理器的多个核分别对多个分组中的目标数据进行排序处理,且一个核仅对应处理一个分组的数据;将每个分组中排序位于前N位的目标数据分别对应存储至显存中的多个数据池中,每个数据池仅存储同一个分组中的目标数据;以及对所有数据池中存储的目标数据进行排序处理,并将排序位于前N位的目标数据存储至内存中。该方法通过采用图形处理器的多个核分别进行多组大量的目标数据的排序,然后再对各个分组中筛选出的目标数据再次排序,提取需要的目标数据,从而快速高效地完成大数据的排序和筛选,减轻服务器的压力。

Description

数据排序方法和数据排序系统
技术领域
本发明涉及计算机技术领域,具体涉及一种数据排序方法和数据排序系统。
背景技术
随着“大数据”技术的发展,利用计算机进行大数据的排序的算法越来越多。例如集合A和B各有元素数据上万个,按照元素数据的某一属性可分别对两集合中的数据进行排序,若想要提取集合A和B中的数据相互组合后形成的数据组中该属性排序前n位的数据组,由于数据组较多,计算量大,所以需要采用大数据排序算法。应用在实际场景下,例如是筛选A组商品和B组商品组合后的利润最高的n种组合,则分别对A组商品和B组商品的利润排序,从中挑选出利润较高的前几位进行组合,然后再排序取TOP n,但由于组合后的利润情况还跟商品的价格、品类、用户的接纳程度等有关系,故该排序方法得到的结果并不准确。
当集合A和B各有3万元素数据时,A和B中的数据两两组合后,利用常用的几种大数据排序方法取属性数据排序TOP 100的数据组。全排序是指分别取集合A、B中的一个元素数据两两组合,组成9亿数据组后,依次计算属性数据的大小并排序,选取前100位,该方法由于数据庞大造成内存服务器消耗过大,且运行时间过长,服务器无法承受;局部淘汰排序是指先用一个数据池保存由A和B各挑选几个数据组合后形成的100个数据组,根据属性数据排序,然后将剩余的A和B中所有的数据进行两两组合后,按顺序取一个数据组与数据池的属性数据最小的数据组相比,如果后续的数据组中存在属性数据比数据池内最小属性数据大的数据组,则用该数据组代替数据池内的属性数据最小的数据组,直至遍历完所有数据组,该方法由于数据太多,且需要不断排序,使得CPU长期处于高负载状态,容易损坏,且耗时较长。
因此,发明人认为,上述的大数据排序方法都有很大的局限性,存在对内存和CPU消耗较大,服务器运行耗时长,占用资源等问题。
发明内容
有鉴于此,本发明实施例提供一种数据排序方法和数据排序系统,充分利于GPU(Graphics Processing Unit,图形处理器)的特点和算法,采用GPU的多个核进行多组大数据的排序,然后将各个分组中筛选出的数据再统一进行排序,筛选出需要的数据,从而解决单机对处理超大量数据时的内存大量占用和CPU持续消耗,以及服务器运行时长过高的问题,最终达到使用单机或极少量服务器快速完成大量数据的排序和筛选。
根据本发明第一方面,提供一种数据排序方法,包括:
获取待排序的多个目标数据,将其分为多个分组;
采用图形处理器的多个核分别对多个分组中的目标数据进行排序处理,且一个核仅对应处理一个分组的数据;
将每个分组中排序位于前N位的所述目标数据分别对应存储至显存中的多个数据池中,每个数据池仅存储同一个分组中的目标数据;以及
对所有所述数据池中存储的所述目标数据进行排序处理,并将排序位于前N位的目标数据存储至内存中,N为设定的大于1的整数。
优选地,所述数据排序方法还包括:将所有所述数据池中的所有所述目标数据存储至单独的公共数据池中。
优选地,所述公共数据池为在内存中申请的一个数组。
优选地,所述公共数据池为在显存中申请的一个数组。
优选地,采用图形处理器的一个空闲核对所述公共数据池中存储的所有所述目标数据进行排序处理。
优选地,所述多个数据池为在显存中申请的多个数组,每个数组的存储容量为N。
优选地,所述目标数据包括单数据和/或数据对,所述数据对至少包括两个单数据。
优选地,所述数据排序方法还包括:将所述目标数据存储在显存中的至少一个数组中。
优选地,所述数据排序方法还包括:清空所述显存中存储的内容,等待下一次的数据写入。
优选地,所述数据排序方法还包括:调取内存中存储的所有所述目标数据,对其进行排序处理,并将排序位于前N位的目标数据存储至在内存中申请的一个容量为N的数组中。
优选地,所述排序处理采用的算法包括选择排序法、冒泡排序法、快速排序法和插入排序法。
优选地,根据所有所述目标数据的某一属性数据的大小对所有所述目标数据进行排序处理。
优选地,采用TOP-K算法从多个所述目标数据中筛选出排序位于前N位的目标数据。
优选地,所述数据排序方法还包括:将待排序的多个所述目标数据分配至多台服务器上,每台服务器的图形处理器分别进行部分目标数据的排序处理。
优选地,采用Java语言中的Aparapi并行化数据处理应用程序接口实现所述目标数据在所述图形处理器上的处理。
根据本发明第二方面,提供一种数据排序系统,包括:
分组单元,用于获取待排序的多个目标数据,将其分为多个分组;
多核处理单元,用于采用图形处理器的多个核分别对多个分组中的目标数据进行排序处理,且一个核仅对应处理一个分组的数据;
存储单元,用于将每个分组中排序位于前N位的所述目标数据分别对应存储至显存中的多个数据池中,每个数据池仅存储同一个分组中的目标数据;以及
排序单元,用于对所有所述数据池中存储的所述目标数据进行排序处理,并将排序位于前N位的目标数据存储至内存中,N为设定的大于1的整数。
优选地,所述数据排序系统还包括:
分配单元,用于将所述目标数据存储在显存中的至少一个数组中;
汇总单元,用于将所有所述数据池中的所有所述目标数据存储至单独的公共数据池中;
清除单元,用于清空所述显存中存储的内容,等待下一次的数据写入;
调取单元,用于调取内存中存储的所有所述目标数据,对其进行排序处理,并将排序位于前N位的目标数据存储至在内存中申请的一个容量为N的数组中。
优选地,所述公共数据池为在内存中申请的一个数组。
优选地,所述公共数据池为在显存中申请的一个数组。
优选地,采用图形处理器的一个空闲核对所述公共数据池中存储的所有所述目标数据进行排序处理。
优选地,所述多个数据池为在显存中申请的多个数组,每个数组的存储容量为N。
优选地,所述目标数据包括单数据和/或数据对,所述数据对至少包括两个单数据。
优选地,根据所有所述目标数据的某一属性数据的大小对所有所述目标数据进行排序处理。
优选地,所述数据排序系统还包括:数据分配单元,用于将待排序的多个所述目标数据分配至多台服务器上,每台服务器的图形处理器分别进行部分目标数据的排序处理。
优选地,采用Java语言中的Aparapi并行化数据处理应用程序接口实现所述目标数据在所述图形处理器上的处理。
根据本发明第三方面,提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令被执行时实现如上述所述的数据排序方法。
根据本发明第四方面,提供一种数据排序装置,包括:存储器,用于存储计算机指令;处理器,耦合到所述存储器,所述处理器被配置为基于所述存储器存储的计算机指令执行实现如上述所述的数据排序方法。
本发明的实施例具有以下优点或有益效果:该数据排序方法和数据排序系统将大量的目标数据进行分组,采用GPU的多个核分别对多个分组的目标数据进行排序处理,然后将从各个分组中筛选出的排序靠前的多个目标数据再统一进行排序处理,从而最终筛选出需要的目标数据。利用GPU的多核对大量数据进行分组和多线程处理,采用CPU和GPU结合的方式处理大量数据,减轻CPU和服务器的压力,减小内存占用,节约运算时间,从而解决单机处理超大量数据时的内存和CPU消耗较大以及服务器运行时长过高的问题,最终达到使用单机或极少量服务器快速精准地完成大量数据的排序和筛选工作。
附图说明
通过参照以下附图对本发明实施例的描述,本发明的上述以及其它目的、特征和优点将更为清楚,在附图中:
图1示出了本发明实施例中的数据排序方法的流程图;
图2示出了本发明实施例中汇总的数据排序方法的流程图;
图3a-3c分别示出了本发明一实施例中的数据排序方法中目标数据在不同位置的存储过程的示意图;
图4示出了本发明实施例中的数据排序方法在多台服务器上实现时的示意图;
图5示出了本发明另一实施例中汇总的数据排序方法的流程图;
图6示出了本发明实施例中的数据排序系统的结构图;
图7示出了本发明实施例中汇总的数据排序系统的结构图;
图8示出了根据本发明实施例的数据排序装置的结构图。
具体实施方式
以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。为了避免混淆本发明的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。
图1示出了本发明实施例中的数据排序方法的流程图,具体步骤包括S101-S104。
在步骤S101中,获取待排序的多个目标数据,将其分为多个分组。
在步骤S102中,采用图形处理器的多个核分别对多个分组中的目标数据进行排序处理,且一个核仅对应处理一个分组的数据。
在步骤S103中,将每个分组中排序位于前N位的目标数据分别对应存储至显存中的多个数据池中,每个数据池仅存储同一个分组中的目标数据。
在步骤S104中,对所有数据池中存储的目标数据进行排序处理,并将排序位于前N位的目标数据存储至内存中,N为设定的大于1的整数。
本发明实施例是针对大量数据的排序和筛选方法,当需要运算的数据量较大时,采用CPU进行运算,会增加CPU的消耗,占用资源,所以本实施例采用GPU做大量数据的运算,CPU仅处理少部分的数据,从而快速高效地完成大量数据的排序。CPU的核数一般为1-100个,而GPU的核数在10万以上,而且CPU擅长分支预测等复杂操作,而GPU擅长对大量数据进行简单操作,即大量并行的工作。所以,GPU比CPU更适合做批量的简单运算,但GPU无法单独工作,必须由CPU进行控制调用才能工作。CPU可单独工作,处理复杂的逻辑运算和不同的数据类型,但当需要处理大量的类型统一的数据时,可调用GPU进行并行计算,以下进行详细说明。
在步骤S101中,获取待排序的多个目标数据,将其分为多个分组。
本实施例是采用GPU的多核完成大量数据的处理,所以需要将目标数据分散在多个核上,每个核处理一部分数据。所以,首先要获取待排序的大量的目标数据,然后对其进行分组。待排序的多个目标数据例如是存储在数组中的数据,本步骤中,大量的目标数据例如是上亿的目标数据。分组时,可以按照一定的规则进行平均分配,将大量的目标数据平均分成多个分组,图形处理器(GPU)的每个核对应处理一个分组的数据。分组的组数要小于GPU的核数,且每个分组中的数据不能超过GPU的核的处理能力。
在步骤S102中,采用图形处理器的多个核分别对多个分组中的目标数据进行排序处理,且一个核仅对应处理一个分组的数据。
对目标数据分组之后,采用GPU的核处理多个分组中的目标数据,每个核对应处理一个分组的数据,所以进行运算的核数与目标数据的分组数一致。采用图形处理器的核对每个分组的目标数据进行排序处理,因排序处理较为简单,在GPU的可执行范围内,所以可以采用GPU同时进行大量数据的并行排序处理,每个核都对应生成一个分组的目标数据的排序结果。
例如,有9亿个目标数据,分为3万组,每组有3万个目标数据,采用GPU对这9亿数据进行处理,由于GPU的核数在10万以上,所以足够处理9亿的目标数据,取图形处理器的3万个核进行运算,核1计算第一个分组的数据,例如1-30000,核2计算第二个分组的数据,例如30001-60000……依次类推,核30000计算最后一个分组,即第30000组的数据。
每个核采用相同或不同的排序算法(例如:选择排序、冒泡排序、快速排序、插入排序等)对各自对应分组中的目标数据进行排序,选择目标数据对应的某一属性,将每个分组中的3万个数据按照该属性从高到低的顺序排列。
在步骤S103中,将每个分组中排序位于前N位的目标数据分别对应存储至显存中的多个数据池中,每个数据池仅存储同一个分组中的目标数据。
上一步骤中,每个分组中的目标数据已经经过了排序,本步骤是对分组中的数据的筛选,首先将每个分组中排序位于前N位的目标数据筛选出,存储至显存中。在显存中分配多个数据池,每个数据池的容量例如为N,用于存储每个分组的N个目标数据。显存和GPU例如均是位于显卡中,在GPU中进行目标数据的运算,在显存中进行数据的存储。
将每个分组中排序位于前N位的目标数据分别对应存储至显存中的多个数据池中,每个数据池仅存储同一个分组中的目标数据。即将核1-核30000排序后筛选出的结果分别存储在显存的数据池中,数据池命名为池n(例如:池1,池2……池30000),池1对应存储核1筛选出的第一分组的目标数据,池2对应存储核2筛选出的第二分组的目标数据……池30000对应存储核30000筛选出的第三万分组的目标数据。池n中的存储容量为N,N是设定的大于1的整数,N例如为100,则每个数据池中均存储每个分组中排序位于前100位的目标数据。筛选后的30000个池子中都是各自对应的分组的TOP 100的目标数据。
在一个实施例中,多个数据池为在显存中申请的多个数组,每个数组的存储容量为N,即在显存中对应申请3万个数组,每个数组能存放的数据的容量为N,一个数据即为一个数据池。
在步骤S104中,对所有数据池中存储的目标数据进行排序处理,并将排序位于前N位的目标数据存储至内存中,N为设定的大于1的整数。
经过筛选,每个分组中仅剩余了N个目标数据,N为100时,即从3万数据中筛选出排序靠前的100个目标数据,共有n个分组时,筛选出的数据为100*n,本实施例中,有3万分组,则最后显存中存储的目标数据为300万个,本步骤是对这300万个目标数据进行的第二次排序,采用一定的排序方法对剩余的存储在数据池中的所有目标数据进行统一的排序处理,并从中筛选出排序位于前N位的目标数据。将排序位于前N位的目标数据存储至内存中,完成整个目标数据的排序和筛选,N与上述提到的N相同,例如为100。经过本实施例的上述四个步骤,完成了从9亿数据中筛选出排序位于前100的目标数据的运算,且大量的运算都是在GPU中进行的,可以进行并行处理,节省了运算时间,减少了排序次数,能快速地从大量的目标数据中筛选出需要的目标数据。
在一个实施例中,排序处理采用的算法包括选择排序法、冒泡排序法、快速排序法和插入排序法等,具体采用哪一种排序算法可以通过系统设定实现。
在一个实施例中,目标数据包括单数据和/或数据对,数据对至少包括两个单数据。即本实施例的数据排序方法即可以适用于单数据的排序,也可以适用于由不同的单数据组成的数据对的排序。
本实施例的数据排序方法将大量的目标数据进行分组,采用GPU的多个核分别对多个分组的目标数据进行排序处理,然后将从各个分组中筛选出的排序靠前的多个目标数据再统一进行排序处理,从而最终筛选出需要的目标数据。利用GPU的多核对大量数据进行分组和多线程处理,采用CPU和GPU结合的方式处理大量数据,减轻CPU和服务器的压力,减小内存占用,节约运算时间,从而解决单机处理超大量数据时的内存和CPU消耗较大以及服务器运行时长过高的问题,最终达到使用单机或极少量服务器快速精准地完成大量数据的排序和筛选工作。
图2示出了本发明实施例中汇总的数据排序方法的流程图,具体包括以下步骤。
在步骤S201中,将目标数据存储在显存中的至少一个数组中。
在步骤S202中,获取待排序的多个目标数据,将其分为多个分组。
在步骤S203中,采用图形处理器的多个核分别对多个分组中的目标数据进行排序处理,且一个核仅对应处理一个分组的数据。
在步骤S204中,将每个分组中排序位于前N位的目标数据分别对应存储至显存中的多个数据池中,每个数据池仅存储同一个分组中的目标数据。
在步骤S205中,将所有数据池中的所有目标数据存储至单独的公共数据池中。
在步骤S206中,对所有数据池中存储的目标数据进行排序处理,并将排序位于前N位的目标数据存储至内存中,N为设定的大于1的整数。
在步骤S207中,清空显存中存储的内容,等待下一次的数据写入。
在步骤S208中,调取内存中存储的所有目标数据,对其进行排序处理,并将排序位于前N位的目标数据存储至在内存中申请的一个容量为N的数组中。
本实施例是比前述实施例更加完善的数据排序方法。其中,步骤S202-S204和步骤S206和图1的步骤S101-S104相同,这里就不再赘述。
在步骤S201中,将目标数据存储在显存中的至少一个数组中。
目标数据包括单数据和数据对,根据业务数据的特点和位数换算,1千万的数据存储需要2G的显存,所以当目标数据为单数据时,按照一般的显存容量,该排序方法适宜于数量较小的目标数据的排序和筛选,例如在百万级和千万级别的数据处理,也可以选用显存容量稍大的显卡来进行大量数据的排序和筛选。
而当目标数据为数据对时,一个数据对至少包含两个单数据,此时可以将构成目标数据的源数据进行存储,例如,有A组源数据3万个,B组源数据万个,从A和B中各挑选一个源数据组成数据对,则可以生成9亿个数据对,此时如果直接存储数据对,会占用大量的资源,所以可以选择存储源数据,在显存中申请一个或两个数组,用于存储源数据。当仅有一个数组时,将A组数据和B组数据同时存储在一个数组中,GPU的核在调用时,分别取A和B中的一个源数据构成一个数据对;当有两个数组时,A组的3W源数据在显存中申请一个数组存储,B组的3W源数据在显存中申请另一个数组存储。
不管目标数据是哪种数据,对于大量目标数据的运算和存储,都要消耗大量的资源,本发明的实施例主要是在运算的占用资源上进行的改进,所以对数据的存储没有进行详细的规定和限制,仅是举例说明。
在步骤S205中,将所有数据池中的所有目标数据存储至单独的公共数据池中。
将目标数据进行分组和排序后,要将每个分组中排序位于前N位的目标数据分别对应存储至显存中的多个数据池中,然后再将多个数据池中的所有目标数据再次进行排序。那么进行再次排序时,可以将这些目标数据存储在一个公共的数据池中,调取数据时,也能更加简单和直接。所以本步骤中,将所有数据池中的所有目标数据存储至单独的公共数据池中,公共数据池例如是申请的一个数组。当数据池有n个时,所有数据池中的数据共有N*n个,当n为3万,N为100时,公共数据池的容量至少为300万。
在一个实施例中,公共数据池为在内存中申请的一个数组。当内存容量足够,且所有的目标数据均已排序完成时,可以将公共数据池设置在内存中,由CPU直接调用公共数据池中的目标数据,对其进行再次的排序和筛选。例如,本实施例中,目标数据的源数据分别为A组3万个,B组3万个,分组为3万组,进行一次排序和筛选后,剩余的目标数据仅有300万个,可以由CPU直接执行后续的排序和筛选,处理速度更快。
在另一个实施例中,公共数据池为在显存中申请的一个数组。采用图形处理器的一个空闲核对公共数据池中存储的所有目标数据进行排序处理。还可以在显存中申请一个数组,作为公共数据池,用于存储300万个数据,然后继续采用图形处理器的核进行公共数据池中的目标数据的排序。排序时,选取一个空闲核,例如核30001(除开始选用的3万个核之外的其他核)对公共数据池的目标数据进行排序处理,然后从中筛选出排序位于前N位的目标数据,存储在内存中。
在步骤S207中,清空显存中存储的内容,等待下一次的数据写入。
当目标数据的数据量太大,而显存的内存略有不足时,可以对目标数据进行分批次的排序处理,先按照显存的容量将目标数据分为多个批次,将第一批次的目标数据进行存储,分组,排序后,将多个分组中剩余的数据存储在公共数据池中,再进行排序和筛选,然后将第一批次中筛选出的N个目标数据存储至内存中,此时清空显存的内容,等待第二批次的目标数据的写入。重复步骤S201-S206,直至第二批次的目标数据处理完成,然后再次清空显存,再次重复步骤S201-S206,直至第三批次的目标数据处理完成,以此类推,直至完成所有的目标数据的排序和筛选,每一批次的目标数据筛选出的N位数据均保存在内存中。
当数据量较小时,执行步骤S201-S206后,即可完成全部的目标数据的排序和筛选,此时清空显存即可,无需再次循环。
本实施例的数据排序方法是事先结合GPU的并行特性和显存容量进行了业务数据的分割,然后才能保证大量目标数据在GPU上的运算。由于不同GPU显存容量大小有异,且显存可以分为独立显卡和集成显卡,所以在进行数据处理前需要确定显存的容量,根据显卡的大小划分总共需要用到的容量。在本实施例中,例如,A组源数据有3万个,B组源数据也有3万个,则总共的目标数据的数据量有9亿,如果服务器有共享显存或独立显存8G,根据业务数据的特点和位数换算成1千万的数据需要2G的显存,则对这9亿数据使用全局排序时,最终在数据存储时需要用到的显存至少为2*90=180G,显然显存的容量不够支持这么庞大的运算。
而当采用本实施例的数据排序方法时,由于GPU核数较多,按照10万为标准,可以将目标数据分组,然后利用多个核来对多个分组的目标数据进行排序。那么首先需要存储两组源数据,然后将使用多个核对多个分组的目标数据进行排序和筛选之后的目标数据存储在显存中,又在显存中建立一个公共数据池,则需要用到的总数据量为30000*2(A,B两组源数据)+100*30000(每个核排序和筛选完之后剩余的目标数据)+100*30000(公共数据池的容量)=606万数据,则用到的显存容量不到2G,所以只需要进行1次循环计算即可,极大地节省了占用资源,减轻CPU和服务器的负担,节约运算时间。如果数据量超出显卡的存储范围,则循环多次。在步骤S208中,调取内存中存储的所有目标数据,对其进行排序处理,并将排序位于前N位的目标数据存储至在内存中申请的一个容量为N的数组中。
调取内存中存储的所有目标数据,对其进行排序处理,当内存中仅存储有N个目标数据时,可以省略该步骤,而当在内存中存储了多次N个目标数据时,需要调取内存中存储的所有目标数据,并对其再次进行排序处理,并将排序位于前N位的目标数据存储在内存中的一个容量为N的数组中。
上一步骤中提到过,当数据量过于庞大时,可以多次循环执行步骤S201-S207,多次将每一批次筛选出的排序位于前N位的目标数据存储至内存中,则内存中存储有多次的筛选结果,而需要的最终结果仅有N个目标数据,所以再次用CPU取多次循环中存储的所有目标数据,再次进行排序和筛选得到最终的排序位于前N位的目标数据。
在一个实施例中,本申请中采用TOP-K算法从多个目标数据中筛选出排序位于前N位的目标数据。TOP-K算法是一种较为常用的排序算法,这里不多做介绍,而且这里仅是给出一种举例。
在一个实施例中,根据所有目标数据的某一属性数据的大小对所有目标数据进行排序处理。属性数据例如是目标数据的使用寿命、合格率、召回率等。
在一个实施例中,采用Java语言中的Aparapi并行化数据处理应用程序接口实现目标数据在图形处理器上的处理。
业务逻辑大多利用Java语言实现,显卡驱动属于底层驱动,通常用C或C++语言来实现,故而要采用Java语言操作显卡进行批量运算,要用到JNI的方式调用Open CL库来操作显卡。由于Open CL是面向异构的通用标准库,故而在windows和Linux环境下均可使用,基于JNI实现的Java库有很多,例如:LWJGL(轻量级Java游戏工具库)、JOCL(对opencl用Java语言进行了封装,许多代码和opencl相同)、JCUDA(Java版本的CUDA)以及Aparapi(一个Java并行化数据处理的API,通过OpenCL的方式实现了Java代码在GPU上直接执行)等,本发明实施例通过使用和测试各种Java版本的第三方GPU工具库,最终选定了Aparapi作为此业务的实现方式。
本实施例采用Aparapi在单机中完成目标数据的排序,对数据量根据内存和显存的容量进行份数分割,并根据显卡的核数进行多线程处理,使得大批量的目标数据的排序和筛选能快速高效地在一台计算机上实现。
本实施例的数据排序方法可应用在实践中,例如,有A、B两组商品,销售状况良好,现需要挑选出A和B组合后的组合商品中,利润最高的100件组合品。可以采用本实施例的数据排序方法实现,此时,目标数据的属性数据为组合商品的利润,根据所有目标数据的利润的大小对所有目标数据进行排序处理。每个商品通常有一个组合的系数n,称为组合因子,A、B组的商品互相组合后才能算出最终利润值,通常组合品的利润系数为A1利润*B1的组合因子+B1利润*A1的组合因子,所以需要对A和B组中的商品组合后,再分别计算其利润,采用本实施例的数据排序方法可以快速实现组合品的利润的计算和排序。
本实施例采用GPU的核进行大量并行的简单的排序运算,节省了内存,减轻服务器的压力,由于对大量的数据量根据内存和显存的容量进行了份数分割,且根据显卡的核数进行多线程处理,使得运行时间大大缩短,能高效地实现大量数据的同时排序,通过采用Aparapi接口使得该方法可以在单个计算机的GPU中完成,节省了资源,提高了运算的稳定性和准确性。
图3a-3c分别示出了本发明一实施例中的数据排序方法中目标数据在不同位置的存储过程的示意图。
结合图1和图2,本实施例中以目标数据为数据对,且目标数据的源数据为A组源数据3万个,B组源数据3万个为例进行说明。
首先,如图3a所示,采用图形处理器300(GPU)来进行目标数据的排序和筛选,先在图形处理器330的显存320中申请两个数组321,A组3W源数据在一个数组中存储,B组3W源数据在另一个数组中存储。然后利用GPU的3万个核310对目标数据(3万*3万个)进行排序,核1从A组源数据所在数组中调取数据A1,再从B组源数据所在数组中调取数据B1-B30000组成3万个目标数据,并对这3万个目标数据排序;同理,核2从A组源数据所在数组中调取数据A2,再从B组源数据所在数组中调取数据B1-B30000组成3万个目标数据,并对这3万个目标数据排序……以此类推,核30000从A组源数据所在数组中调取数据A30000,再从B组源数据所在数组中调取数据B1-B30000组成3万个目标数据,并对这3万个目标数据排序。由此完成目标数据的分组和排序步骤。
如图,核1计算A1和B1-B30000组成的目标数据的属性数据的大小并排序,然后从中筛选出前N(例如是100)位存储在显存320内的一个数组中,成为一个数据池322,即池1(池1容量为100);核4计算A4和B1-B30000组成的目标数据的属性数据的大小并排序,然后从中筛选出前N(例如是100)位存储在显存320内的一个数组中,成为一个数据池322,即池4(池4容量为100);以此类推,将每个核的筛选结果均储存在显存的数据池322中,依次命名为池n(池1,池2……池30000)。
如图3b,在对所有分组中的目标数据进行排序和筛选后,将数据池322中的所有目标数据均存储在公共数据池323中,公共数据池323是在显存中申请的另一个数组。可以直接将数据调取到公共数据池323中,或者通过核310来实现。然后采用GPU的一个空闲核,例如核30001对公共数据池323中的目标数据进行排序,并取排序位于前100位的目标数据,存入组合数据池324中。组合数据池324例如是在显存中申请的另一个数组,容量为100,然后再通过CPU将显存320的组合数据池324中的最终排序为TOP 100的目标数据存储到内存区。
当数据量较小,一次可以完成所有目标数据的排序,并且内存具备显存的存储容量,则可以把显卡的公共数据池直设置在内存中,用CPU进行公共数据池中目标数据的排序,速度更快。然后清空显存320,等待下一次数据的写入。
如果数据量更大,则重复上述操作,直至所有目标数据均已经过一次排序。
如图3c所示,用CPU取内存200中存储的n次循环中得到的n*100个目标数据,采用一定的排序算法对这些数据进行排序,得到最终的排序为TOP 100的目标数据。其中,内存200中存储的n次循环中得到的n*100个目标数据例如均是来自于显存320中的组合数据池324中的,而组合数据池324中的数据又是由公共数据池323提供的。
图4示出了本发明实施例中的数据排序方法在多台服务器上实现时的示意图。
当目标数据的数量在亿级别时采用本实施例的数据排序方法来实现,而当超大量数据,例如上百亿,千亿的数据业务操作时,采用一台服务器进行排序,耗时较长,此时可以考虑采用分布式计算排序。分布式计算排序是利用多台服务器分组进行计算,例如将90亿数据分成10份分配至10台服务器,每台服务器分别排序取属性数据排序为TOP 100的数据,将10台服务器的排序结果合并后再取属性数据排序为TOP 100的数据。
如图4,首先将源数据组合成目标数据,数据A1和B1组合为目标数据C1,数据A1和B2组合为目标数据C2……,然后对目标数据进行数据分配,假设有10台服务器,序号为1、2、3……10,则将生成的9亿目标数据分别分成10份在10台服务器上,每台服务器处理9千万数据。各个服务器均对这9千万数据进行排序取排序位于前100位的目标数据,最后将10台服务器的筛选结果合并后再进行排序,即从1000个目标数据中再次筛选出排序位于前100的目标数据,作为最终的排序前100的目标数据。排序算法可以使用选择排序,冒泡排序,快速排序等。例如使用分布式计算工具hadoop,spark,使用流处理工具storm等均可实现。
在一个实施例中,还可以替换GPU的Java实现框架,如替换为JCUDA或JOCL等。这里都只是给出一些举例,并不以此限定本发明。
图5示出了本发明另一实施例中汇总的数据排序方法的流程图。
在步骤S501中,判断目标数据的数据量是否超过百亿。
在本步骤中,首先要判断需要处理的目标数据的数据量,判断其是否超过百亿,如果是,说明数据量过于庞大,可以采用分布式排序,即执行步骤S502,如果否,说明数据量较小,执行步骤S503。
在步骤S502中,将待排序的多个目标数据分配至多台服务器上。
根据图4实施例的方法对本申请的大量目标数据进行排序,首先将大量的目标数据分配至多台服务器上,多台服务器共同完成排序工作,然后每台服务器均执行步骤S503-S513。
在步骤S503中,将目标数据存储在本台服务器的显存的至少一个数组中。
在步骤S504中,获取待排序的多个目标数据,将其分为多个分组。
在步骤S505中,采用图形处理器的多个核分别对多个分组中的目标数据进行排序。
在步骤S506中,将每个分组中排序位于前N位的目标数据分别存储至显存中的多个数据池中。
步骤S503-S506在上述实施例中均有介绍,这里不再赘述。
在步骤S507中,判断目标数据的数据量是否小于一定值。
这里对排序和筛选之后的目标数据的数据量的判断,判断剩余的目标数据的数据量是否小于一定值,本步骤是判断目标数据的数据量与内存的关系。如果是,说明数据量较小,可以在内存中建立公共数据池,则执行步骤S508,如果否,说明数据量较多,将公共数据池仍建立在显存中,执行步骤S509。
在步骤S508中,对内存中的公共数据池中存储的所有目标数据进行排序处理。
在内存中申请一个数组作为公共数据池,对池中的目标数据进行排序和筛选。
在步骤S509中,采用空闲核对公共数据池中存储的所有目标数据进行排序处理。
在显存中申请一个数组作为公共数据池,采用GPU的空闲核对目标数据进行排序处理。
在步骤S510中,将排序位于前N位的目标数据存储至内存中。
本步骤在上述几个实施例中有详细描述,也不再赘述。
在步骤S511中,判断是否已经遍历完全部目标数据。
本步骤是对目标数据的数据量的再次判断,判断目标数据是否全部遍历完,如果是,执行步骤S512,如果否,说明有目标数据还没有进行排序处理,还需重新循环排序过程,则返回执行步骤S503。此判断步骤当然也可以设置在步骤S501之后,判断目标数据是否需要分批次处理。
在步骤S512中,调取内存中的所有目标数据进行排序,取前N位存储。
对内存中存储的所有目标数据进行再次排序和筛选,筛选出排序位于前N位的目标数据。
在步骤S513中,调取所有服务器中的目标数据进行排序,取前N位存储。
该步骤是与步骤S502呼应的,步骤S502中,将目标数据分配至多台服务器进行处理,本步骤将多台服务器上的目标数据进行汇总,再次进行排序和筛选,取排序位于前N位的数据存储,作为最终的筛选出的数据。至此完成本实施例的完整的数据排序方法。
应该指出的是,本发明不仅限于上述实施例提供的几种实施方式,其他排序算法和Java构架等,也可以实践本发明实施例提供的数据排序方法。
图6示出了本发明实施例中的数据排序系统的结构图。该数据排序系统600包括分组单元601、多核处理单元602、存储单元603和排序单元604。
分组单元601用于获取待排序的多个目标数据,将其分为多个分组;
多核处理单元602用于采用图形处理器的多个核分别对多个分组中的目标数据进行排序处理,且一个核仅对应处理一个分组的数据;
存储单元603用于将每个分组中排序位于前N位的目标数据分别对应存储至显存中的多个数据池中,每个数据池仅存储同一个分组中的目标数据;以及
排序单元604用于对所有数据池中存储的目标数据进行排序处理,并将排序位于前N位的目标数据存储至内存中,N为设定的大于1的整数。
在一个实施例中,多个数据池为在显存中申请的多个数组,每个数组的存储容量为N。目标数据包括单数据和/或数据对,数据对至少包括两个单数据。
本实施例根据所有目标数据的某一属性数据的大小对所有目标数据进行排序处理。且采用Java语言中的Aparapi并行化数据处理应用程序接口实现目标数据在图形处理器上的处理。
在本实施例中,数据排序系统600首先将大量的目标数据进行分组,采用GPU的多个核分别对多个分组的目标数据进行排序处理,然后将从各个分组中筛选出的排序靠前的多个目标数据再统一进行排序处理,从而最终筛选出需要的目标数据。利用GPU的多核对大量数据进行分组和多线程处理,采用CPU和GPU结合的方式处理大量数据,减轻CPU和服务器的压力,减小内存占用,节约运算时间,从而解决单机处理超大量数据时的内存和CPU消耗较大以及服务器运行时长过高的问题,最终达到使用单机或极少量服务器快速精准地完成大量数据的排序和筛选工作。
图7示出了本发明实施例中汇总的数据排序系统的结构图,图7所示的实施例在图6的实施例的基础上增加了分配单元701、汇总单元702、清除单元703和调取单元704。
分配单元701用于将目标数据存储在显存中的至少一个数组中;
汇总单元702用于将所有数据池中的所有目标数据存储至单独的公共数据池中;
清除单元703用于清空显存中存储的内容,等待下一次的数据写入;
调取单元704用于调取内存中存储的所有目标数据,对其进行排序处理,并将排序位于前N位的目标数据存储至在内存中申请的一个容量为N的数组中。
在一个实施例中,公共数据池为在内存中申请的一个数组。
在另一个实施例中,公共数据池为在显存中申请的一个数组。采用图形处理器的一个空闲核对公共数据池中存储的所有目标数据进行排序处理。
在一个实施例中,数据排序系统700还包括:数据分配单元(图中未示出),用于将待排序的多个目标数据分配至多台服务器上,每台服务器的图形处理器分别进行部分目标数据的排序处理。当目标数据的数据量超过百亿时,可以选择将目标数据分散在多个服务器上,采用多个服务器分别进行一部分目标数据的排序和晒选,然后再将所有筛选出的数据统一进行排序和筛选。
应该理解,本发明实施例的系统和方法是对应的,因此,在系统的描述中以相对简略的方式进行。
图8示出了根据本发明实施例的数据排序装置的结构图。图8示出的设备仅仅是一个示例,不应对本发明实施例的功能和使用范围构成任何限制。
参考图8,该数据排序装置800包括通过总线连接的处理器801、存储器802和输入输出设备803。存储器802包括只读存储器(ROM)和随机访问存储器(RAM),存储器802内存储有执行系统功能所需的各种计算机指令和数据,处理器801从存储器802中读取各种计算机指令以执行各种适当的动作和处理。输入输出设备包括键盘、鼠标等的输入部分;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分;包括硬盘等的存储部分;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分。存储器802还存储有以下的计算机指令以完成本发明实施例的数据排序方法规定的操作:获取待排序的多个目标数据,将其分为多个分组;采用图形处理器的多个核分别对多个分组中的目标数据进行排序处理,且一个核仅对应处理一个分组的数据;将每个分组中排序位于前N位的目标数据分别对应存储至显存中的多个数据池中,每个数据池仅存储同一个分组中的目标数据;以及对所有数据池中存储的目标数据进行排序处理,并将排序位于前N位的目标数据存储至内存中,N为设定的大于1的整数。
相应地,本发明实施例提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机指令,所述计算机指令被执行时实现上述数据排序方法所规定的操作。
附图中的流程图、框图图示了本发明实施例的系统、方法、装置的可能的体系框架、功能和操作,流程图和框图上的方框可以代表一个模块、程序段或仅仅是一段代码,所述模块、程序段和代码都是用来实现规定逻辑功能的可执行指令。也应当注意,所述实现规定逻辑功能的可执行指令可以重新组合,从而生成新的模块和程序段。因此附图的方框以及方框顺序只是用来更好的图示实施例的过程和步骤,而不应以此作为对发明本身的限制。
系统的各个模块或单元可以通过硬件、固件或软件实现。软件例如包括采用JAVA、C/C++/C#、SQL等各种编程语言形成的编码程序。虽然在方法以及方法图例中给出本发明实施例的步骤以及步骤的顺序,但是所述步骤实现规定的逻辑功能的可执行指令可以重新组合,从而生成新的步骤。所述步骤的顺序也不应该仅仅局限于所述方法以及方法图例中的步骤顺序,可以根据功能的需要随时进行调整。例如将其中的某些步骤并行或按照相反顺序执行。
根据本发明的系统和方法可以部署在单个或多个服务器上。例如,可以将不同的模块分别部署在不同的服务器上,形成专用服务器。或者,可以在多个服务器上分布式部署相同的功能单元、模块或系统,以减轻负载压力。所述服务器包括但不限于在同一个局域网以及通过Internet连接的多个PC机、PC服务器、刀片机、超级计算机等。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (19)

1.一种数据排序方法,其特征在于,包括:
获取待排序的多个目标数据,将其分为多个分组;
采用图形处理器的多个核分别对多个分组中的目标数据进行排序处理,且一个核仅对应处理一个分组的数据;
将每个分组中排序位于前N位的所述目标数据分别对应存储至显存中的多个数据池中,每个数据池仅存储同一个分组中的目标数据;以及
对所有所述数据池中存储的所述目标数据进行排序处理,并将排序位于前N位的目标数据存储至内存中,N为设定的大于1的整数。
2.根据权利要求1所述的数据排序方法,其特征在于,还包括:将所有所述数据池中的所有所述目标数据存储至单独的公共数据池中。
3.根据权利要求2所述的数据排序方法,其特征在于,所述公共数据池为在内存中申请的一个数组。
4.根据权利要求2所述的数据排序方法,其特征在于,所述公共数据池为在显存中申请的一个数组。
5.根据权利要求4所述的数据排序方法,其特征在于,采用图形处理器的一个空闲核对所述公共数据池中存储的所有所述目标数据进行排序处理。
6.根据权利要求1所述的数据排序方法,其特征在于,所述多个数据池为在显存中申请的多个数组,每个数组的存储容量为N。
7.根据权利要求1所述的数据排序方法,其特征在于,所述目标数据包括单数据和/或数据对,所述数据对至少包括两个单数据。
8.根据权利要求1所述的数据排序方法,其特征在于,还包括:将所述目标数据存储在显存中的至少一个数组中。
9.根据权利要求1所述的数据排序方法,其特征在于,还包括:清空所述显存中存储的内容,等待下一次的数据写入。
10.根据权利要求1所述的数据排序方法,其特征在于,还包括:调取内存中存储的所有所述目标数据,对其进行排序处理,并将排序位于前N位的目标数据存储至在内存中申请的一个容量为N的数组中。
11.根据权利要求10所述的数据排序方法,其特征在于,所述排序处理采用的算法包括选择排序法、冒泡排序法、快速排序法和插入排序法。
12.根据权利要求1所述的数据排序方法,其特征在于,根据所有所述目标数据的某一属性数据的大小对所有所述目标数据进行排序处理。
13.根据权利要求1所述的数据排序方法,其特征在于,采用TOP-K算法从多个所述目标数据中筛选出排序位于前N位的目标数据。
14.根据权利要求1所述的数据排序方法,其特征在于,还包括:将待排序的多个所述目标数据分配至多台服务器上,每台服务器的图形处理器分别进行部分目标数据的排序处理。
15.根据权利要求1所述的数据排序方法,其特征在于,采用Java语言中的Aparapi并行化数据处理应用程序接口实现所述目标数据在所述图形处理器上的处理。
16.一种数据排序系统,其特征在于,包括:
分组单元,用于获取待排序的多个目标数据,将其分为多个分组;
多核处理单元,用于采用图形处理器的多个核分别对多个分组中的目标数据进行排序处理,且一个核仅对应处理一个分组的数据;
存储单元,用于将每个分组中排序位于前N位的所述目标数据分别对应存储至显存中的多个数据池中,每个数据池仅存储同一个分组中的目标数据;以及
排序单元,用于对所有所述数据池中存储的所述目标数据进行排序处理,并将排序位于前N位的目标数据存储至内存中,N为设定的大于1的整数。
17.根据权利要求16所述的数据排序系统,其特征在于,还包括:
分配单元,用于将所述目标数据存储在显存中的至少一个数组中;
汇总单元,用于将所有所述数据池中的所有所述目标数据存储至单独的公共数据池中;
清除单元,用于清空所述显存中存储的内容,等待下一次的数据写入;
调取单元,用于调取内存中存储的所有所述目标数据,对其进行排序处理,并将排序位于前N位的目标数据存储至在内存中申请的一个容量为N的数组中。
18.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令被执行时实现如权利要求1至15中任一项所述的数据排序方法。
19.一种数据排序装置,其特征在于,包括:
存储器,用于存储计算机指令;
处理器,耦合到所述存储器,所述处理器被配置为基于所述存储器存储的计算机指令执行实现如权利要求1至15中任一项所述的数据排序方法。
CN201910646488.8A 2019-07-17 2019-07-17 数据排序方法和数据排序系统 Pending CN111767023A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910646488.8A CN111767023A (zh) 2019-07-17 2019-07-17 数据排序方法和数据排序系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910646488.8A CN111767023A (zh) 2019-07-17 2019-07-17 数据排序方法和数据排序系统

Publications (1)

Publication Number Publication Date
CN111767023A true CN111767023A (zh) 2020-10-13

Family

ID=72718973

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910646488.8A Pending CN111767023A (zh) 2019-07-17 2019-07-17 数据排序方法和数据排序系统

Country Status (1)

Country Link
CN (1) CN111767023A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114840568A (zh) * 2022-07-04 2022-08-02 华控清交信息科技(北京)有限公司 一种密文排序方法、装置和用于密文排序的装置
CN115599541A (zh) * 2021-02-25 2023-01-13 华为技术有限公司(Cn) 一种排序装置及方法
CN117112238A (zh) * 2023-10-23 2023-11-24 天津南大通用数据技术股份有限公司 一种olap数据库排序算子中的高性能归并方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110055492A1 (en) * 2009-09-03 2011-03-03 Ren Wu Multiple processing core data sorting
CN106802787A (zh) * 2017-01-15 2017-06-06 天泽信息产业股份有限公司 基于GPU排序的MapReduce优化方法
CN107077488A (zh) * 2014-10-07 2017-08-18 甲骨文国际公司 并行合并
CN107102839A (zh) * 2017-04-13 2017-08-29 青岛蓝云信息技术有限公司 一种基于硬件排序MapReduce的数据处理方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110055492A1 (en) * 2009-09-03 2011-03-03 Ren Wu Multiple processing core data sorting
CN107077488A (zh) * 2014-10-07 2017-08-18 甲骨文国际公司 并行合并
CN106802787A (zh) * 2017-01-15 2017-06-06 天泽信息产业股份有限公司 基于GPU排序的MapReduce优化方法
CN107102839A (zh) * 2017-04-13 2017-08-29 青岛蓝云信息技术有限公司 一种基于硬件排序MapReduce的数据处理方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
杂说: "大数据量获取TopK的几种方案", pages 2, Retrieved from the Internet <URL:https://blog.csdn.net/CSDN___LYY/article/details/82909081> *
郭诚欣 等: "基于现代硬件的并行内存排序方法综述", 计算机学报, vol. 40, no. 09 *
黄玉龙 等: "GPU 加速的分段 Top - k 查询算法", 计算机应用, vol. 34, no. 11 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115599541A (zh) * 2021-02-25 2023-01-13 华为技术有限公司(Cn) 一种排序装置及方法
CN114840568A (zh) * 2022-07-04 2022-08-02 华控清交信息科技(北京)有限公司 一种密文排序方法、装置和用于密文排序的装置
CN114840568B (zh) * 2022-07-04 2022-09-20 华控清交信息科技(北京)有限公司 一种密文排序方法、装置和用于密文排序的装置
CN117112238A (zh) * 2023-10-23 2023-11-24 天津南大通用数据技术股份有限公司 一种olap数据库排序算子中的高性能归并方法
CN117112238B (zh) * 2023-10-23 2024-01-30 天津南大通用数据技术股份有限公司 一种olap数据库排序算子中的高性能归并方法

Similar Documents

Publication Publication Date Title
US20220027195A1 (en) System and method for batch evaluation programs
CN108292241B (zh) 处理计算图
US10102038B2 (en) Data mining method and node
CN110704360B (zh) 一种基于异构fpga数据流的图计算优化方法
US10235182B2 (en) System and method for hybrid task management across CPU and GPU for efficient data mining
US8676874B2 (en) Data structure for tiling and packetizing a sparse matrix
US8762655B2 (en) Optimizing output vector data generation using a formatted matrix data structure
CN111767023A (zh) 数据排序方法和数据排序系统
US10268741B2 (en) Multi-nodal compression techniques for an in-memory database
US20130138923A1 (en) Multithreaded data merging for multi-core processing unit
US9830369B1 (en) Processor for database analytics processing
CN114519006A (zh) 测试方法、装置、设备以及存储介质
CN111400410B (zh) 知识图谱的查询方法、装置、计算机设备和存储介质
CN116089367A (zh) 动态分桶方法、装置、电子设备和介质
CN112130977B (zh) 一种任务调度方法、装置、设备及介质
CN110415162B (zh) 大数据中面向异构融合处理器的自适应图划分方法
US20220343146A1 (en) Method and system for temporal graph neural network acceleration
JP6969268B2 (ja) 計算機およびcpuコア割当方法
CN109684602B (zh) 一种批处理方法和装置及计算机可读存储介质
CN111860797B (zh) 运算装置
US11966783B1 (en) Real time scheduling using expected application resource usage
Nabavinejad et al. Energy efficiency in cloud-based MapReduce applications through better performance estimation
US11442643B2 (en) System and method for efficiently converting low-locality data into high-locality data
US10454497B1 (en) Reducing a size of multiple data sets
AlMasri On implementing sparse matrix-vector multiplication on intel platform

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