CN103514042B - 一种双调归并排序调优方法及装置 - Google Patents

一种双调归并排序调优方法及装置 Download PDF

Info

Publication number
CN103514042B
CN103514042B CN201210204459.4A CN201210204459A CN103514042B CN 103514042 B CN103514042 B CN 103514042B CN 201210204459 A CN201210204459 A CN 201210204459A CN 103514042 B CN103514042 B CN 103514042B
Authority
CN
China
Prior art keywords
data
gpu
cpu
sorting
tuning
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
Application number
CN201210204459.4A
Other languages
English (en)
Other versions
CN103514042A (zh
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 North Dragon Super Cloud Computing Co Ltd
Computer Network Information Center of CAS
Original Assignee
Beijing North Dragon Super Cloud Computing Co ltd
Computer Network Information Center of CAS
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 North Dragon Super Cloud Computing Co ltd, Computer Network Information Center of CAS filed Critical Beijing North Dragon Super Cloud Computing Co ltd
Priority to CN201210204459.4A priority Critical patent/CN103514042B/zh
Publication of CN103514042A publication Critical patent/CN103514042A/zh
Application granted granted Critical
Publication of CN103514042B publication Critical patent/CN103514042B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Multi Processors (AREA)
  • Advance Control (AREA)

Abstract

本发明涉及一种双调归并排序调优方法及装置。根据GPU和CPU的运算能力,分配待排序数据集;GPU和CPU对各自分配的待排序数据集进行排序;其中,排序过程中,当GPU和CPU中的数据有无关性时,同时使用CPU和GPU分别排序,在两部分数据有相关性时,将数据汇集到GPU和CPU中的一个设备上排序。由此,可以更好的重叠计算、缩短双调归并排序的执行时间,提高执行效率。

Description

一种双调归并排序调优方法及装置
本发明涉及排序调优方法,尤其是一种双调归并排序调优方法及装置。
背景技术
双调归并排序算法能够直接在待排序列的存储空间进行数据交换,有效节省了内存开销。因此,双调归并排序网络算法具有实际应用价值。同时双调归并排序网络算法中包含的双调归并算法可以用于归并多个有序序列,具有实际应用价值。
目前此类算法的实现或者是单独利用CPU进行排序或者是单独利用GPU进行排序,并未将待排数据集分割成两部分分别交由CPU和GPU共同排序,因此,存在执行效率低等问题。
发明内容
为解决上述技术问题,本发明提出了一种双调归并排序调优方法及装置,可以更好的重叠计算、缩短双调归并排序的执行时间,提高执行效率。
在第一方面,本发明实施例提供了一种双调归并排序调优方法,所述方法包括:
根据GPU和CPU的运算能力,分配待排序数据集。
GPU和CPU对各自分配的待排序数据集进行排序。其中,排序过程中,当GPU和CPU中的数据有无关性时,同时使用CPU和GPU分别排序,在两部分数据有相关性时,将数据汇集到GPU和CPU中的一个设备上排序。
在另一方面,本发明实施例提供了一种双调归并排序调优装置,所述装置包括:
分配单元,用于根据GPU和CPU的运算能力,分配待排序数据集。
协调单元,用于GPU和CPU对各自分配的待排序数据集进行双调归并排序。其中,排序过程中,当GPU和CPU中的数据有无关性时,同时使用CPU和GPU分别排序,在两部分数据有相关性时,将数据汇集到GPU和CPU中的一个设备上排序。
由此,可以更好的重叠计算、缩短双调归并排序的执行时间,提高执行效率。
附图说明
图1是本发明实施例提供的CPU和GPU混合架构示意图;
图2是本发明实施例提供的双调归并排序调优方法流程图;
图3是本发明实施例提供的双调归并排序调优装置示意图;
图4是本发明实施例提供的双调归并排序的负载分配示意图;
图5本发明实施例提供的双调归并排序的不同负载分配方法的优劣比较图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明具体实施例作进一步的详细描述。
混合构架在一台计算机系统中既有必须的CPU部件,又有用于特殊目的的计算加速部件,目前主流的计算加速部件是GPU,图1是本发明实施例提供的CPU和GPU混合架构示意图,在混合架构CPU(Central Processing Unit)和GPU(Graphic Processing Unit)下同时使用CPU和GPU处理数据,有效提高双调归并排序效率,实现本发明实施例提供的方法的程序存于内存中,排序时,在CPU中排序的数据存在内存中,在GPU中排序的数据存于GPU的全局存储器global memory中,当所有数据汇集到CPU上排序时,所有数据均存于内存中,当所有数据汇集到GPU上排序时,所有数据均存于GPU的全局存储器中。
需要说明的是,本发明实施例中提供的方法及装置适用于一个或多个CPU或/和一个或多个GPU。
需要说明的是,本发明实施例中涉及到的排序是指双调归并排序,但是本技术领域人员也可以用本发明提供的方法思路解决其他排序方法的调优问题。
由于排序过程中,涉及到几个重要概念,这里首先做下解释:
无关性:是指双调归并排序时,当CPU和GPU中的数据不需要相互交换数据即能完成所属数据的比较交换操作时,则CPU和GPU中的数据具有无关性。
相关性:是指双调归并排序时,当CPU和GPU为了完成所属数据的比较交换操作需要相互交换数据时,则认为CPU和GPU中的数据具有相关性。
步:是指所有的比较器执行一次比较交换操作,称为一步,步的编号从1开始,根据双调归并排序的特点可知,若待排数据个数为2n,n为正整数,则经过(n+1)*n/2步可完成排序。
归并子集:双调归并排序是将2n个元素归并为个2n-1个2元素有序序列,2n-2个4元素有序序列……最终形成2n-n个2n元素有序序列,称形成2n-p个2p元素有序序列的一系列步组成一个归并子集,称为第p个归并子集,由于双调归并排序算法的特性为:一个归并子集中的每一步一定是将原先的某个数据集中的元素比较交换后对半剖分为2个不相关的数据集。因此,根据双调归并排序算法的特性可以推出,第p个归并子集(概念参加上面实施例)中包含的步的编号:第p个归并子集要求形成2n-p个2p元素有序序列,则是对2n-p+1个有序序列两两进行归并,以此倒推,则起始具有2n-p+1-1个数据无关性子集,经历p步剖分后形成2n个数据无关性子集,即第p个归并子集包含p步。经推导可知第p个归并子集包含第(p-1)*p/2+1步到第(p-1)*p/2+p步。从中可以看出,每个归并子集中包含的排序步数与归并子集的编号相同,且归并子集的编号从1开始,若待排数据个数为2n,n为正整数,则共有n个归并子集。
本发明实施例中,根据GPU和CPU的运算能力,分配待排序数据集;GPU和CPU对各自分配的待排序数据集进行排序;其中,排序过程中,当GPU和CPU中的数据有无关性时,同时使用CPU和GPU分别排序,在两部分数据有相关性时,将数据汇集到GPU和CPU中的一个设备上排序。由此,可以更好的重叠计算和数据操作延时、缩短双调归并排序的执行时间,提高执行效率。
图2是本发明实施例提供的双调归并排序调优方法流程图,图2所示,该方法具体包括:
步骤201,调优数据集生成。
具体地,在原有数据集的基础上采用采样的方式生成待排序数据集,可以节省调优时间,且生成的待排序数据个数为2的整数次幂,以便后面的负载调优。
步骤202,根据GPU和CPU的运算能力,分配待排序数据集。
具体地,若待排数据个数为2n,n为正整数,则根据不等式1/2N+1<k/(k+1)<1/2N计算出正整数N,可以将k/(1+k)*2n个数据分配给低计算能力设备,或将1/2N+1*2n个数据分配给低计算能力设备,或将1/2N*2n个数据分配给低计算能力设备,其中k为CPU和GPU运算能力的比值,其余数据分配给高计算能力设备。三种数据分配方式的优劣将在另一实施例中详细分析。
需要说明的是,本技术领域人员也可以根据实际需要,根据其他指标进行数据分配。
步骤203,GPU和CPU对各自分配的待排序数据集进行双调归并排序。其中,排序过程中,当GPU和CPU中的数据有无关性时,同时使用CPU和GPU分别排序,在两部分数据有相关性时,将数据汇集到GPU和CPU中的一个设备上排序。
具体地,根据双调归并排序算法的特性,可以计算得出:第1步至第(n-N+1)*(n-N)/2步,第(q+1)*q/2-n+N+1步至第(q+1)*q/2步,CPU和GPU中的数据有无关性,可以将数据分配到CPU和GPU上分别排序,其他步骤中,CPU和GPU中的数据有相关性,则可以将数据汇集到一个设备上排序,优选地,可以将数据汇集到一个计算能力大的设备上排序。其中,N根据不等式1/2N+1≤k/(k+1)≤1/2N计算得出,且N为正整数,k为CPU和GPU运算能力的比值。
需要说明的是CPU和GPU中的数据有无关性的确定方法可以用于确定GPU中工作组分配得到的数据间是否有相关性。
在一个例子中,当在CPU中排序时,可以利用线程数调优获得的最优线程数进行排序。所述线程数调优具体为,当线程数大于CPU物理处理单元数时,采用线程自动调优,即根据不同线程在CPU中的运行时间,选取运行时间较短的那些线程,线程数调优范围为[1,Nt],其中Nt为最大物理处理单元数;当线程数小于CPU物理处理单元数时,采用线程亲和调优,即从线程在物理处理单元上映射的所有组合中,选取执行时间最短的组合,调优范围包括线程在物理处理单元上映射的所有组合。
当在GPU中排序时,可以采用向量排序,也可以采用标量排序。当GPU标量运算能力好时选择标量排序,当GPU向量运算能力好时选择向量排序。例如Nvidia GPU的标量运算能够很好的重叠计算和数据操作延时,当数据集足够大时算术单元利用率高,同时不产生Bank冲突。ATI GPU中算术单元数量多,标量运算无法充分利用其资源,因此,可以使用opencl或类似语言中特定的API获得GPU设备的生产厂商名,针对Nvidia的产品选择标量排序,针对AMD的产品选择向量排序。
在一个例子中,在GPU中采用向量排序,并且利用向量长度调优获得的最优向量长度或/和工作组内线程数调优获得的工作组最优线程数进行排序。
需要说明的是,在GPU中采用向量排序时,也可以根据实际情况决定是否利用向量长度调优获得的最优向量长度或/和工作组内线程数调优获得的工作组最优线程数进行排序。
在另一个例子中,在GPU中利用标量排序,并且利用工作组内线程数调优获得的工作组最优线程数进行排序。
需要说明的是,在GPU中利用标量排序时,也可以根据实际情况决定是否利用工作组内线程数调优获得的工作组最优线程数进行排序。
所述向量长度调优具体为,将一个大小为M的数据集分为M/K份,在GPU上排序生成M/K个长度为K的子序列,使用分析工具获得排序过程的“算术单元利用率”和“Bank冲突造成的延时”,并计算“算术单元利用率”与“Bank冲突造成的延时”的比值,取比值最大时对应的向量长度N作为最优值,N的调优范围为{2N|1≤N≤Ni},Ni为向量指令集支持的最大向量长度以2为底的向下取整对数,K为一个工作组内通过同步函数能够同步的序列的长度。
所述工作组内线程数调优具体为,由于每个工作组内的线程数影响GPU同步次数,线程数越大则同步次数越少,同步次数越少越好,但是线程将共享工作组的资源,一般情况下一个或两个工作组占用计算单元的资源,计算单元内的寄存器、私有内存和局部内存资源是有限的,这些资源和计算单元紧耦合,延时低、速度快,当使用了过量的寄存器或局部内存时,将利用全局内存作为寄存器或局部内存使用,对于GPU而言,全局内存一般就是显存,其速度和延时要远远劣于真正的寄存器和局部内存,这一点限制了线程数不能过大,因此,根据工作组的寄存器资源量j和单个线程消耗的寄存器资源量i确定一个工作组内的线程数N,N=[log2(j/i)],线程数N的调优范围为{2N|1≤N≤Nt},Nt为单个工作组能够容纳的最大线程数以2为底的向下取整对数。
需要说明的是,CPU中排序时,若CPU上运行的排序代码是可以在GPU设备上运行的opencl等语言的代码,所有的CPU视为一个设备,可以采用GPU中排序的优化方法来优化CPU中排序。
本发明实施例描述的为在混合架构CPU和GPU下双调归并排序算法调优方法的过程,从中可以看出,根据CPU与GPU的运算能力分配负载,并在排序过程中,数据不相关时,同时使用CPU和GPU分别排序,数据相关时,将数据汇集到一个计算能力大的设备上排序,可以充分利用CPU和GPU资源,可以重叠计算,提高排序速度;另外,对CPU的线程数调优,可以缩短排序时间;对GPU的向量长度调优可以很好的重叠计算和数据操作延时;对GPU的工作组内线程数调优可以充分利用工作组资源而不影响运行速度。
上述实施例描述的为在混合架构CPU和GPU下双调归并排序算法调优方法的流程,下述实施例描述的在混合架构CPU和GPU下双调归并排序算法调优装置的工作过程,图3是本发明实施例提供的双调归并排序调优装置示意图,如图3所示,所述装置包括:
生成单元301,用于调优数据集生成。
具体地,在原有数据集的基础上采用采样的方式生成待排序数据集,可以节省调优时间,且生成的待排序数据个数为2的整数次幂,以便后面的负载调优。
分配单元302,用于根据GPU和CPU的运算能力,分配待排序数据集。
具体地,若待排数据个数为2n,n为正整数,则根据不等式1/2N+1≤k/(k+1)≤1/2N计算出正整数N,可以将k/(1+k)*2n个数据分配给低计算能力设备,或/和将1/2N+1*2n个数据分配给低计算能力设备,或/和将1/2N*2n个数据分配给低计算能力设备,其中k为CPU和GPU运算能力的比值,其余数据分配给高计算能力设备。三种数据分配方式的优劣将在另一实施例中详细分析。
需要说明的是,本技术领域人员也可以根据实际需要,根据其他指标进行数据分配。
协调单元303,用于GPU和CPU对各自分配的待排序数据集进行双调归并排序。其中,排序过程中,当GPU和CPU中的数据有无关性时,同时使用CPU和GPU分别排序,在两部分数据有相关性时,将数据汇集到GPU和CPU中的一个设备上排序。
具体地,根据双调归并排序算法的特性,可以计算得出:第1步至第(n-N+1)*(n-N)/2步,第(q+1)*q/2-n+N+1步至第(q+1)*q/2步,CPU和GPU中的数据有无关性,可以将数据分配到CPU和GPU上分别排序,其他步骤中,CPU和GPU中的数据有相关性,则将数据汇集到一个设备上排序将数据汇集到设备上排序,优选地,可以将数据汇集到一个计算能力大的设备上排序。其中,N根据不等式1/2N+1≤k/(k+1)≤1/2N计算得出,且N为正整数,k为CPU和GPU运算能力的比值。
需要说明的是CPU和GPU中的数据有无关性的确定方法可以用于确定GPU中工作组分配得到的数据间是否有相关性。
在一个例子中,当在CPU中排序时,可以利用线程数调优获得的最优线程数进行排序。所述线程数调优具体为,当线程数大于CPU物理处理单元数时,采用线程自动调优,即根据不同线程在CPU中的运行时间,选取运行时间较短的那些线程,线程数调优范围为[1,Nt],其中Nt为最大物理处理单元数;当线程数小于CPU物理处理单元数时,采用线程亲和调优,即从线程在物理处理单元上映射的所有组合中,选取执行时间最短的组合,调优范围包括线程在物理处理单元上映射的所有组合。
当在GPU中排序时,可以采用向量排序,也可以采用标量排序。当GPU标量运算能力好时选择标量排序,当GPU向量运算能力好时选择向量排序。例如Nvidia GPU的标量运算能够很好的重叠计算和数据操作延时,当数据集足够大时算术单元利用率高,同时不产生Bank冲突。ATI GPU中算术单元数量多,标量运算无法充分利用其资源,因此,可以使用opencl或类似语言中特定的API获得GPU设备的生产厂商名,针对Nvidia的产品选择标量排序,针对AMD的产品选择向量排序。
在一个例子中,在GPU中采用向量排序,并且利用向量长度调优获得的最优向量长度或/和工作组内线程数调优获得的工作组最优线程数进行排序。
需要说明的是,在GPU中采用向量排序时,也可以根据实际情况决定是否利用向量长度调优获得的最优向量长度或/和工作组内线程数调优获得的工作组最优线程数进行排序。
在另一个例子中,在GPU中利用标量排序,并且利用工作组内线程数调优获得的工作组最优线程数进行排序。
需要说明的是,在GPU中利用标量排序时,也可以根据实际情况决定是否利用工作组内线程数调优获得的工作组最优线程数进行排序。
所述向量长度调优具体为,将一个大小为M的数据集分为M/K份,在GPU上排序生成M/K个长度为K的子序列,使用分析工具获得排序过程的“算术单元利用率”和“Bank冲突造成的延时”,并计算“算术单元利用率”与“Bank冲突造成的延时”的比值,取比值最大时对应的向量长度N作为最优值,N的调优范围为{2N|1≤N≤Ni},Ni为向量指令集支持的最大向量长度以2为底的向下取整对数,K为一个工作组内通过同步函数能够同步的序列的长度。
所述工作组内线程数调优具体为,由于每个工作组内的线程数影响GPU同步次数,线程数越大则同步次数越少,同步次数越少越好,但是线程将共享工作组的资源,一般情况下一个或两个工作组占用计算单元的资源,计算单元内的寄存器、私有内存和局部内存资源是有限的,这些资源和计算单元紧耦合,延时低、速度快,当使用了过量的寄存器或局部内存时,将利用全局内存作为寄存器或局部内存使用,对于GPU而言,全局内存一般就是显存,其速度和延时要远远劣于真正的寄存器和局部内存,这一点限制了线程数不能过大,因此,根据工作组的寄存器资源量j和单个线程消耗的寄存器资源量i确定一个工作组内的线程数N,N=[log2(j/i)],线程数N的调优范围为{2N|1≤N≤Nt},Nt为单个工作组能够容纳的最大线程数以2为底的向下取整对数。
需要说明的是,CPU中排序时,若CPU上运行的排序代码是可以在GPU设备上运行的opencl等语言的代码,所有的CPU视为一个设备,可以采用GPU中排序的优化方法来优化CPU中排序。
本发明实施例描述的为在混合架构CPU和GPU下双调归并排序算法调优装置的工作过程,从中可以看出,根据CPU与GPU的运算能力分配负载,并在排序过程中,数据不相关时,同时使用CPU和GPU分别排序,数据相关时,将数据汇集到一个计算能力大的设备上排序,可以充分利用CPU和GPU资源,可以重叠计算,提高排序速度;另外,对CPU的线程数调优,可以缩短排序时间;对GPU的向量长度调优可以很好的重叠计算和数据操作延时;对GPU的工作组内线程数调优可以充分利用工作组资源而不影响运行速度。
上述实施例描述的为在混合架构CPU和GPU下双调归并排序算法调优装置的工作过程,下述实施例描述的为负载分配方法,即待排序数据的分配方法,图4是本发明实施例提供的双调归并排序的负载分配示意图。
首先对图4中的元素做统一解释:本发明实施例中的所有附图,均可参照下述解释:以CPU和GPU运算能力的比值k为0.6、以待排数据个数为16,即为24个为例,也可知此时有4个归并子集;16条横线表示有16个待排序数据,带箭头的直线表示直线两个端点所在的直线处对应的数据进行数据交换,向上的箭头表示将大的数据排在前面,向下的箭头表示将大的数据排在后面;图4上方的数字1-10表示排序的步数(后面的图中不再标出),例如数字2表示此处对应的为排序过程中的第2步,点划线形成的矩形框表示,框中的数据在CPU中排序,实线形成的框表示,框中的数据在GPU中排序,点划线形成的框中有8个数据,且点划线框包括了第1-6步和第8-10步,则表示共将8个数据分配到CPU中排序,其他的8个数据在GPU中,且第1-6步和第8-10步,CPU和GPU同时排序,第7步,所有数据都在GPU中排序。
本发明实施例中的负载分配过程包括:负载分配及排序过程中数据无关性、相关性的确定,即为图4中虚线a(负载数量分配线)及点划线b1b2(数据无关性分隔线)的确定,排序数据数量不同,CPU和GPU运算能力的比值不同,数据无关性分隔线的条数和位置也不同。下面分别对负载数量分配线及数据无关性分隔线的确定做详细阐述。
对于负载数量分配线,CPU和GPU各自分配数据个数可由上述实施例中的公式1/2N*2n确定(也可以采用其他公式),即将1/2N*2n(此处为8)个数据分配给CPU,将其它2n-1/2N*2n(此处为8个)个数据分配给GPU。排序过程中,若CPU和GPU同时排序,则CPU和GPU中的数据个数是固定不变的(此处CPU和GPU都有8个数据)。根据上述过程可以确定负载个数分隔线a,如图4所示。
对于数据无关性分隔线,根据双调归并排序原理可计算出,对CPU和GPU各自分配数据后,若CPU和GPU分配得到的数据量均为偶数,第一步操作中CPU和GPU不需要交换数据,所以CPU和GPU分别对分配的数据进行排序,经过(n-N+1)*(n-N)/2(此处为6)步后,也就是第n-N个归并子集(p=n-N)的最后一步,此时CPU中的数据和GPU中的数据出现了相关性,则下一步将所有数据汇集到一个计算能力大的设备GPU上排序。本发明实施例中,GPU的运算能力比CPU运算能力好,本技术领域人员可根据实际情况而定。那么,在后面的排序过程中,什么时候数据会出现无关性,什么时候出现相关性,下面将详细阐述:以第q个归并子集为例,且n-N+1≤q≤n,倒数(相对)第1步执行前无关性序列含有的数据个数是2,倒数(相对)第S+1步执行前无关性序列含有的数据个数为2S+1,即倒数(相对)第S+1步执行后,无关性序列含有的数据个数为2S。设CPU中数据个数为2S,GPU中数据个数为2n-2S,因为每个序列中的数据个数为2S,因此这两部分数据不相关,可以将数据分割开来分别在CPU和GPU上排序,并不出现设备间的数据交换。换算成全局的步数编号就是:第(q+1)*q/2-S+1步到第(q+1)*q/2步。而由前面的负载分配可知,CPU中分配的数据个数为2n-N,GPU中分配的数据个数为2n-2n-N,则可得到S和N的转换关系S=n-N,则公式换算为:第(q+1)*q/2-n+N+1步到第(q+1)*q/2步可以将数据分割开来分别在CPU和GPU上排序,并不出现设备间的数据交换。将具体参数带入公式可得:第8-10步,数据不相关,则可将数据分割开来分别在CPU和GPU上排序。从而可以确定数据无关性分隔线b1b2,如图4所示。
在一个例子中,排序过程中,由于CPU和GPU间数据交换时开销较大,当在一段CPU和GPU上同时排序的步数较少时,可以将所有数据都汇集到计算能力大的处理器上排序,而不分开排序。
需要说明的时,确定负载数量分配线时,也可以采用上述实施例中的其它公式,当采用其它公式时,后面公式的推导过程即数据无关性分隔线的确定过程与上述过程相同,此处不复赘述。
上述实施例描述的为负载分配方法及排序过程中出现数据无关性对应的步数的确定过程,可以看出,通过将相关性数据操作分配到运算能力大的处理器上排序,将无关性数据操作分配到CPU和GPU上排序,可以重叠计算、提高排序速度。
上述实施例描述的为CPU和GPU混合架构的双调归并排序的负载分配过程,下述实施例描述的为按照不同系数分配负载的优劣比较。图5本发明实施例提供的双调归并排序的不同负载分配方法的优劣比较图。本实施例中的字母意义与前述实施例相同,在此不复赘述。如图5所示:
第1种情况中,将k/(1+k)*2n(此处为6)个数据分配给CPU,其它10个数据分配给GPU,通过第1个图可以看出,在整个排序过程中(共10步),CPU和GPU在第1、6、10步同时排序,其它步骤都是GPU独自排序。
在一个例子中,虽然第6步CPU和GPU可以同时排序,由于这两段同时排序的步骤少,可以简化为第3和第6步GPU独自排序。
计算CPU和GPU中分配数据个数与上述实施例方法一样,在此不复赘述。
第2种情况中,将1/2N+1*2n(此处为4)个数据分配给CPU,其它12个数据分配给GPU,在整个排序过程中(共10步),CPU和GPU在第1-3、5-6步和第9-10步同时排序,其它步骤都是GPU独自排序。
在一个例子中,虽然在第5-6步CPU和GPU可以同时排序,由于这一段同时排序的步骤少,简化为第5-6步GPU独自排序。
计算CPU和GPU中分配数据个数与上述实施例方法一样,在此不复赘述。
第3种情况中,将1/2N*2n(此处为8)个数据分配给CPU,其它8个数据分配给GPU,在整个排序过程中(共10步),CPU和GPU在第1-6步和第8-10步同时排序,其它步骤都是GPU独自排序。
从上述三种负载分配方法可以看出,第3种方法中CPU参与排序的步数最多,可以最充分利用CPU资源,提高排序速度。本技术领域技术人员可以根据实际需要选择用哪种方法分配负载,或者采用其它方法分配负载。
本发明实施例中,根据CPU和GPU运算能力的比值,对CPU和GPU进行负载分配,是CPU和GPU可以同时进行数据排序,从而可以重叠计算、提高排序速度。
显而易见,在不偏离本发明的真实精神和范围的前提下,在此描述的本发明可以有许多变化。因此,所有对于本领域技术人员来说显而易见的改变,都应包括在本权利要求书所涵盖的范围之内。本发明所要求保护的范围仅由所述的权利要求书进行限定。

Claims (8)

1.一种双调归并排序调优方法,其特征在于,所述方法包括:
生成待排序数据集;
根据GPU和CPU的运算能力的比值,将所述待排序数据集的一部分数据分配给CPU和GPU其中之一,其余数据分配给另一个;
GPU和CPU对各自分配的待排序数据集进行双调归并排序;其中,排序过程中,当GPU和CPU中的数据具有无关性时,同时使用CPU和GPU分别排序,在两部分数据具有相关性时,将数据汇集到GPU和CPU中的一个设备上排序;其中,
所述无关性是指,双调归并排序时,当CPU和GPU中的数据不需要相互交换数据即能完成所属数据的比较交换操作时,则CPU和GPU中的数据具有无关性;
所述相关性是指,双调归并排序时,当CPU和GPU为了完成所属数据的比较交换操作需要相互交换数据时,则CPU和GPU中的数据具有相关性。
2.如权利要求1所述的方法,其特征在于,CPU利用线程数调优获得的最优线程数进行排序。
3.如权利要求1所述的方法,其特征在于,GPU和CPU利用向量排序,并且利用向量长度调优获得的最优向量长度或/和工作组内线程数调优获得的工作组最优线程数进行排序。
4.如权利要求1所述的方法,其特征在于,GPU和CPU利用标量排序,并且利用工作组内线程数调优获得的工作组最优线程数进行排序。
5.一种双调归并排序调优装置,其特征在于,所述装置包括:
生成单元,用于生成待排序数据集;
分配单元,用于根据GPU和CPU的运算能力的比值,将所述待排序数据集的一部分数据分配给CPU和GPU其中之一,其余数据分配给另一个;
协调单元,用于GPU和CPU对各自分配的待排序数据集进行双调归并排序;其中,排序过程中,当GPU和CPU中的数据具有无关性时,同时使用CPU和GPU分别排序,在两部分数据具有相关性时,将数据汇集到GPU和CPU中的一个设备上排序;其中,
所述无关性是指,双调归并排序时,当CPU和GPU中的数据不需要相互交换数据即能完成所属数据的比较交换操作时,则CPU和GPU中的数据具有无关性;
所述相关性是指,双调归并排序时,CPU和GPU为了完成所属数据的比较交换操作需要相互交换数据,则CPU和GPU中的数据具有相关性。
6.如权利要求5所述的装置,其特征在于,CPU利用线程数调优获得的最优线程数进行排序。
7.如权利要求5所述的装置,其特征在于,GPU和CPU中采用向量排序,并且利用向量长度调优获得的最优向量长度或/和工作组内线程数调优获得的工作组最优线程数进行排序。
8.如权利要求5所述的装置,其特征在于,GPU和CPU中采用标量排序,并且利用工作组内线程数调优获得的工作组最优线程数进行排序。
CN201210204459.4A 2012-06-18 2012-06-18 一种双调归并排序调优方法及装置 Active CN103514042B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210204459.4A CN103514042B (zh) 2012-06-18 2012-06-18 一种双调归并排序调优方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210204459.4A CN103514042B (zh) 2012-06-18 2012-06-18 一种双调归并排序调优方法及装置

Publications (2)

Publication Number Publication Date
CN103514042A CN103514042A (zh) 2014-01-15
CN103514042B true CN103514042B (zh) 2018-01-09

Family

ID=49896812

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210204459.4A Active CN103514042B (zh) 2012-06-18 2012-06-18 一种双调归并排序调优方法及装置

Country Status (1)

Country Link
CN (1) CN103514042B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107102839A (zh) * 2017-04-13 2017-08-29 青岛蓝云信息技术有限公司 一种基于硬件排序MapReduce的数据处理方法
CN108958702B (zh) * 2017-05-27 2021-01-15 华为技术有限公司 一种排序网络、排序方法及排序装置
CN110515939B (zh) * 2019-07-03 2022-08-12 中兴飞流信息科技有限公司 一种基于gpu的多列数据排序方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101639769A (zh) * 2008-07-30 2010-02-03 国际商业机器公司 在多处理器系统上对数据集进行划分及排序的方法和装置
CN102214086A (zh) * 2011-06-20 2011-10-12 复旦大学 基于多核处理器的通用并行加速算法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7868891B2 (en) * 2004-09-16 2011-01-11 Nvidia Corporation Load balancing
CN102411658B (zh) * 2011-11-25 2013-05-15 中国人民解放军国防科学技术大学 一种基于cpu和gpu协作的分子动力学加速方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101639769A (zh) * 2008-07-30 2010-02-03 国际商业机器公司 在多处理器系统上对数据集进行划分及排序的方法和装置
CN102214086A (zh) * 2011-06-20 2011-10-12 复旦大学 基于多核处理器的通用并行加速算法

Also Published As

Publication number Publication date
CN103514042A (zh) 2014-01-15

Similar Documents

Publication Publication Date Title
Chen et al. ThunderGP: HLS-based graph processing framework on FPGAs
CN110619595B (zh) 一种基于多fpga加速器互联的图计算优化方法
Sundar et al. Hyksort: a new variant of hypercube quicksort on distributed memory architectures
Hou et al. Auto-tuning strategies for parallelizing sparse matrix-vector (spmv) multiplication on multi-and many-core processors
CN110990154B (zh) 一种大数据应用优化方法、装置及存储介质
CN113037800B (zh) 作业调度方法以及作业调度装置
CN105631013B (zh) 生成哈希值的装置和方法
CN113312178A (zh) 一种基于深度强化学习的流水线并行训练任务分配方法
CN110069284B (zh) 一种基于opu指令集的编译方法及编译器
CN103514042B (zh) 一种双调归并排序调优方法及装置
CN115994567A (zh) 一种深度神经网络模型并行计算任务异步调度方法
CN105488134A (zh) 大数据处理方法及大数据处理装置
CN112882819B (zh) 芯片工作频率的设置方法和装置
CN116684420A (zh) 集群资源调度方法、装置、集群系统和可读存储介质
CN110502334A (zh) 基于混合内存架构的带宽感知任务窃取方法、系统及芯片
CN115238879A (zh) 深度神经网络的架构搜索方法及硬件加速器
CN114386349A (zh) 系统级数字电路的布线方法及装置、设备、存储介质
Thomas et al. Dynamic optimizations in gpu using roofline model
Wang et al. Prophet: Fine-grained Load Balancing for Parallel Training of Large-scale MoE Models
Deng et al. HiGene: A high-performance platform for genomic data analysis
CN105046382A (zh) 异构系统并行随机森林优化方法和系统
CN104778088A (zh) 一种基于减少进程间通信开销的并行i/o优化方法与系统
KR101639854B1 (ko) 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 상호접속 구조
CN108875301B (zh) 一种基因序列比对方法、pe配置控制器及可读存储介质
CN114466014B (zh) 一种服务调度方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: BEIJING BEILONG SUPER CLOUD COMPUTING CO., LTD.

Effective date: 20140701

C41 Transfer of patent application or patent right or utility model
C53 Correction of patent for invention or patent application
CB03 Change of inventor or designer information

Inventor after: Chi Xuebin

Inventor after: Wang Jue

Inventor after: Han Shengzhe

Inventor after: Nie Ningming

Inventor after: Lang Xianyu

Inventor after: Lv Haifeng

Inventor before: Chi Xuebin

Inventor before: Han Shengzhe

Inventor before: Wang Jue

Inventor before: Nie Ningming

Inventor before: Lang Xianyu

COR Change of bibliographic data

Free format text: CORRECT: INVENTOR; FROM: CHI XUEBIN KAN SHENGZHE WANG JUE NIE NINGMING LANG XIANYU TO: CHI XUEBIN WANG JUE KAN SHENGZHE NIE NINGMING LANG XIANYU LV HAIFENG

TA01 Transfer of patent application right

Effective date of registration: 20140701

Address after: 100190 Beijing, Zhongguancun, South Haidian District, four street, No. four, software park, building 2

Applicant after: Computer Network Information Center, Chinese Academy of Sciences

Applicant after: Beijing North dragon super cloud computing Co., Ltd.

Address before: 100190 Beijing, Zhongguancun, South Haidian District, four street, No. four, software park, building 2

Applicant before: Computer Network Information Center, Chinese Academy of Sciences

GR01 Patent grant
GR01 Patent grant