CN110413849A - 一种数据排序方法及装置 - Google Patents
一种数据排序方法及装置 Download PDFInfo
- Publication number
- CN110413849A CN110413849A CN201910662502.3A CN201910662502A CN110413849A CN 110413849 A CN110413849 A CN 110413849A CN 201910662502 A CN201910662502 A CN 201910662502A CN 110413849 A CN110413849 A CN 110413849A
- Authority
- CN
- China
- Prior art keywords
- data
- data segment
- section
- segment
- current scheduling
- 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
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/903—Querying
-
- 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/903—Querying
- G06F16/90335—Query processing
- G06F16/90348—Query processing by searching ordered data, e.g. alpha-numerically ordered data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Multi Processors (AREA)
Abstract
本发明实施例公开了一种数据排序方法及装置,所述数据包括多个数据段,本发明实施例基于多个数据段的数据类别和数据类型确定各数据段分别对应的线程数和排序算法,并根据各数据段对应的线程数、排序算法动态调度至少一个数据段进行多线程并行排序,由此,可以提高数据段的排序效率。
Description
技术领域
本发明涉及计算机技术领域,更具体地,涉及一种数据排序方法及装置。
背景技术
目前,等离子体实时诊断、图形重新排序和后缀数据构造等问题,都要求以矩阵行或数组段的形式对多个数组进行排序,这种类型的排序任务被定义为分段排序。分段排序对由多个数据段组成的给定数组逐段排序,也即在整个数组中排序一批独立的数据段。随着HPC和大数据应用的更多多核处理器的广泛采用,分段排序起着越来越重要得到作用。
随着数据的急剧增长,在分段排序中,要排序的数据段以及每段数据的数据量也不断增大,现有的基于CPU的分段排序方法效率低,已不能满足大规模数据对排序效率的需求。
发明内容
有鉴于此,本发明实施例提供一种数据排序方法及装置,以提高排序效率。
第一方面,本发明实施例提供一种数据排序方法,所述数据包括多个数据段,所述方法包括:
确定多个所述数据段的数据段类别和数据类型;
根据所述数据段的数据段类别确定所述数据段对应的线程数;
根据所述数据段的数据类型确定所述数据段对应的排序算法;
根据各数据段对应的线程数、排序算法动态调度至少一个数据段进行多线程并行排序。
可选的,确定多个所述数据段的数据段类别包括:
响应于所述数据段的数据量大于等于第一阈值,确定所述数据段为第一类数据段;
响应于所述数据段的数据量大于等于第二阈值且小于第一阈值,确定所述数据段为第二类数据段;
响应于所述数据段的数据量小于第二阈值,确定所述数据段为第三类数据段。
可选的,根据各数据段对应的线程数、排序算法动态调度至少一个数据段进行排序包括:
调度一个第一类数据段;
将当前调度的所述第一类数据段分为多个数据块,所述数据块的数量与当前调度的所述第一类数据段对应的线程数匹配;
根据当前调度的所述第一类数据段对应的排序算法多线程并行处理所述多个数据块以对当前调度的所述数据段进行排序。
可选的,根据各数据段对应的线程数、排序算法动态调度至少一个数据段进行排序包括:
调度多个第二类数据段;
将当前调度的所述第二类数据段分别分为多个数据块,所述数据块的数量与对应的当前调度的所述第二类数据段的线程数匹配;
根据当前调度的多个所述第二类数据段分别对应的排序算法多线程并行处理各所述数据块,以对当前调度的多个所述第二类数据段分别进行排序。
可选的,根据各数据段对应的线程数、排序算法动态调度至少一个数据段进行排序包括:
调度多个第三类数据段;
根据当前调度的多个所述第三类数据段分别对应的排序算法多线程并行处理各所述第三类数据段,以对当前调度的多个所述第三类数据段分别进行排序;
其中,每个所述第三类数据段对应的线程数为一个。
可选的,根据各数据段对应的线程数、排序算法动态调度至少一个数据段进行排序包括:
调度至少一个第二类数据段和至少一个第三类数据段;
将当前调度的至少一个所述第二类数据段分别分为多个数据块,所述数据块的数量与对应的当前调度的所述第二类数据段的线程数匹配;
根据当前调度的至少一个第二类数据段和至少一个第三类数据段分别对应的排序算法多线程并行处理各所述数据块和所述第三类数据段,以对当前调度的第二类数据段和第三类数据段分别进行排序。
可选的,顺序调度所述数据的多个数据段以不改变段间位置。
第二方面,本发明实施例提供一种电子设备,包括存储器和处理器,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行用以实现如本发明实施例的第一方面所述的方法。
可选的,所述处理器为GPU处理器。
第三方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行以实现如本发明实施例的第一方面所述的方法。
本发明实施例基于多个数据段的数据类别和数据类型确定各数据段分别对应的线程数和排序算法,并根据各数据段对应的线程数、排序算法动态调度至少一个数据段进行多线程并行排序,由此,可以提高数据段的排序效率。
附图说明
通过以下参照附图对本发明实施例的描述,本发明的上述以及其它目的、特征和优点将更为清楚,在附图中:
图1是本发明实施例的分段排序的示意图;
图2是本发明实施例的数据排序方法的流程图;
图3是本发明实施例的另一种数据排序方法的流程图;
图4-图7是本发明实施例的数据排序过程的示意图;
图8是本发明实施例的数据排序装置的示意图;
图9是本发明实施例的电子设备的示意图。
具体实施方式
以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。为了避免混淆本发明的实质,公知的方法、过程、流程、元件和电路并没有详细叙述。
此外,本领域普通技术人员应当理解,在此提供的附图都是为了说明的目的,并且附图不一定是按比例绘制的。
除非上下文明确要求,否则整个说明书和权利要求书中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。
在本发明的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
图1是本发明实施例的分段排序的示意图。如图1所示,原始数据1分为原始数据段11、原始数据段12和原始数据段13等,通过预定的算法对原始数据段11、原始数据段12和原始数据段13等进行排序,获得排序后的数据段21-23等,从而获得排序后的数据2。由此,通过分段排序,可以实现等离子体实时诊断、图像重新排序和后缀数组构造等功能。
图2是本发明实施例的数据排序方法的流程图。如图2所示,本实施例的数据排序方法包括以下步骤:
步骤S100,确定多个数据段的数据段类别和数据类型。其中,数据类型可以包括整数型、浮点型等。数据段类别用于表示数据段的数据量大小。在一种可选的实现方式中,确定多个所述数据段的数据段类别具体可以包括:响应于数据段的数据量大于等于第一阈值,确定所述数据段为第一类数据段,响应于数据段的数据量大于等于第二阈值且小于第一阈值,确定所述数据段为第二类数据段,响应于数据段的数据量小于第二阈值,确定所述数据段为第三类数据段。容易理解,以上分类仅仅是示例性的,在实际应用中,可以根据数据实际情况基于各数据段的数据量进行分类。
步骤S200,根据数据段的数据段类别确定数据段对应的线程数。数据段的数据量越大,所需的进程数越多。
在一种可选的实现方式中,给第一类数据段分配所有可用的线程。给第二类数据段按比例分配不同的线程,也即数据量较大的分配较多的线程,数据量较小的分配较少的线程。给第三类数据段分配1个线程即可。由此,线程按需分配给不同类别的数据段,在对多个数据段同时进行排序时,可以使得这些数据段的排序时间相近,并且提高了线程的使用率。容易理解,上述线程的分配方式仅仅是示例性的,本实施例并不对此进行限制。
步骤S300,根据数据段的数据类型确定数据段对应的排序算法。对于不同的数据类型以及数据量,采用对应的排序算法,可以提高排序效率。
应理解,步骤S200和步骤S300可以同时执行,也可以先执行步骤S200,在执行步骤S300,或者先执行步骤S300,在执行步骤S200。
步骤S400,根据各数据段对应的线程数、排序算法动态调度至少一个数据段进行多线程并行排序。具体地,根据系统线程及内存等资源的使用情况,根据各数据段对应的线程数、排序算法动态调度至少一个数据段进行多线程并行排序。
在一种可选的实现方式中,根据各数据段对应的线程数、排序算法动态调度至少一个数据段进行排序具体可以包括:
调度一个第一类数据段;
将当前调度的第一类数据段分为多个数据块;其中,数据块的数量与当前调度的第一类数据段对应的线程数匹配;
根据当前调度的第一类数据段对应的排序算法多线程并行处理多个数据块以对当前调度的第一类数据段进行排序。
例如,当前可用的线程数有M个,将当前调度的第一类数据段分为M个数据块。可选的,M个数据块的数据量相同或基本相同。然后根据当前调度的第一类数据段对应的排序算法,这M个线程并行处理M个数据块以分别对M个数据块同时进行排序,然后采用多路归并的方法将排序后的M个数据块进行排序,从而得到排序后的第一类数据段。可选的,本实施例可以采用PSRS(Parallel Sorting by Regular Sampling,并行正则采样排序)或AA-sort等排序算法对第一类数据段进行排序。
在一种可选的实现方式中,根据各数据段对应的线程数、排序算法动态调度至少一个数据段进行排序具体可以包括:
调度多个第二类数据段;
将当前调度的第二类数据段分别分为多个数据块,其中,数据块的数量与对应的当前调度的第二类数据段的线程数匹配;
根据当前调度的多个第二类数据段分别对应的排序算法多线程并行处理各所述数据块,以对当前调度的多个所述第二类数据段分别进行排序。
例如,当前可用的线程数有M个,则可调度多个第二类数据段,使得这些第二类数据段对应的总线程数为M个。假设调度3个第二类数据段,其中,第1个第二类数据段对应的线程数为m1个,第2个第二类数据段对应的线程数为m2个,第3个第二类数据段对应的线程数为m3个。其中,m1+m2+m3=M。将第1个第二类数据段分为m1个数据块,将第2个第二类数据段分为m2个数据块,将第3个第二类数据段分为m3个数据块。然后根据当前调度的第二类数据段分别对应的排序算法,这M个线程并行处理M个数据块以分别对M个数据块同时进行排序,然后采用多路归并的方法将排序后的M个数据块分别进行排序,从而得到排序后的多个第二类数据段。可选的,本实施例可以采用parallel bitonic sort、sample sort或quicksort等排序算法对第二类数据段进行排序。
在一种可选的实现方式中,根据各数据段对应的线程数、排序算法动态调度至少一个数据段进行排序具体可以包括:
调度多个第三类数据段;
根据当前调度的多个第三类数据段分别对应的排序算法多线程并行处理各所述第三类数据段,以对当前调度的多个所述第三类数据段分别进行排序;其中,所述第三类数据段对应的线程数为1个。第三类数据段的数据量较小,因此,可以每个数据段采用一个线程进行排序即可。例如,M个线程可以对M个第三类数据段同时进行排序,以输出排序后的M个第三类数据段。可选的,本实施例可以采用selection sort、bubble sort或count sort等排序算法对第三类数据段进行排序。
在一种可选的实现方式中,根据各数据段对应的线程数、排序算法动态调度至少一个数据段进行排序具体可以包括:
调度至少一个第二类数据段和至少一个第三类数据段;
将当前调度的至少一个所述第二类数据段分别分为多个数据块,其中,数据块的数量与对应的当前调度的所述第二类数据段的线程数匹配;
根据当前调度的至少一个第二类数据段和至少一个第三类数据段分别对应的排序算法多线程并行处理各所述数据块和所述第三类数据段,以对当前调度的第二类数据段和第三类数据段分别进行排序。
例如,当前可用的线程数有M个,则可调度至少一个第二类数据段和至少一个第三类数据段,使得这些第二类数据段和第三类数据段对应的总线程数为M个。假设调度3个第二类数据段和1个第三类数据段,其中,第1个第二类数据段对应的线程数为m1个,第2个第二类数据段对应的线程数为m2个,第3个第二类数据段对应的线程数为m3个。其中,m1+m2+m3+1=M。将第1个第二类数据段分为m1个数据块,将第2个第二类数据段分为m2个数据块,将第3个第二类数据段分为m3个数据块。然后根据当前调度的第二类数据段和第三类数据段分别对应的排序算法,这M个线程并行处理M-1个数据块和1个第三类数据段以分别对M-1个数据块和1个第三类数据段同时进行排序,然后采用多路归并的方法将排序后的M-1个数据块分别进行排序,从而得到排序后的多个第二类数据段。可选的,本实施例可以采用parallel bitonic sort、sample sort或quick sort等排序算法对第二类数据段进行排序,采用selection sort、bubble sort或count sort等排序算法对第三类数据段进行排序。应理解,能够实现上述功能的排序算法均可以应用在本实施例中。
本发明实施例基于多个数据段的数据类别和数据类型确定各数据段分别对应的线程数和排序算法,并根据各数据段对应的线程数、排序算法动态调度至少一个数据段进行多线程并行排序,由此,可以提高数据段的排序效率。
在一种可选的实现方式中,可以将原始数据中的多个数据段按每类数据段进行排序,例如,先依次调度第一类数据段进行排序,然后依次调度第二类数据段进行排序,再依次调度第三类数据段进行排序。应理解,本实施例并不对不同类别数据段的排序顺序进行限制,例如也可以先依次对第二类数据段进行排序等。在对第二类数据段进行排序时,根据对各数据段对应的线程数,将相应的线程分配给当前调度的一批第二类数据段b(x)、b(x+1)、…、b(x+n)执行排序。其中,x为当前调度的批次中第一个第二类数据段的编号,(n+1)为当前调度的批次并行执行的第二类数据段的数量。容易理解,在对第二类数据段进行排序时,各调度批次的第二类数据段的数量不一定相同。由此,可以进一步提高线程利用率和排序效率。
在一种可选的实现方式中,本实施例采用顺序调度数据的多个数据段以不改变段间位置。
图3是本发明实施例的另一种数据排序方法的流程图。本实施例以当前可用的线程数为M个为例进行说明。如图3所示,本实施例的数据排序方法包括以下步骤:
步骤S410,调度一个数据段。在本实施例中,按照待排序的原始数据中的数据段排列顺序依次进行调度。
步骤S420,判断当前调度的数据段是否为第一类数据段,若是,执行步骤S430,若不是,执行步骤S440。
步骤S430,将当前调度的数据段分为M个数据块。然后执行步骤S470。
步骤S440,确定当前调度的数据段对应的线程数。
步骤S450,判断当前调度的所有数据段的总线程数是否满足预定条件。可选的,预定条件具体为,当前调度的所有数据段的总线程数不超过M个,且若再调度下一个数据段后,总线程数超过M个。在当前调度的所有数据段的总线程数不满足预定条件时,执行步骤410。在当前调度的所有数据段的总线程数满足预定条件时,可选的,先判断当前调度的所有数据段是否均为第三类数据段,若是,则执行步骤S470,若不是,执行步骤S460。
步骤S460,将当前调度的所有数据段中的第二类数据段分为多个数据块。其中,数据块的数量分别与对应的第二类数据段对应的线程数相同。
步骤S470,根据当前调度的数据段对应的排序算法多线程并行处理多个数据块、或多个第三类数据段、或多个数据块和至少一个第三类数据段,从而获取排序后的数据。
本发明实施例基于多个数据段的数据类别和数据类型确定各数据段分别对应的线程数和排序算法,并根据各数据段对应的线程数、排序算法动态调度至少一个数据段进行多线程并行排序,其中,用顺序调度数据的多个数据段以不改变段间位置,可以进一步提高数据段的排序效率。
图4-图7是本发明实施例的数据排序过程的示意图。本实施例以当前可用的线程为9个为例进行说明,应理解,本实施例并不对此进行限制。
图4为当前调度的数据段为第一类数据段的数据排序过程的示意图。如图4所示,将当前调度的第一类数据段A1分为数据块a1-a9,分别给数据块a1-a9各分配一个线程同时执行第一类数据段A1对应的排序算法,获取排序后的数据块a1'-a9',然后对排序后的数据块a1'-a9'执行多路归并的方法进行排序以将排序后的数据块a1'-a9'排序整合,从而获得排序后的数据段A1'。应理解,能够实现上述功能的并行排序算法均可以应用于本实施例中。
图5为当前调度的数据段为多个第二类数据段的数据排序过程的示意图。由于当前可用的总线程数为9个,因此,当前调度批次中的第二类数据段对应的总线程数不超过9个。如图5所示,根据第二类数据段B1-B3分别对应的线程数将第二类数据段B1-B3分别分为多个数据块。本实施例以第二类数据段B1对应3个线程数、第二类数据段B2对应4个线程数、第二类数据段B3对应2个线程数为例进行说明。其中,将第二类数据段B1分为3个数据块b1-b3,将第二类数据段B2分为4个数据块b4-b7,将第二类数据段B3分为2个数据块b8-b9。之后分别给数据块b1-b9各分配一个线程同时执行对应的排序算法,获取排序后的数据块b1'-b9'。其中,数据块b1-b3对应的线程执行第二类数据段B1对应的排序算法,数据块b4-b7对应的线程执行第二类数据段B2对应的排序算法,数据块b8-b9对应的线程执行第二类数据段B3对应的排序算法。最后对排序后的数据块b1'-b3'、b4'-b7'、b8'-a9'分别执行多路归并进行排序以将排序后的数据块b1'-b3'、b4'-b7'、b8'-a9'排序整合,从而获得排序后的数据段B1'、数据段B2'和数据段B3'。应理解,能够实现上述功能的并行排序算法均可以应用于本实施例中。
图6为当前调度的数据段为多个第三类数据段的数据排序过程的示意图。由于当前可用的总线程数为9个,因此,当前调度批次中的第三类数据段最多可以为9个。如图6所示,分别给第三类数据段C1-C9各分配一个线程同时执行对应的排序算法,以获取排序后的数据段C1'-C9'。其中,第三类数据段C1-C9对应的线程分别执行第三类数据段C1-C9对应的排序算法。
图7为当前调度的数据段为至少一个第二类数据段和至少一个第三类数据段的数据排序过程的示意图。由于当前可用的总线程数为9个,因此,当前调度批次中的第二类数据段和第三类数据段对应的总线程数不超过9个。如图7所示,根据第二类数据段B1-B3分别对应的线程数将第二类数据段B1-B3分别分为多个数据块。本实施例以三个第二类数据段和一个第三类数据段为例进行说明。其中,第二类数据段B1对应3个线程数、第二类数据段B2对应3个线程数、第二类数据段B3对应2个线程数。将第二类数据段B1分为3个数据块b1-b3,将第二类数据段B2分为3个数据块b4-b6,将第二类数据段B3分为2个数据块b7-b8。之后分别给数据块b1-b8以及第三类数据段C1各分配一个线程同时执行对应的排序算法,获取排序后的数据块b1'-b8'以及数据段C1'。其中,数据块b1-b3对应的线程执行第二类数据段B1对应的排序算法,数据块b4-b6对应的线程执行第二类数据段B2对应的排序算法,数据块b7-b8对应的线程执行第二类数据段B3对应的排序算法,第三类数据段C1对应的线程执行第三类数据段C2对应的排序算法。最后对排序后的数据块b1'-b3'、b4'-b6'、b7'-b8'分别执行多路归并进行排序以将排序后的数据块b1'-b3'、b4'-b6'、b7'-b8'排序整合,从而获得排序后的数据段B1'、数据段B2'和数据段B3'。应理解,能够实现上述功能的并行排序算法均可以应用于本实施例中。
本发明实施例基于多个数据段的数据类别和数据类型确定各数据段分别对应的线程数和排序算法,并根据各数据段对应的线程数、排序算法动态调度至少一个数据段进行多线程并行排序,由此,可以提高数据段的排序效率。
图8是本发明实施例的数据排序装置的示意图。如图8所示,本实施例的数据排序装置8包括数据统计单元81、分配单元82和调度执行单元83。其中,数据统计单元81被配置为确定多个所述数据段的数据段类别和数据类型,并将统计结果传输给分配单元82。分配单元82被配置为根据所述数据段的数据段类别确定所述数据段对应的线程数,并根据所述数据段的数据类型确定所述数据段对应的排序算法,并将各数据段的分配结果传输给调度执行单元83。调度执行单元83被配置为根据各数据段对应的线程数、排序算法动态调度至少一个数据段进行多线程并行排序。
在一种可选的实现方式中,数据排序装置8还包括资源管理单元84和算法库85。调度执行单元83包括动态调度子单元831和执行子单元832。其中,算法库85为维护了各类并行排序算法(例如PSRS等算法)的可执行文件。资源管理单元84实时监测执行子单元832对线程、内存等计算资源的使用情况,并将检测结果传输给动态调度子单元831。动态调度子单元831根据分配单元82给各数据段分配的计算资源数量(线程等)以及资源管理单元84传入的监测情况,动态调度数据段(例如第一类数据段、或多个第二类数据段等)进入执行子单元832,同时给当前调度的数据段分配响应的计算资源用以实现排序。执行子单元832根据分配单元82传入的排序算法从算法库中获取对应的可执行文件,并根据动态调度子单元831调度的数据段和计算资源对被分配到计算资源的至少一个数据段并行执行对应的排序算法,以实现各数据段的排序。
本发明实施例基于多个数据段的数据类别和数据类型确定各数据段分别对应的线程数和排序算法,并根据各数据段对应的线程数、排序算法动态调度至少一个数据段进行多线程并行排序,由此,可以提高数据段的排序效率。
图9是本发明实施例的电子设备的示意图。该电子设备9:至少包括一个处理器91;以及,与至少一个处理器91通信连接的存储器92;以及,与扫描装置通信连接的通信组件93,通信组件93在处理器91的控制下接收和发送数据;其中,存储器92存储有可被至少一个处理器91执行的指令,指令被至少一个处理器91执行以实现一下步骤:
确定多个所述数据段的数据段类别和数据类型;
根据所述数据段的数据段类别确定所述数据段对应的线程数;
根据所述数据段的数据类型确定所述数据段对应的排序算法;
根据各数据段对应的线程数、排序算法动态调度至少一个数据段进行多线程并行排序。
本发明实施例基于多个数据段的数据类别和数据类型确定各数据段分别对应的线程数和排序算法,并根据各数据段对应的线程数、排序算法动态调度至少一个数据段进行多线程并行排序,其中,用顺序调度数据的多个数据段以不改变段间位置,可以进一步提高数据段的排序效率。
具体地,该电子设备包括:一个或多个处理器91以及存储器92。在一种可选的实现方式中,处理器91为GPU处理器,GPU处理器用于并行执行至少一个数据段的数据排序。处理器91、存储器92可以通过总线或者其他方式连接,图9中以通过总线连接为例。存储器92作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。处理器91通过运行存储在存储器92中的非易失性软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现本发明实施例的数据排序方法。
存储器92可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储选项列表等。此外,存储器92可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施方式中,存储器92可选包括相对于处理器92远程设置的存储器,这些远程存储器可以通过网络连接至外接设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
一个或者多个模块存储在存储器92中,当一个或者多个模块被一个或者多个处理器91执行时,执行上述任意方法实施方式中的数据排序方法。
上述产品可执行本发明实施例所提供的方法,具备执行方法相应的功能模块和有益效果,未在本实施方式中详尽描述的技术细节,可参见本发明实施方式所提供的方法。
本发明的另一个实施例涉及一种非易失性存储介质,用于存储计算机可读程序,所述计算机可读程序用于供计算机执行上述部分或全部的方法实施例。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种数据排序方法,所述数据包括多个数据段,其特征在于,所述方法包括:
确定多个所述数据段的数据段类别和数据类型;
根据所述数据段的数据段类别确定所述数据段对应的线程数;
根据所述数据段的数据类型确定所述数据段对应的排序算法;
根据各数据段对应的线程数、排序算法动态调度至少一个数据段进行多线程并行排序。
2.根据权利要求1所述的方法,其特征在于,确定多个所述数据段的数据段类别包括:
响应于所述数据段的数据量大于等于第一阈值,确定所述数据段为第一类数据段;
响应于所述数据段的数据量大于等于第二阈值且小于第一阈值,确定所述数据段为第二类数据段;
响应于所述数据段的数据量小于第二阈值,确定所述数据段为第三类数据段。
3.根据权利要求2所述的方法,其特征在于,根据各数据段对应的线程数、排序算法动态调度至少一个数据段进行排序包括:
调度一个第一类数据段;
将当前调度的所述第一类数据段分为多个数据块,所述数据块的数量与当前调度的所述第一类数据段对应的线程数匹配;
根据当前调度的所述第一类数据段对应的排序算法多线程并行处理所述多个数据块以对当前调度的所述数据段进行排序。
4.根据权利要求2所述的方法,其特征在于,根据各数据段对应的线程数、排序算法动态调度至少一个数据段进行排序包括:
调度多个第二类数据段;
将当前调度的所述第二类数据段分别分为多个数据块,所述数据块的数量与对应的当前调度的所述第二类数据段的线程数匹配;
根据当前调度的多个所述第二类数据段分别对应的排序算法多线程并行处理各所述数据块,以对当前调度的多个所述第二类数据段分别进行排序。
5.根据权利要求2所述的方法,其特征在于,根据各数据段对应的线程数、排序算法动态调度至少一个数据段进行排序包括:
调度多个第三类数据段;
根据当前调度的多个所述第三类数据段分别对应的排序算法多线程并行处理各所述第三类数据段,以对当前调度的多个所述第三类数据段分别进行排序;
其中,每个所述第三类数据段对应的线程数为一个。
6.根据权利要求3所述的方法,其特征在于,根据各数据段对应的线程数、排序算法动态调度至少一个数据段进行排序包括:
调度至少一个第二类数据段和至少一个第三类数据段;
将当前调度的至少一个所述第二类数据段分别分为多个数据块,所述数据块的数量与对应的当前调度的所述第二类数据段的线程数匹配;
根据当前调度的至少一个第二类数据段和至少一个第三类数据段分别对应的排序算法多线程并行处理各所述数据块和所述第三类数据段,以对当前调度的第二类数据段和第三类数据段分别进行排序。
7.根据权利要求4-6中任一项所述的方法,其特征在于,顺序调度所述数据的多个数据段以不改变段间位置。
8.一种电子设备,包括存储器和处理器,其中,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行用以实现如权利要求1-7中任一项所述的方法。
9.根据权利要求8所述的电子设备,其特征在于,所述处理器为GPU处理器。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行以实现如权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910662502.3A CN110413849A (zh) | 2019-07-22 | 2019-07-22 | 一种数据排序方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910662502.3A CN110413849A (zh) | 2019-07-22 | 2019-07-22 | 一种数据排序方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110413849A true CN110413849A (zh) | 2019-11-05 |
Family
ID=68362407
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910662502.3A Pending CN110413849A (zh) | 2019-07-22 | 2019-07-22 | 一种数据排序方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110413849A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112861145A (zh) * | 2021-01-06 | 2021-05-28 | 华控清交信息科技(北京)有限公司 | 一种数据处理方法、装置和用于数据处理的装置 |
CN114546943A (zh) * | 2022-02-21 | 2022-05-27 | 重庆科创职业学院 | 基于多进程调用的数据库文件排序优化方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110264993A1 (en) * | 2010-04-23 | 2011-10-27 | Microsoft Corporation | Multi-Threaded Sort of Data Items in Spreadsheet Tables |
CN104869398A (zh) * | 2015-05-21 | 2015-08-26 | 大连理工大学 | 一种基于cpu+gpu异构平台实现hevc中的cabac的并行方法 |
US20170153963A1 (en) * | 2015-11-26 | 2017-06-01 | Tata Consultancy Services Limited | Method and System for Pre-Deployment Performance Estimation of Input-Output Intensive Workloads |
CN107240047A (zh) * | 2017-05-05 | 2017-10-10 | 广州盈可视电子科技有限公司 | 一种教学视频的学分评估方法和装置 |
CN108228634A (zh) * | 2016-12-15 | 2018-06-29 | 杭州华为数字技术有限公司 | 一种数据处理方法及装置 |
CN109408490A (zh) * | 2018-09-29 | 2019-03-01 | 武汉斗鱼网络科技有限公司 | 一种数组规整方法、装置、终端及可读介质 |
-
2019
- 2019-07-22 CN CN201910662502.3A patent/CN110413849A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110264993A1 (en) * | 2010-04-23 | 2011-10-27 | Microsoft Corporation | Multi-Threaded Sort of Data Items in Spreadsheet Tables |
CN104869398A (zh) * | 2015-05-21 | 2015-08-26 | 大连理工大学 | 一种基于cpu+gpu异构平台实现hevc中的cabac的并行方法 |
US20170153963A1 (en) * | 2015-11-26 | 2017-06-01 | Tata Consultancy Services Limited | Method and System for Pre-Deployment Performance Estimation of Input-Output Intensive Workloads |
CN108228634A (zh) * | 2016-12-15 | 2018-06-29 | 杭州华为数字技术有限公司 | 一种数据处理方法及装置 |
CN107240047A (zh) * | 2017-05-05 | 2017-10-10 | 广州盈可视电子科技有限公司 | 一种教学视频的学分评估方法和装置 |
CN109408490A (zh) * | 2018-09-29 | 2019-03-01 | 武汉斗鱼网络科技有限公司 | 一种数组规整方法、装置、终端及可读介质 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112861145A (zh) * | 2021-01-06 | 2021-05-28 | 华控清交信息科技(北京)有限公司 | 一种数据处理方法、装置和用于数据处理的装置 |
CN112861145B (zh) * | 2021-01-06 | 2023-12-12 | 华控清交信息科技(北京)有限公司 | 一种数据处理方法、装置和用于数据处理的装置 |
CN114546943A (zh) * | 2022-02-21 | 2022-05-27 | 重庆科创职业学院 | 基于多进程调用的数据库文件排序优化方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8620932B2 (en) | Parallel sorting apparatus, method, and program | |
US9286123B2 (en) | Apparatus and method for managing stream processing tasks | |
US7930595B2 (en) | Method and apparatus for analyzing error conditions in a massively parallel computer system by identifying anomalous nodes within a communicator set | |
US8954497B2 (en) | Parallel distributed processing method and computer system | |
CN107908536B (zh) | Cpu-gpu异构环境中对gpu应用的性能评估方法及系统 | |
CN106909942B (zh) | 一种面向高维度大数据的子空间聚类方法及装置 | |
CN110058940B (zh) | 一种多线程环境下的数据处理方法及装置 | |
US20140059000A1 (en) | Computer system and parallel distributed processing method | |
CN110413849A (zh) | 一种数据排序方法及装置 | |
CN112085644B (zh) | 多列数据排序方法、装置、可读存储介质和电子设备 | |
CN111104210A (zh) | 一种任务处理方法、装置及计算机系统 | |
CN108733790A (zh) | 数据排序方法、装置、服务器和存储介质 | |
CN116560860B (zh) | 一种基于机器学习的资源优先级的实时优化调整方法 | |
US20070288189A1 (en) | Test method, test program, and test device of data processing system | |
CN113010286A (zh) | 并行任务调度方法、装置、计算机设备和存储介质 | |
CN110597627A (zh) | 基于虚拟fpga的数据库运算加速装置及加速方法 | |
US7673182B2 (en) | Method and apparatus for obtaining stack traceback data for multiple computing nodes of a massively parallel computer system | |
CN104750556A (zh) | 一种hpc集群作业调度方法及装置 | |
US9922109B1 (en) | Adaptive column set composition | |
CN108920269B (zh) | 容器的i/o传输任务的调度方法和装置 | |
CN110837412B (zh) | 一种作业就绪状态判断方法、装置、设备和存储介质 | |
CN112948229A (zh) | 调度集群的性能确定方法、装置、计算机设备及存储介质 | |
US20110055492A1 (en) | Multiple processing core data sorting | |
CN107506152B (zh) | 一种提高pm访存请求并行度的解析装置与方法 | |
US9075654B1 (en) | Method and apparatus for constraint programming of resources |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20191105 |