一种基于负载平衡的cpu和gpu两级动态任务划分方法

文档序号:6584145阅读:451来源:国知局
专利名称:一种基于负载平衡的cpu和gpu两级动态任务划分方法
技术领域
本发明涉及使用图形处理单元GPU(Graphics Processing Unit,)加速科学计算的优化方法,尤指一种基于负载平衡的CPU和GPU两级动态任务划分方法。

背景技术
GPU过去通常用于图形图像应用领域,随着GPU硬件技术的不断发展以及编程模型的发展,GPU强大的计算能力受到越来越多的重视,大量的科学计算程序都采用GPU加速其关键代码段,获得了良好的加速比。同时随着CPU多核时代的到来,CPU的计算能力也在不断增强,如果在GPU进行运算的同时,CPU也参与运算,将获得更好的加速比。这种CPU+GPU异构系统的混合编程方法负载平衡是关键,如果划分的任务不平衡,则将造成CPU或GPU中一方先完成,需要等待另一方任务完成,造成CPU或GPU空转,使得整个任务完成时间延迟,从而降低了并行效率。
科学计算领域使用GPU加速是将整个应用程序划分为多个CPU执行区和多个GPU加速区,CPU执行区的任务一般为应用程序的入口和出口、为GPU加速区准备数据、获取GPU加速区的数据以及处理一些不适合在GPU上运行的任务,GPU加速区一般为数据密集型的并行任务,执行时间占据整个应用程序的主要部分。一般GPU加速区由GPU单独执行,此时CPU空闲。随着多核CPU的出现,CPU的计算能力越来越强,为了利用空闲的CPU,出现了将GPU加速区任务在GPU和CPU上进行划分然后并行执行的方法,目前这些方法已经比较成熟。不同的科学计算问题有不同的划分方法。例如矩阵乘运算Cm×k=Am×n×Bn×k,即矩阵Am×n乘以矩阵Bn×k,结果存在矩阵Cm×k中。这样的运算可以划分为两个矩阵乘Cm0×k=Am0×n×Bn×k和Cm1×k=Am1×n×Bn×k,其中m0+m1=m,Cm0×k和Cm1×k组合成为Cm×k。其中的一个矩阵乘在GPU上执行,另一个在CPU上执行。为了充分发挥多核CPU的性能,GPU加速区中CPU负担的那部分任务将进一步划分,每个CPU核负担一部分任务,划分方法与GPU与CPU间的划分方法相同。问题的关键是如何确定划分的比例,划分比例将直接影响GPU与CPU、CPU各核之间的任务量,任务的不平衡会大大降低并行效率。目前,GPU与CPU之间的任务划分比例通常按照GPU和CPU的理论或实测性能静态确定,Massimiliano Fatica的论文“Accelerating Linpack withCUDA on heterogenous clusters”,Proceedings of 2nd Workshop on General PurposeProcessing on Graphics Processing Units,GPGPU 2009,Washington,DC,USA,March 8,2009,pp.46-51给出了一个划分比例η=Ggpu/(Ggpu+Gcpu),即划分到GPU上的任务占总任务的比例为η,划分到CPU上的任务占总任务的比例为1-η,公式中Ggpu指GPU的实测性能,Gcpu指CPU的实测性能,单位都是Gflops(109次浮点运算每秒)。CPU核之间由于是同构关系,它们的任务划分采用平均分配方法,即每个核负担的任务量相同。但是这种静态的任务划分方法难以达到GPU与CPU、CPU各核之间的负载平衡。
CPU与GPU之间采用静态方法进行任务划分难以达到负载平衡的原因有两个.第一,每个任务的问题规模各不相同,而GPU性能对问题规模十分敏感.问题规模与具体任务相关,指任务中需要处理的数据总量的相对值,可以有不同的度量.例如在矩阵乘(Am×n×Bn×k)中可以使用

也可以使用计算量m×n×k×2×10-9(单位GFLOPS,109次浮点运算)进行度量,在粒子碰撞模拟应用中可以使用模拟区域内的粒子数进行度量。第二,GPU性能受其他因素的影响较大,性能波动范围大。如GPU与系统内存之间的通讯通过PCI-E总线传输,而CPU至GPU的PCI-E总线速度在实际测试中变化范围可达2.5GB/秒至5.0GB/秒。
CPU各核之间采用平均分配方法难以达到负载平衡的原因是在CPU+GPU的异构平台上各CPU核之间的处理能力有所不同,存在较大差异,可以分成三类。第一类CPU核只包含一个CPU核,主要负责与GPU进行数据传输,为了不影响GPU的运算,基本上不参与计算任务;第二类CPU核是与第一类CPU核具有共享cache的CPU核,包含一个或多个CPU核,它们的计算能力受第一类核的影响较大;第三类CPU核是除第一类和第二类以外剩余的CPU核,与前两类核不共享cache,受前两类核的影响较小。如果平均分配任务,势必会造成计算能力强的核任务不足而空闲,计算能力弱的核执行时间更长,而整个任务的完成时间以最后完成的CPU核为准,最终降低了CPU的整体性能。
综上所述,目前在CPU+GPU的异构平台上,使用GPU加速科学计算程序虽然有很多成功的方法,但仍存在下面两个问题 1.CPU与GPU间的任务划分比例采用静态方法指定,造成CPU与GPU任务负载不平衡。
2.CPU核间的任务划分比例采用平均分配方法,造成CPU核间任务负载不平衡。
目前针对上述问题,本领域技术人员都在探索如何找到一个动态任务划分方法,在任务运行时自动调整CPU与GPU、CPU各核之间的任务划分比例,达到整体负载平衡。


发明内容
本发明要解决的技术问题在于针对CPU和GPU之间、CPU核之间的任务负载不平衡问题,提出一种两级动态任务划分方法,实现CPU和GPU之间、以及CPU多核之间的任务负载平衡,提高科学计算程序利用GPU加速的性能。
本发明的技术方案为为CPU和GPU之间以及CPU多核之间的任务划分建立两个数据库,记录任务的划分比例,其中CPU与GPU之间的任务划分比例根据问题规模确定,在整个应用程序执行过程中根据CPU和GPU的实测性能自动调整任务划分的比例,实现任务划分的负载平衡。
采用Gsplit值定义GPU所分配的任务占整个CPU和GPU并行任务的比例。采取按问题规模取值的方法解决Gsplit值随问题规模变化的问题,同时根据实测性能不断更新Gsplit值,从而达到GPU与CPU间任务负载平衡。使用数据库定义多个问题规模范围的Gsplit值,用于区分落在不同问题规模范围内的Gsplit值。初始的多个Gsplit值是根据问题规模、CPU计算峰值、GPU计算峰值估计得到的,在反复的任务运行过程中,根据实测的CPU和GPU的实际计算能力不断更新各自问题规模下的Gsplit值,本次更新的Gsplit值又作为下一次CPU和GPU并行任务划分的依据。
对于划分为CPU完成的那部分任务,进一步在各CPU核之间进行任务划分.如前所述,由于CPU和GPU协同计算,各个CPU核的计算能力并不相同,存在较大差异,进行静态任务划分不能充分挖掘各自的计算能力获得好的负载平衡.同时,由于CPU各核的性能受问题规模影响较少,无需根据问题规模调整任务的划分比例.用Csplit值定义CPU各核所分配的任务占整个CPU并行任务的比例.具体方法如下为每个参与任务的CPU核建立任务划分比例的数据库,设参与任务的CPU核数为N,将每个CPU核对应的Csplit值初始化为1/N,即初始状态下所有CPU计算任务平均分配到每个CPU核上.并行执行任务,同时统计各自完成的时间从而获得各CPU核的实测性能.在反复的任务运行过程中,根据实测的CPU核的实际计算能力不断更新任务划分的比例值,本次更新的值又作为下一次CPU核并行任务划分的依据. 具体技术方案为 第一步、构建并初始化CPU-GPU间任务划分比例数据库DB1,DB1记录M组不同问题规模下的Gspliti,i为整数且i∈
,M为正整数,取值范围为50~200。记录过多的问题规模会造成数据库内容过多,查找和更新数据库将耗费更多时间。另外,相近的问题规模对应其的Gsplit值也相近,记录太多的问题规模也无必要。但是另一方面,记录过少的问题规模将不能反映Gsplit值的变化趋势,使得根据此数据库取得的Gsplit值不能获得很好的效果。构建数据库DB1的具体步骤如下 1.1DB1包含M组问题规模的Gsplit值,其形式为{(F0,Gsplit0),(F1,Gsplit1),...,(FM-1,GsplitM-1)},其中Fi=g(i),Gspliti∈
,Fi为记录的问题规模,g(i)为记录的问题规模的分布函数,是一个单调递增函数,表示DB1第i项记录的问题规模为g(i),Gspliti表示问题规模F落在[Fi,Fi+1)范围内的并行任务块应采取的任务划分比例因子,即比例为Gspliti的任务划分在GPU上执行,比例为1-Gspliti的任务划分在CPU上执行。当F≥FM-1时,任务划分比例因子取值GsplitM-1。函数g(i)一般情况下可采用等间距分布函数g(i)=a+b×i,其中a,b为常量。定义具体任务的问题规模范围[Fmin,Fmax],Fmin≤Fmax,Fmin指问题规模的下界,Fmax指问题规模的上界,当任务确定后,它们的值通过分析任务算法和流程计算获得,或者通过模拟执行的方法统计获得。根据Fmin和Fmax的值计算出a,b的值a=Fmin,b=(Fmax-Fmin)/(M-1)。
1.2初始化Gspliti值。

i ∈
,Pcpu为参与运算的CPU核的理论峰值性能,Pgpu为GPU的理论峰值性能。
第二步、构建并初始化CPU核间的任务划分比例数据库DB2,记录参与执行任务的各CPU核所占CPU总任务的比例。DB2为向量形式{Csplit0,Csplit1,…,CsplitN-1},其中N为参与执行任务的CPU核数。Cspliti的初值为1/N,j∈

第三步、启动应用程序。与通常应用程序运行相同。
第四步、执行应用程序CPU执行区代码。与通常应用程序运行相同,完全在CPU上执行。
第五步、进入GPU加速区入口,计算此次并行任务的问题规模F和总的计算量S。计算量S为并行任务中的所有定点、浮点运算数目之和,可通过分析任务算法计算获得或使用工具模拟任务的整个执行过程并进行统计获得。
第六步、根据数据库DB1的值进行CPU、GPU的任务划分。搜索DB1,若F满足F∈[Fi,Fi+1),取得第i项中的Gspliti值;若F≥FM-1,Gspliti取值为GsplitM-1.将占总任务的比例值为Gspliti的任务划分到GPU,GPU上的计算量为Sgpu=S×Gspliti,将占总任务的比例值为1-Gspliti的任务划分到CPU上,CPU上的计算量为Scpu=S-S×Gspliti。
第七步、根据数据库DB2的值进行CPU核之间的任务划分。针对CPU上的每个核j,搜索数据库DB2,取得第j项中的Csplitj值。划分CPU核上的任务,方法是将占总CPU任务的比例值为Csplitj的任务分给第j个核,第j个核的计算量为Scpu[j]=(S-S×Gspliti)×Csplitj。
第八步、执行GPU加速区的并行任务,即将划分好的GPU任务和CPU各核上的任务并行执行,同时记录各自任务的执行时间。
第九步、同步GPU加速区的并行任务。等待各任务执行完毕,搜集各任务的执行时间(Tgpu,Tc
,Tc[1],…,Tc[N-1]),其中Tgpu表示GPU上任务完成的时间,Tc[j],j∈
表示第j个CPU核上任务完成的时间。Tcpu=MAX(Tc
,Tc[1],…,Tc[N-1])为CPU上的并行任务总的完成时间。
第十步、更新数据库DB1。GPU的实测性能为

CPU的实测性能为

调整第六步根据问题规模F得到的Gspliti值,方法是计算

用GsplitiΔ值覆盖数据库DB1中对应的Gspliti值。
第十一步、更新数据库DB2。每个CPU核的实测性能为

计算每个CPU核负担的任务比例

用向量{Csplit0Δ,Csplit1Δ,…,CsplitN-1Δ}覆盖数据库DB2中的向量{Csplit0,Csplit1,…,CsplitN-1}。
第十二步、判断应用程序是否结束,若结束,即应用程序中所有的任务执行完毕,则结束应用程序;若未结束,跳转至第四步。
与现有技术相比,采用本发明可达到以下技术效果 1.大规模科学计算程序执行过程中,根据不同的问题规模选择最合适的任务分配比例值Gsplit,Gsplit值在应用程序运行时不断的自动修正,保证了CPU和GPU的任务负载平衡; 2.由于CPU各个核的计算能力差异,采用动态任务划分方法自动调整每个核的任务比例值Csplit,充分挖掘每个核的计算能力,平衡每个核之间的任务负载,提高了多核CPU的性能。



图1是本发明总体流程图; 图2是数据库DB1记录的不同问题规模下任务划分比例的初值,以及应用程序运行后自动调整得到的划分比例对比图。
图3是数据库DB2记录的不同CPU核上任务划分比例的初值,以及应用程序运行后自动调整得到的划分比例对比图。
图4是本发明方法与背景技术中的静态划分方法程序性能的比较图。

具体实施例方式 图1是本发明总体流程图。本发明包括以下步骤 第一步、构建并初始化CPU-GPU间任务划分比例数据库DB1,DB1记录M组不同问题规模下的Gspliti,i∈
值。
第二步、构建并初始化CPU核间的任务划分比例数据库DB2,记录参与执行任务的各CPU核所占CPU总任务的比例。
第三步、启动应用程序。
第四步、执行应用程序CPU执行区代码。
第五步、进入GPU加速区入口,计算此次并行任务的问题规模F和总的计算量S,计算量S包括并行任务中的所有定点、浮点运算。
第六步、根据数据库DB1的值进行CPU、GPU的任务划分。
第七步、根据数据库DB2的值进行CPU核之间的任务划分。
第八步、执行GPU加速区的并行任务。
第九步、同步GPU加速区的并行任务。
第十步、更新数据库DB1。
第十一步、更新数据库DB2。
第十二步、判断应用程序是否结束,若结束,即应用程序中所有的任务执行完毕,则结束应用程序;若未结束,跳转至第四步。
为了检验CPU、GPU的动态任务划分效果,国防科大计算机学院在CPU+GPU的混合结构上进行了实验验证,具体配置为CPUIntel Xeon 5450,四核,频率3.0GHz,双精度浮点计算理论峰值48Gflops;GPU加速器ATI RADEON HD 4870×2,为了增加稳定性测试时使用了单卡,其核心频率由750MHz降为625MHz,双精度浮点计算理论峰值200Gflops;在该平台上采用AMD CAL编程模型实现了双精度浮点稠密矩阵乘加的GPU加速。测试的应用程序为HPLinpack2.0,程序的核心是使用LU分解方法求解稠密矩阵线性方程组,矩阵数据为随机生成的双精度浮点值。应用程序的主要输入参数为N=46000,NB=1216,P=Q=1。GPU加速区为矩阵乘加运算(Am×n×Bn×k+Cm×n),问题规模使用计算量m×n×k×2×10-9(单位GFLOPS,109次浮点运算)进行度量,通过分析任务的算法得到问题规模范围为

测试时使用CPU中的一个核与GPU进行通讯,不参与运算,剩余的三个核参与任务分配,总的峰值性能为(48/4)×3=36Gflops。根据背景技术中介绍的静态划分方法,GPU所占总任务的比例为200/(200+36)=84.75%。采用本发明进行划分时,步骤如下 第一步、构建并初始化CPU-GPU间任务划分比例数据库DB1,DB1记录了50组不同问题规模下的Gspliti,i∈
值。具体步骤如下 1.1定义包含50组问题规模的Gsplit值的任务划分比例数据库DB1,{(F0,Gsplit0),(F1,Gsplit1),...,(F49,Gsplit49)},其中Fi=g(i),Gspliti∈
,i∈
。g(i)=a+b×i,根据问题规模范围
确定Fmin=0,Fmax=4900。根据公式a=Fmin,b=(Fmax-Fmin)/(M-1)得到a=0,b=100,即g(i)=100×i。最终定义的DB1为{(0,Gsplit0),(100,Gsplit1),(200,Gsplit2),...,(4900,Gsplit49)} 1.2初始化Gspliti值。参与运算的CPU核的理论峰值性能Pcpu为36Gflops,GPU的理论峰值性能Pgpu为200Gflops。根据公式

得到

i∈

第二步、构建并初始化CPU核间的任务划分比例数据库DB2,记录参与执行任务的各CPU核所占CPU总任务的比例。参与执行任务的CPU核数N为3,平均分配任务,初始化DB2为向量形式{0.3333,0.3333,0.3334}。
第三步、启动应用程序。
第四步、执行应用程序CPU执行区代码。
第五步、进入GPU加速区入口,计算此次任务的问题规模F和总的计算量S。GPU加速区任务为矩阵乘加运算Am×n×Bn×k+Cm×n,m,n,k为传给本任务的参数,问题规模F使用计算量m×n×k×2×10-9度量,计算量S=F。
第六步、根据数据库DB1的值进行CPU、GPU的任务划分。搜索DB1,取得第i项中的Gspliti值,满足F∈[Fi,Fi+1);或者当F≥F49时,Gspliti取值Gsplit49。将占总任务的比例值为Gspliti的任务划分到GPU,GPU上的计算量为Sgpu=S×Gspliti,将占总任务的比例值为1-Gspliti的任务划分到CPU上,CPU上的计算量为Scpu=S-S×Gspliti。
第七步、根据数据库DB2的值进行CPU核之间的任务划分。针对CPU上的每个核j∈
,搜索数据库DB2,取得第j项中的Csplitj值。划分CPU核上的任务,方法是将占总CPU任务的比例值为Csplitj的任务分给第j个核,第j个核的计算量为Scpu[j]=(S-S×Gspliti)×Csplitj。
第八步、执行GPU加速区的并行任务。将划分好的GPU任务和CPU各核上的任务并行执行,同时记录各自任务的执行时间。
第九步、同步GPU加速区的并行任务。等待各任务执行完毕,搜集各任务的执行时间(Tgpu,Tc
,Tc[1],Tc[2])。
第十步、更新数据库DB1。GPU的实测性能为

CPU的实测性能为

计算

用GsplitiΔ值覆盖数据库DB1中对应的Gspliti值。
第十一步、更新数据库DB2。每个CPU核的实测性能为

j∈
,计算每个CPU核负担的任务比例

用向量{Csplit0Δ,Csplit1Δ,Csplit2Δ}覆盖数据库DB2中的向量{Csplit0,Csplit1,Csplit2}。
第十二步、判断应用程序是否结束,若结束,即应用程序中所有的任务执行完毕,则结束应用程序;若未结束,跳转至第四步。
图2是国防科大所做上述实验中数据库DB1记录的不同问题规模下任务划分比例的初值,以及应用本发明后自动调整得到的划分比例对比图.横坐标是问题规模F的分布,单位GFLOPS.纵坐标是GPU任务所占的比例值.对于任意一个问题规模F,GPU任务所占的比例值初始值均为0.8475,采用本发明后,应用程序会自动调整这个比例,达到任务的负载平衡.最终得到的比例值与初始值有所不同,并且随问题规模变化. 图3是数据库DB2记录的不同CPU核上任务划分比例的初值,以及应用程序运行后自动调整得到的划分比例对比图。横坐标是CPU核的编号,纵坐标是CPU核所占CPU总任务的比例。最终每个核的划分比例有所不同,分别为{0.3412,0.3290,0.3298}。
图4是本发明方法与背景技术中的静态划分方法程序性能的比较图。横坐标表示使用背景技术的静态划分方法和使用本发明的动态划分方法;纵坐标为测量的应用程序性能,单位为Gflops(109次浮点运算每秒),由HPLinpack输出文件得到。使用本发明时应用程序运行时间为389.25秒,性能为166.7Gflops;使用静态划分方法时应用程序执行时间为435.96秒,性能为148.8Gflops。使用本发明方法获得的性能提升约为12.03%。
权利要求
1.一种基于负载平衡的CPU和GPU两级动态任务划分方法,所述GPU是指图形处理单元,其特征在于包括以下步骤
第一步、构建并初始化CPU-GPU间任务划分比例数据库DB1,DB1记录M组不同问题规模下的Gspliti,i∈
,M为正整数;构建DB1的具体步骤是
1.1DB1的形式为{(Fx,Gsplit0),(F1,Gsplit1),...,(FM-1,GsplitM-1)},其中Fi=g(i),Gspliti∈
,Fi为记录的问题规模,g(i)为记录的问题规模的分布函数,是一个单调递增函数,DB1第i项记录的问题规模为g(i),Gspliti表示问题规模F落在[Fi,Fi+1)范围内的并行任务块应采取的任务划分比例因子,即比例为Gspliti的任务划分在GPU上执行,比例为1-Gspliti的任务划分在CPU上执行;
1.2初始化Gspliti值,
Pcpu为参与运算的CPU核的理论峰值性能,
Pgpu为GPU的理论峰值性能;
第二步、构建并初始化CPU核间的任务划分比例数据库DB2,记录参与执行任务的各CPU核所占CPU总任务的比例,DB2为向量形式{Csplit0,Csplit1,…,CsplitN-1},其中N为参与执行任务的CPU核数,Cspliti的初值为1/N,j∈

第三步、启动应用程序;
第四步、执行应用程序CPU执行区代码;
第五步、进入GPU加速区入口,计算此次并行任务的问题规模F和总的计算量S,计算量S为并行任务中的所有定点、浮点运算数目之和,通过分析任务算法计算获得或使用工具模拟任务的整个执行过程并进行统计获得;
第六步、根据数据库DB1的值进行CPU、GPU的任务划分搜索DB1,若F满足F∈[Fi,Fi+1),取得第i项中的Gspliti值;将占总任务的比例值为Gspliti的任务划分到GPU,GPU上的计算量为Sgpu=S×Gspliti,将占总任务的比例值为1-Gspliti的任务划分到CPU上,CPU上的计算量为Scpu=S-S×Gspliti;
第七步、根据数据库DB2的值进行CPU核之间的任务划分针对CPU上的每个核j,搜索数据库DB2,取得第j项中的Csplitj值,划分CPU核上的任务,方法是将占总CPU任务的比例值为Csplitj的任务分给第j个核,第j个核的计算量为Scpu[j]=(S-S×Gspliti)×Csplitj;
第八步、执行GPU加速区的并行任务,即将划分好的GPU任务和CPU各核上的任务并行执行,同时记录各自任务的执行时间;
第九步、同步GPU加速区的并行任务等待各任务执行完毕,搜集各任务的执行时间(Tgpu,Tc
,Tc[1],…,Tc[N-1]),其中Tgpu表示GPU上任务完成的时间,Tc[j],j∈
表示第j个CPU核上任务完成的时间,Tcpu=MAX(Tc
,Tc[1],…,Tc[N-1])为CPU上的并行任务总的完成时间;
第十步、更新数据库DB1GPU的实测性能为
CPU的实测性能为
调整第六步根据问题规模F得到的Gspliti值,方法是计算
用GsplitiΔ值覆盖数据库DB1中对应的Gspliti值;
第十一步、更新数据库DB2每个CPU核的实测性能为
计算每个CPU核负担的任务比例
用向量{Csplit0Δ,Csplit1Δ,…,CsplitN-1Δ}覆盖数据库DB2中的向量{Csplit0,Csplit1,…,CsplitN-1};
第十二步、判断应用程序是否结束,若结束,即应用程序中所有的任务执行完毕,则结束应用程序;若未结束,跳转至第四步。
2.如权利要求1所述的一种基于负载平衡的CPU和GPU两级动态任务划分方法,其特征在于当问题规模F≥FM-1时,任务划分比例因子Gspliti取值为GsplitM-1。
3.如权利要求1所述的一种基于负载平衡的CPU和GPU两级动态任务划分方法,其特征在于函数g(i)采用等间距分布函数g(i)=a+b×i,其中a,b为常量,a=Fmin,b=(Fmax-Fmin)/(M-1),Fmin指问题规模的下界,Fmax指问题规模的上界,任务的问题规模范围为[Fmin,Fmax],Fmin≤Fmax,当任务确定后,Fmin和Fmax的值通过分析任务算法和流程计算获得,或者通过模拟执行的方法统计获得。
4.如权利要求1所述的一种基于负载平衡的CPU和GPU两级动态任务划分方法,其特征在于M取值范围为50~200。
全文摘要
本发明公开了一种基于负载平衡的CPU和GPU两级动态任务划分方法,要解决的技术问题在于实现CPU和GPU之间、CPU多核之间的任务负载平衡。技术方案是为CPU和GPU之间以及CPU多核之间的任务划分建立两个数据库,记录任务的划分比例,其中CPU与GPU之间的任务划分比例根据问题规模确定,且在整个应用程序执行过程中根据CPU和GPU的实测性能自动调整任务划分的比例,实现任务划分的负载平衡。采用本发明既能保证CPU和GPU的任务负载平衡,提高科学计算程序利用GPU加速的性能,又能平衡CPU每个核之间的任务负载,提高多核CPU的性能。
文档编号G06F9/50GK101706741SQ20091022718
公开日2010年5月12日 申请日期2009年12月11日 优先权日2009年12月11日
发明者廖湘科, 王 锋, 杨灿群, 陈娟, 杜云飞, 易会战, 黄春, 赵克佳 申请人:中国人民解放军国防科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1