一种数据的排序方法、系统、协处理装置和主处理装置与流程

文档序号:16984756发布日期:2019-02-26 20:30阅读:181来源:国知局
一种数据的排序方法、系统、协处理装置和主处理装置与流程

本发明实施例涉及大数据领域,特别涉及一种数据的排序方法、系统、协处理装置和主处理装置。



背景技术:

随着分布式系统基础架构(如:海杜普,简称“hadoop”)技术的出现,大数据技术被广泛运用。大数据是将计算资源与数据资源分发到不同的计算设备上进行计算,并利用处理器的多线程技术,和多个主机组成的集群计算能力,实现强大的计算和存储功能。而排序算法是大数据技术中常用的算法,在大数据技术中占有重要地位。

当今大数据技术被广泛应用,对于速度的需求不断增加,除了cpu芯片性能按照摩尔定律在不断提升之外,还可以利用协处理芯片帮助cpu芯片处理数据。以现场可编程门阵列(field-programmablegatearray,简称“fpga”)芯片和图形处理器(graphicsprocessingunit,简称“gpu”)芯片作为其中的代表。其中,gpu芯片普遍用于图像的3d加速计算,如今经历了深度学习的兴起,俨然成为深度学习方面的主要加速处理器。

通常大数据引擎包括多台设备,每台设备包括一个主处理芯片和至少一个协处理芯片。主处理芯片将数据传输至协处理芯片,由协处理芯片进行数据的排序处理,以实现协处理芯片对主处理芯片进行数据处理的加速,发明人发现现有技术中至少存在如下问题:目前主处理芯片与协处理芯片之间的数据交换速度非常慢,同时协处理芯片对主处理芯片发送的数据进行排序也非常耗时,完全失去了协处理芯片帮助主处理芯片处理数据的意义。

可见,如何提高主处理芯片与协处理芯片之间的数据交换的速度,以及提高对数据的排序速度是需要解决的问题。



技术实现要素:

本发明实施方式的目的在于提供一种数据的排序方法、系统、协处理装置和主处理装置,提高协处理装置与主处理装置之间数据交换的速度,加快了协处理装置对主处理装置发送的数据进行排序的速度。

为解决上述技术问题,本发明的实施方式提供了一种数据的排序方法,应用于协处理装置,包括:接收主处理装置发送的排序请求以及第一键值数据,第一键值数据为待排序的第一键值对数据中包含的所有键值元素,其中,第一键值对数据包含第一键值数据和与第一键值数据对应的第一数值数据,键值元素属于基本类型的数据;根据第一键值数据,构建与第一键值数据对应的第二数值数据,其中,第二数值数据用于确定第一数值数据中每个数值元素在存储空间中的位置;将第一键值数据以及对应的第二数值数据组成第二键值对数据;按照排序请求,对第二键值对数据进行排序;将排序后的第二键值对数据返回至主处理装置,其中,主处理装置根据排序后的第二键值对数据,确定第一键值数据和/或第一数值数据的排序结果。

本发明的实施方式还提供了一种数据的排序方法,包括:应用于主处理装置,包括:将第一键值数据以及排序请求发送至协处理装置,第一键值数据为待排序的第一键值对数据中包含的所有键值元素,其中,第一键值对数据包含第一键值数据和与第一键值数据对应的第一数值数据,键值元素属于基本类型的数据;接收排序后的第二键值对数据,其中,排序后的第二键值对数据是由协处理装置对第二键值对数据排序后确定,第二键值对数据是第一键值数据和根据第一键值数据构建的第二数值数据共同组成;根据排序后的第二键值对数据,确定第一键值数据和/或第一数值数据的排序结果。

本发明的实施方式还提供了一种协处理装置,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述的数据的排序方法

本发明的实施方式还提供了一种主处理装置,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被所述至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述的数据的排序方法。

本发明的实施方式还提供了一种数据的排序系统,包括:上协处理装置和上述的主处理装置。

本发明实施方式相对于现有技术而言,由于协处理装置无法直接获得非基本类型对象的头指针,需要通过回调非基本类型对象才能获得该对象的内容,例如,若主处理装置采用java语言编写,若将非基本类型对象的数据发送给协处理装置处理,需要通过java本地接口在c++中回调java非基本类型对象,获取到该对象的内容,因此,协处理装置直接读取待排序第一键值对数据,传输速度将非常的慢,影响对第一键值对数据的排序速度;而在本实施方式中仅接收第一键值数据,由于第一键值数据中每个键值元素均属于基本类型的数据,协处理装置可以直接处理属于基本类型的数据,因而提高了协处理装置和主处理装置之间的数据交换的速度,同时,第二数值数据是第一数值数据中每个元素在存储空间中的位置,使得在对第二键值对数据进行排序后,可以根据第二数值数据中的数值元素查找到第一数值数据的内容,从而确定出第一数值数据的排序结果;且协处理装置采用多线程的运行方式处理数据,从而可以快速地根据第一键值数据构建第二数值数据,并组成第二键值对数据;由于第二键值对数据中的第一键值数据和第二数值数据均是协处理装置可以处理的类型,加快了协处理装置的对第二键值对数据排序的速度,同时提高了协处理装置将排序后的第二键值对数据传输至主处理装置的速度。

另外,根据第一键值数据,构建与第一键值数据对应的第二数值数据,具体包括:获取第一键值数据的长度信息,并将第一键值数据的长度信息作为第二数值数据的长度信息;对第一键值数据中每个键值元素进行如下处理:读取键值元素的位置标号,并将位置标号作为第二数值数据中的数值元素的值,第二数值数据中的数值元素与键值元素的位置标号相同。由于第一数值数据的长度与第一键值数据的长度相同,可以将第一键值数据的长度信息作为第二数值数据的长度信息,且第一键值数据与第一数值数据一一对应,每个键值元素的位置标号与第一数值数据中每个数值元素位置标号相同,即可根据第一键值数据确定出该第二数值数据中的每个数值元素,该构建方法简单,从而可以加快协处理装置构建第二数值数据的速度。

另外,第二键值对数据的键值为第一键值数据,第二键值对数据的数值为第二数值数据;则按照排序请求,对第二键值对数据进行排序,具体包括:采用对键值进行排序的方式,对第二键值对数据进行排序。对第一键值数据排序,则与第一键值数据对应的第二数值数据将按照第一键值数据的排序方式进行排序,采用对键值进行排序的方式,可以简化排序的过程,仅需对第一键值数据排序即可获得第二数值数据的排序结果,加快了排序的过程。

另外,第一键值数据、第一数值数据以及第二数值数据均为数组类型。由于数值类型的数据在存储空间中的位置连续,通过数值的下标可以唯一确定出每个数组元素中在数组中的位置,便于构建第二数值数据,加快构建的速度以及通过第二数值数据查找对应第一数值数据的速度。

附图说明

一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。

图1是根据本发明第一实施方式提供的一种数据的排序方法的具体流程示意图;

图2是根据本发明第二实施方式提供的一种数据的排序方法的具体流程示意图;

图3是根据本发明第三实施方式提供的一种数据的排序方法的具体流程示意图;

图4是根据本发明第三实施方式中拷贝数值元素的过程示意图;

图5是根据本发明第四实施方式提供的一种数据的排序方法的具体流程示意图;

图6是根据本发明第五实施方式提供的一种协处理装置的结构示意图;

图7是根据本发明第六实施方式提供的一种主处理装置的结构示意图;

图8是根据本发明第七实施方式提供的一种数据的排序系统中数据传输的示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。

本发明的第一实施方式涉及一种数据的排序方法。该数据处理的方法应用于协处理装置中,如gpu芯片、fpga芯片等。该数据处理的方法,具体流程如图1所示。

步骤101:接收主处理装置发送的排序请求以及第一键值数据。该第一键值数据为待排序的第一键值对数据中包含的所有键值元素,其中,第一键值对数据包含第一键值数据和与第一键值数据对应的第一数值数据,键值元素属于基本类型的数据。

具体的说,主处理装置的存储空间和协处理装置的存储空间之间采用(如:peripheralcomponentinterconnectexpress,简称“pcie”总线)连接,通过pcie总线进行通信。第一键值对数据包括第一键值数据和第一数值数据,其中,第一键值数据是该第一键值对数据中包含的所有键值元素的组合。而第一数值数据与第一键值数据对应,即该第一数值数据中包含第一键值对数据中所有的数值。例如,第一键值对数据a包含3对键值对,分别为:key1→value1,key2→value2,key3→value3,本实施方式中的“→”均用于连接一对键值对,其中,“→”的左侧表示键值对的键值,“→”的右侧表示键值对的数值;那么第一键值数据记为:key1、key2和key3;而第一数值数据记为:value1、value2和value3。

需要说明的是,待排序的第一键值对数据可以是由主处理装置根据待排序的非基本类型的数据确定得到。例如,对3个对象数据中的成绩进行排序,即每个对象数据为一个学生,每个学生包含学号属性以及成绩属性,若学号为“001”的成绩为90分,学号为“002”的成绩为80分,学号为“003”的成绩为97分,那么主处理装置可以将待排序的三个学生的成绩转化为第一键值对数据,将学生的成绩作为第一键值对数据的键值,而将序号作为第一键值对数据的数值,即第一键值对数据为:“90”→“001”、“80”→“002”以及“97”→“003”,其中,“90”、“80”以及“97”作为第一键值数据,“001”、“002”以及“003”作为第一数值数据,此时,第一键值数据以及第一数值数据均属于基本数据类型。当然,第一键值对数据中的键值和数值的确定不限于上述列举的方式,也可以是其他的方式,本实施方式不对此做限制,在实际应用中,可以根据待排序的数据内容确定第一键值对数据中的键值和数值。

可以理解的是,待排序的第一键值对数据也可以是主处理装置中本来就存在的数据,那么可以无需对数据进行转化。

步骤102:根据第一键值数据,构建与第一键值数据对应的第二数值数据,其中,第二数值数据用于确定第一数值数据中每个数值元素在存储空间中的位置。

具体的说,第一键值数据、第一数值数据以及第二数值数据均为数组类型。由于数组中的每个元素在存储空间的位置是连续的,根据数组中每个元素的位置标号即可确定出该元素的位置。且第一键值数据与第二数值数据为一一对应的关系,即第一数值数据的长度信息和第二数值数据的长度信息相同,第一键值数据中的键值元素的位置标号与第二数值数据中对应的数值元素具有相同位置标号,例如,第一键值数据a以数组的形式表示为:a={key1,key2,key3},第一数值数据b以数组的形式表示为:b={value1,value2,value3},key1与value1对应,key2与value2对应,key3与value3对应,其中,key1的位置标号为0,key2的位置标号为1,key3的位置标号为2,value1的位置标号为0,value2的位置标号为1,value3的位置标号为2,即key1和value1的位置标号相同,key2和value2的位置标号相同,key3和value3的位置标号相同。本实施方式中,基于该数组的特性,可以根据第一键值数据,即可构建出对应的第二数值数据。

一个具体的实现中,获取第一键值数据的长度信息,并将第一键值数据的长度信息作为第二数值数据的长度信息;对第一键值数据中每个键值元素进行如下处理:读取键值元素的位置标号,并将位置标号作为第二数值数据中的数值元素的值,第二数值数据中的数值元素与键值元素的位置标号相同。

下面以一个具体的例子说明构建第二数值数据的过程:

假设第一键值数据为数组类型,表示为a={key1,key2,key3},获取数组a的长度为3,则确定第二数值数据的长度为3,获取key1的位置标号为“0”,而key1与value1对应,且在各自数组中的位置标号相同,因此,可以确定第二数值数据的第一个数值元素为0,同理,可以确定出第二数值数据的其余两个数值元素分别为1和2,即第二数值数据以数组index表示为:index={0,1,2},其中,通过index[0]=0,即可从第一数值数据中读取到位置标号为0的数值。

根据第一键值数据中每个键值元素的位置标号,确定第二数值数据中的数值元素,可以确保在多线程的运行方式下,快速构建出第二数值数据。

步骤103:将第一键值数据以及对应的第二数值数据组成第二键值对数据。

具体的说,可以将第一键值数据作为键值,将第二数值数据作为数值,组成第二键值对数据;当然,还可以将第一键值数据作为数值,将第二数值数据作为键值,组成第二键值对数据。

步骤104:按照排序请求,对第二键值对数据进行排序。

具体的说,可以对键值进行排序的方式对第二键值对数据进行排序,也可以对数值进行排序的方式对第二键值对数据进行排序。

步骤105:将排序后的第二键值对数据返回至主处理装置,其中,主处理装置根据排序后的第二键值对数据,确定第一键值数据和/或第一数值数据的排序结果。

具体的说,直接将排序后的第二键值对数据通过pcie总线传输至主处理装置。主处理装置将排序后的第二键值对数据中的第一键值数据作为第一键值对数据中第一键值数据的排序结果;主处理装置重新构建第三数值数据,根据排序后的第二键值对数据中的第二数值数据从第一键值对数据中的第一数值数据中读取数据,并将读取的数据按照读取第二数值数据中数值元素的顺序放置在第三数值数据中;将第三数值数据作为第一键值对数据中第一数值数据的排序结果。

本发明实施方式相对于现有技术而言,由于协处理装置无法直接获得非基本类型对象的头指针,需要通过回调非基本类型对象才能获得该对象的内容,例如,若主处理装置采用java语言编写,若将非基本类型对象的数据发送给协处理装置处理,需要通过java本地接口在c++中回调java非基本类型对象,获取到该对象的内容,因此,协处理装置直接读取待排序第一键值对数据,传输速度将非常的慢,影响对第一键值对数据的排序速度;而在本实施方式中仅接收第一键值数据,由于第一键值数据中每个键值元素均属于基本类型的数据,协处理装置可以直接处理属于基本类型的数据,因而提高了协处理装置和主处理装置之间的数据交换的速度,同时,第二数值数据是第一数值数据中每个元素在存储空间中的位置,使得在对第二键值对数据进行排序后,可以根据第二数值数据中的数值元素查找到第一数值数据的内容,从而确定出第一数值数据的排序结果;且协处理装置采用多线程的运行方式处理数据,从而可以快速地根据第一键值数据构建第二数值数据,并组成第二键值对数据;由于第二键值对数据中的第一键值数据和第二数值数据均是协处理装置可以处理的类型,加快了协处理装置的对第二键值对数据排序的速度,同时提高了协处理装置将排序后的第二键值对数据传输至主处理装置的速度。

本发明的第二实施方式涉及一种数据的排序方法。第二实施方式与第一实施方式大致相同,主要区别在于本实施方式是对步骤104:按照排序请求,对第二键值对数据进行排序的具体方式。该数据处理的方法的具体流程如图2所示:

步骤201:接收主处理装置发送的排序请求以及第一键值数据。

步骤202:根据第一键值数据,构建与第一键值数据对应的第二数值数据,其中,第二数值数据用于确定第一数值数据中每个数值元素在存储空间中的位置。

步骤203:将第一键值数据以及对应的第二数值数据组成第二键值对数据。

步骤204:采用对键值进行排序的方式,对第二键值对数据进行排序。

具体的说,第二键值对数据的键值为第一键值数据,第二键值对数据的数值为第二数值数据,根据排序请求,对键值进行排序的方式,与该键值对应的数值数据跟随键值进行相同的排序。例如,第二键值对数据中包含三个键值对,分别为:“50”→“index1”,“60”→“index2”,“40”→“index3”;按照对键值进行从小到大的排序,则将键值对中的键值进行排序,即“40”,“50”和“60”,那么排序后的第二键值对数据为:“40”→“index3”,“50”→“index1”,“60”→“index2”。

步骤205:将排序后的第二键值对数据返回至主处理装置,其中,主处理装置根据排序后的第二键值对数据,确定第一键值数据和/或第一数值数据的排序结果。

值得一提的是,本实施方式中步骤201至步骤203以及步骤205,与第一实施方式中的步骤101至步骤103,以及步骤105大致相同,此处不再赘述。

本实施方式中提供的数据的排序方法中对第一键值数据排序,则与第一键值数据对应的第二数值数据将按照第一键值数据的排序方式进行排序,采用对键值进行排序的方式,可以简化排序的过程,仅需对第一键值数据排序即可获得第二数值数据的排序结果,加快了排序的过程。

上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。

本发明第三实施方式涉及一种数据的排序方法,该数据处理的方法应用于主处理装置,如cpu芯片等。该数据处理的方法的具体流程如图3所示。

步骤301:将第一键值数据以及排序请求发送至协处理装置。第一键值数据为待排序的第一键值对数据中包含的所有键值元素,其中,第一键值对数据包含第一键值数据和与第一键值数据对应的第一数值数据,键值元素属于基本类型的数据。

具体的说,主处理装置的存储空间和协处理装置的存储空间之间采用pcie总线连接,通过pcie总线进行通信。将第一键值对数据中的包含的所有键值元素组成第一键值数据,将第一键值对数据中包含的所有数值元素组成第一数值数据,第一键值数据与第一数值数据长度相同。

待排序的第一键值对数据可以是主处理装置中本来就存在的数据,也可以是根据待排序的非基本类型的数据确定得到。例如,可以将对象数据中待排序数据转化成待排序的键值对数据,其中,第一键值数据中的每个键值元素都属于基本类型。向协处理装置发送属于基本类型的第一键值数据,由于第一键值数据为基本类型的数据,数据传输速度快,大大提高了主处理装置与协处理装置之间的数据交换速度。

步骤302:接收排序后的第二键值对数据,其中,排序后的第二键值对数据是由协处理装置对第二键值对数据排序后确定,第二键值对数据是第一键值数据和根据第一键值数据构建的第二数值数据共同组成。

具体的说,通过pcie总线接收排序后的第二键值对数据,其中,协处理装置根据第一键值数据,构建第二数值数据,并将第一键值数据和第二数值数据组成第二键值对数据,并对第二键值对数据进行排序,协处理装置的处理过程在第一实施方式和第二实施方式中已经详细介绍了,此处将不再赘述。

步骤303:根据排序后的第二键值对数据,确定第一键值数据和/或第一数值数据的排序结果。

一个具体的实现中,读取排序后的第二键值对数据中的第二数值数据,遍历排序后的第二数值数据中的数值元素;根据排序后的第二数值数据中的数值元素,从第一数值数据中读取数值元素,并将从第一数值数据中读取的数值元素按照遍历的顺序存放至重新构建的第三数值数据中,并将第三数值数据作为对第一数值数据的排序结果,其中,第三数值数据的长度与第一数值数据的长度相等;将排序后的第二键值对数据中的第一键值数据作为对第一键值数据的排序结果。

具体的说,主处理装置重新构建一个第三数值数据,该第三数值数据的长度与第一数值数据的长度相等,由于第二数值数据中每个数值元素都可以用于确定第一数值数据中每个数值元素的位置,按照排序后的第二数值数据中每个数值元素的位置标号顺序,遍历排序后的第二数值数据中的每个数值元素,每遍历一个数值元素,即可确定根据该数值元素从第一数值数据中读取对应的数值元素,并将从第一数值数据中读取的数值元素按照遍历时获取数值元素在第二数值数据中的位置标号顺序,存入第三数值数据中。在遍历完排序后的第二数值数据中数值元素之后,即确定出第三数值数据,将重新构建的第三数值数据作为第一数值数据排序结果。

下面将以java环境为例,详细介绍确定第一数值数据排序结果的过程。

主处理装置包括java接口模块和c++模块,java接口模块可以用于创建新数据,如,string类型的数据等,c++模块用于将接收到的排序后的第二数值数据复制到主处理装置的内存中。假设第一数值数据为string类型的序列,表示为str[x+10],其中,x+10为str的长度;排序后的第二键值对数据中第一键值数据表示为key[x+10],排序后的第二数值数据表示为index[x+10],java模块新建一个string类型的序列newstr[x+10],newstr[x+10]的长度与str[x+10]相等,遍历index[x+10]中的数据,并根据每次读取的位置标号从str序列中找到相同位置标号的数据,拷贝至newstr中。即重复调用newstr[i]=string[index[i]],0≤i≤x+10。拷贝一个数值元素的过程如图4所示,读取index[x]=“b”,,在str[x+10]中找到位置标号为x的存储位置,读取该位置“x”的数据a,将a存入到newstr中位置标号为x的存储位置。

本发明实施方式相对于现有技术而言,由于协处理装置无法直接获得非基本类型对象的头指针,需要通过回调非基本类型对象才能获得该对象的内容,例如,若主处理装置采用java语言编写,若将非基本类型对象的数据发送给协处理装置处理,需要通过java本地接口在c++中回调java非基本类型对象,获取到该对象的内容,因此,协处理装置直接读取待排序第一键值对数据,传输速度将非常的慢,影响对第一键值对数据的排序速度;而在本实施方式中仅接收第一键值数据,由于第一键值数据中每个键值元素均属于基本类型的数据,协处理装置可以直接处理属于基本类型的数据,因而提高了协处理装置和主处理装置之间的数据交换的速度,同时,第二数值数据是第一数值数据中每个元素在存储空间中的位置,使得在对第二键值对数据进行排序后,可以根据第二数值数据中的数值元素查找到第一数值数据的内容,从而确定出第一数值数据的排序结果;且协处理装置采用多线程的运行方式处理数据,从而可以快速地根据第一键值数据构建第二数值数据,并组成第二键值对数据;由于第二键值对数据中的第一键值数据和第二数值数据均是协处理装置可以处理的类型,加快了协处理装置的对第二键值对数据排序的速度,同时提高了协处理装置将排序后的第二键值对数据传输至主处理装置的速度。

本发明第四实施方式涉及一种数据的排序方法。第四实施方式是对第三实施方式的进一步改进,主要改进之处在于:将第一键值数据以及排序请求发送至协处理装置之前,判断第一键值数据以及第一数值数据是否为数组类型,若不是,则将第一键值数据以及第一数值数据转换数组类型。该数据处理的方法的具体流程如图5所示。

步骤401:判断第一键值数据以及第一数值数据是否为数组类型,若不是,则执行步骤402,若是,直接执行步骤403。

具体的说,由于数组中每个元素在存储空间中的位置连续,因而,通过数组中每个元素的位置下标即可唯一确定出该位置小标对应的数据。数组的这一特性,可以大大提高排序的速度,因此,先判断第一键值数据以及第一数值数据的类型是否为数组,可以通过检测每个键值元素的存储位置进行判断。

步骤402:将第一键值数据以及第一数值数据转换数组类型。之后执行步骤403。

具体的说,若不是数组类型,则构建一个新的数组,并将第一键值数据中的每个键值元素重新存放至新的数组中。例如,若第一键值数据为链表序列,那么根据每个数据的地址指针读取该第一键值数据中的键值,并将读取到的键值按照数组的位置标号的顺序存储,得到数组类型的第一键值数据。

步骤403:将第一键值数据以及排序请求发送至协处理装置。

步骤404:接收排序后的第二键值对数据。

步骤405:根据排序后的第二键值对数据,确定第一键值数据和/或第一数值数据的排序结果。

需要说明的是,本实施方式中的步骤403值步骤405,与第三实施方式中的步骤301至步骤303大致相同,此处不再赘述。

本发明第五实施方式涉及一种协处理装置。该协处理装置50包括:至少一个处理器501;以及,与至少一个处理器501通信连接的存储器502;其中,存储器502存储有可被至少一个处理器501执行的指令,指令被至少一个处理器501执行,以使至少一个处理器501能够执行第一实施方式或第二实施方式中的数据的排序方法。具体的结构如图6所示。

其中,存储器502和处理器501采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器501和存储器502的各种电路链接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器。

处理器501负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器可以被用于存储处理器在执行操作时所使用的数据。

本发明第六实施方式涉及一种主处理装置60,包括:至少一个处理器601;以及,与至少一个处理器601通信连接的存储器602;其中,存储器602存储有可被至少一个处理器601执行的指令,指令被至少一个处理器执行,以使至少一个处理器601能够执行上述第三实施方式或第四实施方式中数据的排序方法。具体的结构如图7所示。

其中,存储器602和处理器601采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器601和存储器602的各种电路链接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器。

处理器601负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器可以被用于存储处理器在执行操作时所使用的数据。

本发明第七实施方式涉及一种数据的排序的系统,该系统包括协处理装置和主处理装置。

下面将详细说明该系统中数据的排序的过程:主处理装置可以根据非基本类型的数据确定第一键值对数据,读取第一键值对数据中所有的键值元素,并将读取的所有键值元素组成第一键值数据,同理,读取第一键值对数据中所有的数值元素,将读取的所有数值元素组成第一数值数据,其中,键值元素属于基本类型。主处理装置判断第一键值数据以及第一数值数据是否为数组,若第一键值数据不为数组类型,则将第一键值数据转为数组类型,若第一数值数据不为数组类型,则将第一数值数据转为数组类型,之后,通过pcie总线将排序请求、以及数组类型的第一键值数据发送至协处理装置。协处理装置接收主处理装置发送的排序请求、第一键值数据,根据第一键值数据,确定第二数值数据,将第一键值数据和第二数值数据组成第二键值对数据,协处理装置根据排序请求对第二键值对数据排序,将排序后的第二键值对数据通过pcie总线传输至主处理装置,主处理装置根据排序后的第二键值对数据,确定第一键值数据和/或第一数值数据的排序结果。

下面以一个具体的例子具体说明该系统对数据传输的过程。

假设该系统采用java语言编写,主处理芯片中包括java接口模块以及c++控制模块,其中,java接口模块包含java本地算法,java接口模块可以从大数据引擎中接收双精度(double)类型数组作为键值序,以字符串(string)类型数组作为数值序列,其中,该双精度类型的数组和string类型数组构成第一键值对数据,由于string类型为非基本类型,将string类型的对象数据作为第一数值数据,而将待排序的数值序列作为第一键值数据(key)。如图8所示,cpu将第一键值数据(key)发送给gpu,gpu根据第一键值数据(key),构建第二数值数据(index),为了便于处理,第二数值数据类型为数组,第二数值数据的第一位为0,以1为步长依次递增,而该第二数值数据的最后一位数据为n-1,n表示第一键值数据的长度,gpu将第一键值数据和第二数值数据组成第二键值对数据,gpu采用对key排序的方式,对第二键值对数据排序,将排序后的数据返回至cpu。

不难发现,本实施方式为与第一实施方式相对应的系统实施例,本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。

值得一提的是,本实施方式中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本实施方式中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施方式中不存在其它的单元。

本领域技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1