一种基于任务均衡调度的GPU内部能耗优化方法与流程

文档序号:18142185发布日期:2019-07-10 11:11阅读:320来源:国知局
一种基于任务均衡调度的GPU内部能耗优化方法与流程

本发明属于设备状态与任务特性的任务平衡调度技术领域,尤其涉及一种基于任务均衡调度的gpu内部能耗优化方法。



背景技术:

目前,业内常用的现有技术是这样的:图形处理器(英语:graphicsprocessingunit,缩写:gpu),又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上图像运算工作的微处理器。用途是将计算机系统所需要的显示信息进行转换驱动,并向显示器提供行扫描信号,控制显示器的正确显示,是连接显示器和个人电脑主板的重要元件,也是"人机对话"的重要设备之一。显卡作为电脑主机里的一个重要组成部分,承担输出显示图形的任务,对于从事专业图形设计的人来说显卡非常重要。

一、基于任务调度的能耗优化研究,通过gpu中的任务调度进行能耗优化可以从硬件和软件两方面着手。基于软件的能耗优化策略因为硬件代价小并且实施相对容易,因此被认为是比较有效的能耗优化手段。一般来讲,通过软件的任务调度策略分为面向程序设计的静态方法以及面向操作系统和编译器的动态方法。面向程序设计的静态方法是直接通过程序设计进行所需sm资源的分配。学者们提出了静态的任务分配策略来实现任务的调度,从而降低系统能耗。静态编译的方法无需进行gpu操作系统或是硬件层面的修改,实现代价相对较小。但同时因为该方法没有考虑到gpu中sm的资源情况以及任务执行的时间目标,因此能耗优化效果是有限的。尤其是当执行环境发生变化的时候,该方法的能耗效果就更加难以得到保障。如果想要获得特定环境的能耗目标,需要在程序调度前对程序进行预先运行以获得参数并且手动改写目标程序代码。第二种方法是动态调度方法,也就是在程序执行的过程中,利用已知的gpu资源参数以及任务执行的时间参数进行任务均衡调度。这些参数包括处理数据的大小、任务对cache的依赖程度、sm的设备利用率等。动态的方案通过对gpu内部的资源的分析以及任务特性本身的分析进行均衡调度,往往能取得比静态调度更好的效果,着重分析动态调度策略并提一种基于任务均衡动态调度的能耗优化方法。

二、基于任务执行时间的调度策略(randomallocationdevice),gpu能耗优化的研究场景是基于多sm的工作场景。进入gpu的任务由sm任务调度器按照某种策略向各个sm分配任务。各个sm的地位在任务执行过程中是平等的,也就是说它们的任务负载能力是相同的,任务调度器一般基于平等策略进行任务分配。但是由于任务调度器在每个sm分配的任务特性不同,每个sm的使用效率并不相同。

在目前的任务调度中,往往基于程序执行时间的调度策略。假设系统中待执行的程序序列为pi(0<=i<=n),当前系统中的可用处理器资源为smi(0<=i<=n),那么要让系统执行程序能耗最小:

由上述公式可知,系统能耗可表示为系统中的所有的sm、cpu和主板消耗的能耗之和。进一步可表示为各自的功率与时间的乘积。对于一组待调度的程序及数量一定的相同sm而言,待调度任务的序列根据调度算法的不同而不同,但不会改变任务执行时的功耗。换句话说就是待调度任务的序列的平均功耗保持不变。因此,系统能耗可进一步表示为平均功耗与时间t的乘积。为了在执行程序序列时使得系统能耗最小,必须使平均功耗与时间t尽可能小。而对于不同的调度方法而言,平均功耗是一定的,因此,要使得系统能耗最小就要使得执行时间t最小。许多能耗优化方案都是基于执行时间的方案,也就是说通过一种调度算法使得任务在sm上的总体完成时间最小。

三、基于随机分配设备的任务调度策略(randomallocationdevice)

在以降低平均时间执行时间为目标的动态调度中,基于设备(sm)状态进行任务调度,randomallocationdevice(rad)是常用的能耗优化手段,这里的设备是指gpu中的sm。一种低功耗分配负载的方法。该方法的思想是直接把设备(sm)随机分配给要执行的任务使用而不考虑设备的状态。也就是说,这种方法认为gpu中的sm设备都是平等的,没有特性上的以及使用状态上的差别。下面展示了这种策略的算法实现的伪代码。

random_allocation_deviceapproach(rad)

该方法在时间复杂度上是有优势的,因为该方法并没有考虑sm作为资源属性的不同,随机分配使得将要执行的任务能够非常快地进行sm定位,并且立刻执行。但是正如算法中描述的,该方法并没有考虑sm作为资源属性的不同,这也就不能把执行任务的特性与将要执行的sm进行相关性链接。例如,当某个任务被随机分配的某个sm,很有可能该sm仍然被其他的任务占用,而且需要相当长的时间才能被释放。在这种随机分配的策略下,任务不能被及时执行,实时性非常差。

四、基于设备历史状态的任务调度策略(devicehistory-based)

如果考虑设备(sm)的历史使用状态,基于设备(sm)状态进行任务调度是经常使用的方法。例如下面的dfb(devicehistory-based)算法考虑了sm的释放情况。函数issmfree(i)询问了设备的状态,如果设备被释放,释放的sm资源将被放到资源池平等地供所有任务使用。

device_free_basedapproach(dfb)

由于考虑到了sm的状态,该调度方法在大部分情况下能够提供比随机分配更好的性能。然而,该调度方法却不能保证任务执行的一致性,因为它仅仅考虑到了当前的设备是否被前一个任务所占用。也就是说这种方法并没有考虑到任务中程序的时间相关性与空间相关性的影响,这种相关性有可能会造成任务在各个sm中的频繁切换,造成不必要的能耗损失。同时,这种任务的相关性还会造成大量任务在sm中迁移从而进一步造成sm执行效率的损失。

五、根据sm的状态进行更进一步的策略尝试,这是基于sm历史表现的算法策略(performancehistorybased),该算法使用了gpu的执行时间比率。该方法在选择合适的sm执行任务之前会读取执行时间的历史信息,通过下面公式计算historyratiovalue(phb),称之为某个sm的历史资源使用频率。

ratio[i]=executiononthesmi/executiononthesmi+1;

该参数说明了各个sm在执行时间上的频率,该信息实质上反映了执行任务在sm上的程序的时间和空间相关性;因此,可以提高整个sm资源的利用率从而对能耗进行优化。

根据这种策略,如果某个sm的使用更频繁,说明该sm的任务相关性相对较好,执行效率也就相对较高。被优先考虑被分配给新的任务;基于使用频率的调度方法的伪代码。

performance_history_basedapproach(phb)

虽然考虑了gpu中各个sm的差别,然而没能考虑当前程序在对应的sm里执行的剩余时间,进而会导致sm的过度利用和欠利用。例如,如果所有待执行的程序依据上述计算的历史资源使用频率全部都分配给第一个sm,那么第一个sm将会过度利用而剩余的sm将会变得欠利用。

综上所述,现有技术存在的问题是:

(1)没有考虑任务在各个sm上迁移造成的损失,例如基于设备释放的调度算法(devicehistory-based算法)考虑优先使用被释放的sm,但并没有考虑任务在sm上的迁移;很可能由于多个任务的在sm之间反复迁移而产生大量的能耗,削弱gpu的能耗性能。

(2)没有把设备资源与执行的任务进行通盘的综合考虑;基于sm历史表现的算法策略(performancehistorybased)中虽然对sm的使用率进行了考虑,但是并没有结合任务的迁移特性,不能对sm进行均衡使用,造成了任务执行效率不高。

解决上述技术问题的难度:

(1)目前的任务调度算法对gpu的计算单元(流处理器sm)的利用率不高,不能综合考虑sm的利用效率以及任务的特征对能耗的影响。

(2)任务调度中的迁移现象是普遍存在的问题,任务在流处理器中的迁移会造成能量损耗,目前的调度策略不能有效的缓解任务迁移现象。

(3)目前还没有有效的能耗优化任务调度算法能够解决以上两个问题,需要算法设计。

解决上述技术问题的意义:

(1)针对计算单元利用率不高的问题,本发明分析了gpu环境下任务调度能耗问题的相关因素,并创造性地抽象出了影响任务迁移的均衡影响因子cb以及sm的历史利用率hrv,利用均衡思想来解决调度中的任务迁移造成的能耗损失问题。通过均衡策略对sm中的任务进行合理调度,提高了计算单元的利用率,从而减少gpu能耗损失。

(2)针对任务迁移造成的能耗损失,本发明综合利用计算资源属性(sm历史资源利用率)与任务特性(均衡影响因子),通过把两者结合起来实现更好的能耗优化策略。通过对任务均衡性的排序以及sm的利用率排序来优化任务调度策略,减小了sm中的任务迁移现象,从而实现了gpu的综合能耗优化。

(3)针对能耗优化任务调度算法,本发明构建了任务均衡调度算法均衡影响因子-设备利用率任务调度策略(cb-hrv),并且进行算法框架构建与实现。

本发明为了有效地缓解上述问题以及使得gpu能够更加广泛地应用以适应程序的多样性,提出均衡调度策略,实现了一个低开销、可移植性好的任务能耗优化模型。本发明的调度策略充分考虑了任务在sm上的迁移特性;并且结合sm的设备执行效率来优化gpu的内部能耗,称为基于均衡影响因子-设备利用率的任务调度策略(cb-hrvtaskscheduleapproach)。



技术实现要素:

针对现有技术存在的问题,本发明提供了一种基于任务均衡调度的gpu内部能耗优化方法。

本发明是这样实现的,一种基于任务均衡调度的gpu内部能耗优化方法,所述基于任务均衡调度的gpu内部能耗优化方法利用待执行程序的均衡影响因子cb以及sm使用频率信息phb把,提出均衡影响因子以及sm使用频率信息的cb-hrv任务调度算法;cb-hrv任务调度算法依据任务执行的时间将一组任务按照任务的均衡影响因子分配到对应的sm中执行;策略调度器把任务均衡地分配到各个sm中;同时,利用sm使用频率信息来提高设备资源的使用效率。通过对待执行任务信息与资源信息的整合应用实现能耗优化的任务调度方法。

进一步,所述cb-hrv任务调度算法具体包括:

(1)计算出各个任务的平衡影响因子cb,计算出各个sm资源的使用率phb;

(2)按照任务的平衡影响因子从大到小的顺序给各个任务重新排序,形成任务队列;

(3)按照sm资源的使用率phb从大到小的顺序给各个sm重新排序;

(4)把排序的任务队列依次匹配到排序的sm队列中。

进一步,所述cb-hrv任务调度算法形成两个队列,一个是历史使用频率队列,另一个是任务均衡影响因子;

用taskbalance[]表示任务均衡影响因子队列,并用sorttask(taskbalance[i]函数对该队列降序排序;用smratio[]表示历史使用频率队列,并用sortsm(smratio[i])函数对该队列进行降序排序;对于排序后的sm历史使用频率phb,使用数组smrationindex[]存放;对于排序后的任务均衡影响因子序列,使用数组taskcbindex[]进行存储。

进一步,所述cb-hrv任务调度算法进一步包括:

(1)首先用calculatebalance(p[i])函数计算出各个任务的平衡影响因子cb,并存放在taskbalance[i]数组里,接着用calculateratio(sm[i])计算出各个sm资源的使用率ratiovalue,并存放在smratio[i]数组里;

(2)使用sorttask(taskbalance[i])按照影响因子cb值从大到小的顺序给各个任务重新排序,并存放在taskcbindex[]数组里,形成任务队列;用sortsm(smratio[i])函数按照sm使用率从大到小的顺序给各个sm重新排序,并把结果存放在smrationindex[]数组里;

(3)把排序的任务队列依次匹配到排序的sm队列中。

进一步,所述基于任务均衡调度的gpu内部能耗优化方法还包括:

第一步,分析待执行任务的均衡影响因子信息,并且从小到大进行排序;把比较容易产生迁移现象的任务分配给gpu中利用率比较高的sm而把不大受迁移干扰的任务分配给利用率相对较低的sm;

第二部,形成两个队列,第一个队列是按照任务的均衡影响因子cb由大到小排序的队列;任务的均衡影响因子越大,表明该任务受迁移干扰的程度也越大;第二个队列是按sm的使用频率由大到小排序的队列phb;使用频率phb值越高,说明该sm的使用频率越高,执行效率也越高;

第三步,把均衡影响因子最大的任务分配给执行效率最高的sm执行,由此来降低由于任务迁移造成的影响;按照均衡影响因子大小依次把任务分配给由大到小排序的sm执行,实现总体的优化策略;

第四步,通过把均衡影响因子高的任务配置到执行效率更高的sm中,在获取待执行任务的时间信息情况下,依据任务的影响因子信息对任务进行排序,其次获得sm的历史使用频率并排序;依照每个sm的任务队列记录的任务编号分配给到对应的sm中。

本发明的另一目的在于提供一种应用所述基于任务均衡调度的gpu内部能耗优化方法的图形处理器。

综上所述,本发明的优点及积极效果为:本发明分析了基于任务调度平衡的相关理论与算法,并且提出结合设备状态与任务特性的任务平衡调度策略:均衡影响因子-设备利用率任务调度策略(cb-hrv);策略既考虑了sm的资源属性同时也考虑了任务在sm中的迁移特性,利用算法在gpu中实现了动态的工作负载均衡调度。本发明对每个sm的资源利用率进行分析,并且利用任务的特性进行任务的均衡调度,实现了在多个sm中的动态平衡调度,达到了gpu的能耗优化目标。

本发明通过对处理单元合理地分配任务用以减少任务执行期间的系统能耗的消耗。cb-hrv任务调度方法首先获得一组任务的时间数据,并按照均衡影响因子对它们进行排序,同时对执行任务的具体sm使用历史利用率进行排序,然后利用均衡调度的思想依次将降序后的任务编号分配到降序排序的处理单元上,实现基于均衡的gpu能耗优化调度方法。

在实验部分,本发明分别对四种动态分配方案进行实验对比并分析了优劣;实验结果表明,均衡影响因子-设备利用率任务调度策略能够使gpu的能耗性能提高了15.69%。执行时间的调度方案,实验结果表明,与现有方法相比,cb-hrv方案能耗平均为10.38%;与现有方法相比,本发明的调度方法更有效,执行时间的调度方案;实验结果表明,与现有方法相比,本发明的cb-hrv方案能耗平均为10.38%;与现有方法相比,从实验结果上看,本发明提出的cb-hrv方法是有效的、合理的和可行的。

附图说明

图1是本发明实施例提供的基于任务均衡调度的gpu内部能耗优化方法流程图。

图2是本发明实施例提供的sm中的任务迁移现象示意图;

图中:(a)任务长生过载现象;(b)重新调度任务产生任务迁移现象。

图3是本发明实施例提供的sm中不同分配方案的任务完成时间示意图。

图4是本发明实施例提供的不同基准测试程序的均衡影响因子示意图。

图5是本发明实施例提供的matrixmultiplication任务执行时序图。

图6是本发明实施例提供的matrixmultiplicatio调度时间分配比例图。

图7是本发明实施例提供的histogram任务执行时序图。

图8是本发明实施例提供的histogram调度时间分配比例图。

图9是本发明实施例提供的scalarproducts任务执行时序图。

图10是本发明实施例提供的scalarproducts调度时间分配比例图。

图11是本发明实施例提供的scalarproducts任务执行时序图。

图12是本发明实施例提供的scalarproducts调度时间分配比例图。

图13是本发明实施例提供的不同调度方案的平均能量消耗(测试一)示意图。

图14是本发明实施例提供的不同调度方案的平均能量消耗(测试二)示意图。

图15是本发明实施例提供的不同调度方案的平均能量消耗(测试三)示意图。

图16是本发明实施例提供的cb-hrv调度方法的能耗提升对比示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明分析了gpu环境下任务调度能耗问题的相关因素,并将此问题转化为任务调度问题。创造性地引入任务的均衡影响因子,利用均衡思想来解决调度中的任务迁移造成的能耗损失问题,通过均衡策略对sm中的任务进行合理调度减少gpu能耗损失。综合使用资源属性与任务的均衡特性,通过把两者结合起来实现更好的能耗优化策略,并对均衡调度进行了。通过对任务均衡性的排序以及sm的利用率排序来优化任务调度策略,实现gpu的综合能耗优化。构建了任务均衡调度算法均衡影响因子-设备利用率任务调度策略(cb-hrv),并且进行了代码构建。

下面结合附图对本发明的应用原理做详细的描述。

如图1所示,本发明实施例提供的基于任务均衡调度的gpu内部能耗优化方法包括以下步骤:

s101:分析待执行任务的均衡影响因子信息,并且从小到大进行排序;把比较容易产生迁移现象的任务分配给gpu中利用率比较高的sm而把不大受迁移干扰的任务分配给利用率相对较低的sm;

s102:形成两个队列,第一个队列是按照任务的均衡影响因子cb由大到小排序的队列;任务的均衡影响因子越大,表明该任务受迁移干扰的程度也越大;第二个队列是按sm的使用频率由大到小排序的队列phb;使用频率phb值越高,说明该sm的使用频率越高,执行效率也越高;

s103:把均衡影响因子最大的任务分配给执行效率最高的sm执行,由此来降低由于任务迁移造成的影响。接下来,按照均衡影响因子大小依次把任务分配给由大到小排序的sm执行,实现总体的优化策略;

s104:通过把均衡影响因子高的任务配置到执行效率更高的sm中,在获取待执行任务的时间信息情况下,依据任务的影响因子信息对任务进行排序,其次获得sm的历史使用频率并排序;依照每个sm的任务队列记录的任务编号分配给到对应的sm中。

下面结合附图对本发明的应用原理作进一步的描述。

1、sm任务调度中的迁移现象

在gpu中的任务调度中,某个任务不可能只在一个固定的sm中完成,任务在sm中的迁移是不可避免的现象。图2中有两个任务,sm中的调度器动态地监视其调度队列。在图2中任务在两个sm中的迁移过程。(a)是没有执行任务迁移的过程,两个任务在两个sm中分别执行。从图2中看出,任务1被分配在了sm1和sm2上执行。调度器把第二个任务(用橘色表示)分配给了sm2执行。但任务1的一部分和任务2同时在sm2上执行,造成sm2过载。这时,为了避免sm由于过载而死机,调度器会把任务2调度在负载较小的sm1上执行,如图2所示。

任务调度器可以通过以上策略重新分配任务以避免gpu的异常。但与此同时,由于任务迁移造成了gpu的多余开销,任务需要在sm之间进行切换。如果有n个任务进入sm组件,由于任务迁移产生的开销将会继续增大,造成能耗的增加。在任务的调度策略中应该尽量避免任务在各个sm中的迁移。

2、均衡任务调度策略分析

一个任务如果有多个warp,warp需要在多个sm上执行。如果要考虑某个任务的执行效率,考虑任务在各个sm综合执行的完成时间。图3对某个任务在两个sm(sm1,sm2)的执行进行了说明。

在图3中,呈现了同一个任务在两个sm中采取不同的任务分配策略产生的差异。该任务需要100个时钟周期完成,在第一种情况下,任务分配策略在sm1上分配了20个周期的任务,并把后面的80个时钟周期的任务交给sm2完成。任务分配方案总共需要80个时钟周期完成。第二种分配方案则把40个时钟周期的任务分配给了sm1,另外的60个时钟周期任务则分配给sm2完成。这种分配方案下整个任务在60个周期内完成执行。看到,后一种方案(60个时钟周期)完成得更快。第二种工作负载分配方案更有效地使用了gpu内部的sm资源,这种方案是更均衡的分配策略。

为了说明两种策略的不同,抽象出了均衡影响因子cb(coefficientofbalance):

式中:cb表示任务的影响因子。其中σ是标准偏差,λ是sm完成时间的平均值;分别计算刚才方案中的cb第一种分配方案的cb值是72.8%,第二种方案的cb值是45.1%。为了找到各个任务均衡影响因子的规律,使用一组cuda基准程序来测试它们的cb值。实验选取了4个典型的cudabenchmark程序,分别为matrixmultiplication、histogram、scalarproducts以及blackscholes。下表详细展示了实验所用到的四个benchmark程序参数。

表1基准测试程序

使用模拟器对这4组基准程序进行测试,并计算了它们的cb值,结果在图4中所示,mm的cb值约为40%,hg的cb值超过了60%。sp和bs的cb值相对较小,sp约为35%,bs的cb值不到5%。任务调度器在应用程序执行期间将监视此类工作负载不平衡,并将未完成的warp从过载的sm重新分配到相邻的sm,更有效地使用sm。这说明了不同任务特性具有不同的均衡影响因子,从实验中总结出任务的均衡影响因子与任务的迁移有正比关系,也就是说某个任务的均衡影响因子越大,它在sm之间进行迁移的可能性越高。影响任务完成的效率并最终反映在能耗方面,观察启发本发明把所有的任务按某种方式进行通盘的排序,然后按排序把任务在sm中进行分配,以此提高每个sm的利用率,达到整体能耗优化的目标。

3、基于任务均衡影响因子与计算资源利用率的调度策略

为了避免任务的迁移,并且实现均衡调度的任务分配策略,找到一种均衡的调度策略。该策略能够克服原来调度策略中的不足。实现(1)尽量避免不必要的sm中任务迁移的现象,以减少由于任务迁移产生的能耗损失。(2)综合使用资源属性与任务特性。目前的方案一般使用sm状态或是任务特性中的一种作为调度策略的依据,把两者结合起来实现更好的能耗优化策略。(3)通过均衡策略对sm中的任务进行合理调度实现gpu的综合能耗优化;这需要充分考虑任务调度的均衡性,更有效地利用sm计算资源。

在异构系统中,对sm分配恰当的待执行的任务是决定系统执行时间的一个重要的因素。因此,通过综合考虑均衡影响因子cb以及sm历史使用频率信息phb把待执行的任务合理地分配到恰当的sm中是可以实现任务的均衡调度和提高sm利用率实现能耗优化的目标的。

根据现存方法的不足,综合利用待执行程序的均衡影响因子cb以及sm使用频率信息phb把,提出了均衡影响因子以及sm使用频率信息的cb-hrv任务调度策略(cb-hrvschedulingscheme)。cb-hrv任务调度算法的思想是依据任务执行的时间将一组任务按照任务的均衡影响因子分配到对应的sm中执行。按照这个策略调度器把任务均衡地分配到各个sm中,有效地避免了任务在各个sm中的迁移,同时,利用sm使用频率信息来提高设备资源的使用效率。通过对待执行任务信息与资源信息的整合应用实现一种能耗优化的任务调度方法。

具体的方法是分析需分配任务的均衡影响因子以及sm的历史利用率,综合利用这两个信息对任务进行均衡有效的调度。首先分析待执行任务的均衡影响因子信息,并且从小到大进行排序。均衡影响因子越小说明该任务在sm上的分布越均匀,不大会受到任务迁移的干扰。相反,如果均衡影响因子越大则说明该任务在sm上的分布越不均匀,受到任务迁移干扰的程度更大。基于这个分析,把比较容易产生迁移现象的任务分配给gpu中利用率比较高的sm而把不大受迁移干扰的任务分配给利用率相对较低的sm。在总上减少了任务在sm中的迁移现象,并同时提高了sm的利用率,提高整体gpu的能耗优化策略。

在具体实现上,形成两个队列,如图5所示。第一个队列是按照任务的均衡影响因子cb由大到小排序的队列。任务的均衡影响因子越大,表明该任务受迁移干扰的程度也越大;第二个队列是按sm的使用频率由大到小排序的队列phb。使用频率phb值越高,说明该sm的使用频率越高,执行效率也越高。接着,把均衡影响因子最大的任务分配给执行效率最高的sm执行,由此降低由于任务迁移造成的影响。按照均衡影响因子大小依次把任务分配给由大到小排序的sm执行,实现总体的优化策略。

通过把均衡影响因子高的任务(迁移度比较高的任务)配置到执行效率更高的sm中(phb值更高),可以获得更好的能耗效果。具体步骤是,在获取待执行任务的时间信息情况下,首先依据任务的影响因子信息对任务进行排序,其次获得sm的历史使用频率并排序。然后依照每个sm的任务队列记录的任务编号分配给到对应的sm中。

4、cb-hrv任务调度策略的调度算法

cb-hrv任务调度算法具体的实施步骤如下:

(1)计算出各个任务的平衡影响因子cb,计算出各个sm资源的使用率phb。

(2)按照任务的平衡影响因子从大到小的顺序给各个任务重新排序,形成任务队列。

(3)按照sm资源的使用率phb从大到小的顺序给各个sm重新排序。

(4)把排序的任务队列依次匹配到排序的sm队列中。

cb-hrv算法需要形成两个队列,一个是历史使用频率队列,另一个是任务均衡影响因子。并对它们进行分别排序。用taskbalance[]表示任务均衡影响因子队列,并用sorttask(taskbalance[i]函数对该队列降序排序。用smratio[]表示历史使用频率队列,并用sortsm(smratio[i])函数对该队列进行降序排序。对于排序后的sm历史使用频率phb,使用数组smrationindex[]来存放。对于排序后的任务均衡影响因子序列,使用数组taskcbindex[]进行存储。表2cb-hrv调度算法的伪代码。

表2均衡影响因子-设备利用率任务调度算法

cb-hrvtaskschedulingapproach

对算法的说明如下:

(1)第3-5行,首先用calculatebalance(p[i])函数计算出各个任务的平衡影响因子cb,并存放在taskbalance[i]数组里,接着第6-8行用calculateratio(sm[i])计算出各个sm资源的使用率ratiovalue,并存放在smratio[i]数组里。

(2)第9行使用sorttask(taskbalance[i])按照影响因子cb值从大到小的顺序给各个任务重新排序,并存放在taskcbindex[]数组里,形成任务队列。第10行用sortsm(smratio[i])函数按照sm使用率从大到小的顺序给各个sm重新排序,并把结果存放在smrationindex[]数组里。

(3)第11-31行把排序的任务队列依次匹配到排序的sm队列中。按照任务的数量number(p)分成两种情况。第一种情况是任务数量不大于sm的数量,第11-18行处理第一种情况。直接把排序后的任务定位到相应地sm上。首先用函数issmfree(i)判断参加分配的sm是否可以。如果sm可以参加分配,则利用函数mappingsm[i](p[i])把任务分配到相应地sm上。第二种情况是任务数量大于sm的数量,第19-28行处理第二种情况。这种情况则把任务分成若干组(每组的数量为numsm),仍然利用函数mappingsm[j](p[i])把任务分配到相应地sm上。第29-30行释放两个索引数组,以便在下一次分配时使用。

下面结合实验对本发明的应用效果作详细的描述。

为了能够比较rad、dfb、phb以及cb-hrv调度方法,对四种调度方法进行了性能对比分析。实验分为3个部分,第一个部分为实验设计和实验环境参数说明;第二个部分为cb-hrv算法均衡性分析,本发明对比了rad、dfb、phb以及cb-hrv四种调度算法在sm上的任务分配的均衡特征,并进行了分析。第三个部分为cb-hrv算法能耗分析,本发明对比分析了rad、dfb、phb以及cb-hrv调度算法的能耗性能。

1、实验设计与实验参数说明

(1)实验的实施步骤如下:

(a)获得程序在各个gpu上的时间。用rad、dfb、phb以及cb-hrv调度方法依次运行20个测试程序,并获得4个sm上的执行时间图,由此计算出每个sm上执行所占的时间比例。

(b)用rad、dfb、phb以及cb-hrv调度方法依次运行以上测试程序,并利用功率计通过测量电流及其输入电压来测量整个器件的功耗,从而得到四种不同调度方法的功耗数据。

(2)实验环境

本实验的软硬件实验环境如表3所示。异构系统的硬件实验环境采用的csm是i5-7500处理器和4块nvidiageforcegtx1060显卡。硬件实验环境中的系统内存为8gb,gpu内存为6gb。gpu采用的架构是pascal,它拥有10个sm(streamingmultiprocessors,每个sm包含了128个smda核,总共1280个smda核,可提供4.4tflops浮点运算能力。软件实验环境为windows10,vs2015以及smda9.2。下表是详细描述。

表3实验中所用到的软硬件环境

2、cb-hrv调度算法均衡性分析

本发明在gpu上分别运行20个matrixmultiplication、histogram、scalarproducts以及blackscholes测试程序,并获得每一种情况在4个sm上的执行1秒的执行时间图。

(1)matrixmultiplication测试程序分析

本发明对4个sm任务执行时间的分配情况进行展示。图5展示了20个matrixmultiplication及其所对应的输入范围情况下的4个sm在一秒内的任务执行时序图。

为了更直观的研究matrixmultiplication在4个sm中执行时间所占比例,本发明用饼图进行展示。

由图6中可以看出,rad方法中的sm最大的执行时间占整个执行时间的图38.71%,sm最小的执行时间占整个执行时间的14.66%,两者相差24.05%的执行时间。dfb方法中的sm最大的执行时间占整个执行时间的34.79%,sm最小的执行时间占整个执行时间的14.66%,两者相差17.64%的执行时间。phb方法中的sm最大的执行时间占整个执行时间的34.79%,sm最小的执行时间占整个执行时间的18.26%,两者相差16.53%的执行时间。cb-hrv方法中的最大的执行时间占整个执行时间的27.67%,最小的执行时间占整个执行时间的23.06%,两者相差4.61%的执行时间。可以明看出基于cb-hrv调度算法在4个sm上的任务分布比其他三种调度更均衡。

(2)histogram测试程序分析

本发明对4个sm任务执行时间的分配情况进行展示。图6展示了20个histogram及其所对应的输入范围情况下的4个sm在一秒内的任务执行时序图。为了更直观的研究histogram在4个sm中执行时间所占比例,本发明用饼图进行了展示。

由图7中可以看出,rad方法中的sm最大的执行时间占整个执行时间的图32.88%,sm最小的执行时间占整个执行时间的16.78%,两者相差16.10%的执行时间。dfb方法中的sm最大的执行时间占整个执行时间的31.78%,sm最小的执行时间占整个执行时间的18.93%,两者相差12.85%的执行时间。phb方法中的sm最大的执行时间占整个执行时间的30.76%,sm最小的执行时间占整个执行时间的20.64%,两者相差9.11%的执行时间。cb-hrv方法中的最大的执行时间占整个执行时间的25.12%,最小的执行时间占整个执行时间的24.85%,两者相差仅为0.27%的执行时间。可以明显的看出基于cb-hrv调度算法在4个sm上的任务分布比其他三种调度更均衡。

(3)scalarproducts测试程序分析

本发明对4个sm任务执行时间的分配情况进行展示。图6展示了20个scalarproduct及其所对应的输入范围情况下的4个sm在一秒内的任务执行时序图。为了更直观的研究测试程序在4个sm中执行时间所占比例,本发明用饼图进行了展示。

由图8中可以看出,rad方法中的sm最大的执行时间占整个执行时间的图38.50%,sm最小的执行时间占整个执行时间的15.29%,两者相差23.21%的执行时间。dfb方法中的sm最大的执行时间占整个执行时间的35.57%,sm最小的执行时间占整个执行时间的19.35%,两者相差16.22%的执行时间。phb方法中的sm最大的执行时间占整个执行时间的34.58%,sm最小的执行时间占整个执行时间的19.32%,两者相差15.26%的执行时间。cb-hrv方法中的最大的执行时间占整个执行时间的29.23%,最小的执行时间占整个执行时间的21.43%,两者相差7.80%的执行时间。可以看出基于cb-hrv调度算法在4个sm上的任务分布比其他三种调度更均衡。

(4)blackscholes测试程序分析

本发明对4个sm任务执行时间的分配情况进行展示。图6展示了20个blackscholes及其所对应的输入范围情况下的4个sm在一秒内的任务执行时序图,如图9。

为了更直观的研究测试程序在4个sm中执行时间所占比例,本发明用饼图进行了展示。

由图10中可以看出,rad方法中的sm最大的执行时间占整个执行时间的图38.54%,sm最小的执行时间占整个执行时间的13.82%,两者相差24.72%的执行时间。dfb方法中的sm最大的执行时间占整个执行时间的34.61%,sm最小的执行时间占整个执行时间的16.92%,两者相差17.69%的执行时间。phb方法中的sm最大的执行时间占整个执行时间的34.42%,sm最小的执行时间占整个执行时间的17.42%,两者相差17.00%的执行时间。cb-hrv方法中的最大的执行时间占整个执行时间的32.32%,最小的执行时间占整个执行时间的18.36%,两者相差13.96%的执行时间。可以看出基于cb-hrv调度算法在4个sm上的任务分布比其他三种调度更均衡。

从4种测试程序的均衡性分析,可以从数据中得出cb-hrv调度方法在每种测试中相较于其他三种调度方案的均衡性都是最好的。其改善效果的的顺序依次是histogram,matrixmultiplication,scalarproducts以及blackscholes,这与四种测试程序的任务迁移特性是吻合的。histogram改善效果最好的原因是由于histogram测试程序是4个测试程序中任务迁移现象最为明显的。

从执行时间的比率上来看,cb-hrv调度较rad、dfb和phb调度对任务的分配均匀且合理。这验证了cb-hrv调度方法的均衡特性,这种均衡性可以有效的减少任务在sm的迁移现象,并且更有效地利用所有的sm的计算能力。最终,这种均衡特性将有效减小gpu的能耗。

3、cb-hrv调度算法能耗分析

为了验证cb-hrv调度算法的能耗特性,本发明测量了不同调度策略和不同输入条件下四个基准程序的平均能耗。对rad,dfb和phb调度策略的能耗特性进行了比较分析。表4详细展示了实验所用到的四个benchmark程序参数。

表4

本发明对每个执行序列本发明使用了18种情况进行仿真。由于这四个程序对于能耗和性能对调度程序有很强的影响,因此本发明多次测试了四个程序中的所有的序列。然后,对每种情况使用了平均的数值进行比较。对于能耗的测量,在本实验中,本发明使用了功率计作为系统能耗测量工具。它测量的能耗为输入到异构系统的能耗。

在实验中,本发明选择了典型的调度方法进行比较。这些方法分别是rad、dfb和phb。在实验中,由于rad和dfb调度方式的性能及系统能耗受待执行程序的执行顺序较大。为此,采用了多次执行求平均值的方法获取。由于本实验的实验环境是系统中所有的gpu都是相同的,因此,程序执行的顺序对对phb方法同样产生了影响,在实验中同样采用了多次执行求平均值的方法获取。在实验中,本实验的cb-hrv实现方法如下,首先对本实验所提出的方法在vs2015中进行了实现;在得到cb-hrv输出结果后,利用输出后得到的程序序列重新编程进行运行。

为了验证cb-hrv调度算法的能耗特性,本发明把四个benchmark程序在不同的调度策略以及不同的输入情况下进行平均能耗的测量。所对比的方法是rad、dfb和phb调度策略,调度策略所使用的输入情况考虑了典型的任务数以及每个任务的典型输入情况。下表5是三个测试中rad、dfb、phb以及cb-hrv调度的能耗情况。

表5

为了更清楚的进行对比,本发明用柱状图分别对三次测试的数据进行展示,图中的横坐标表示不同的调度方法,纵坐标表示消耗的能耗。

测试1的输入任务数为24,能耗测量结果见图13。在图中可以看到rad的方法所消耗的平均能耗最多,dfb和phb所消耗的平均能耗相当,cb-hrv所消耗的能耗最小图13显示了各种方法的能量消耗。总体而言,与基于24个输入任务及其相应输入范围的rad方法相比,cb-hrv方法实现了平均节能13.53%;相较dfb平均节能5.16%;相较phb方法,cb-hrv方法平均节省了5.60%的能量。

测试2的输入任务数为40,图14显示rad方法消耗最多的能量。dfb和phb在能量消耗量次之,与rad方法相比,cb-hrv方法实现了平均节能11.41%;相较dfb平均节能5.14%;相较phb方法,cb-hrv方法平均节省了3.93%的能量。

测试3的能耗测量结果见图15,rad方法消耗的能量最多,dfb和phb具有相同的平均能量消耗,而cb-hrv消耗的能量最少。与rad方法相比,cb-hrv方法实现了平均节能7.97%;相较dfb平均节能4.95%;相较phb方法,cb-hrv方法平均节省了4.48%的能量。

为了更清晰的显示cb-hrv方法的能耗提升效果,本发明用提升率对比图对以上三个实验的能耗效果进行了表示,如图16所示。

综上所述,在不同的任务数和不同输入范围情况的实验下,本实验提出的cb-hrv方法较rad、dfb和phb能够均匀分配任务。从能耗效果上看,较rad方法平均节能10.97%,较dfb平均节能5.09%,较phb平均节能4.67%。

rad方法之所以平均消耗的能耗最多在于只考虑了任务的数量,未考虑sm的状态及任务的状态因素,造成了仅考虑任务数而没考虑sm的状态及执行时间进而消耗了较多的能耗。dfb和phb所消耗的平均能耗几乎相当,原因是于phb方法在相同gpu的环境下导致了phb调度方法退化为dfb方法。由于dfb和phb考虑了系统中的sm的使用状态,因此在任务分配上要好于rad方法,在图中dfb方法和phb方法的能耗消耗要小于rad方法。

从图中可以看出,cb-hrv方法比其他的三种方法的节能效果更好,这归功于cb-hrv算法的均衡性。由于任务在各个sm的分配更合理有效,减小了任务在sm之间的迁移现象,使得新的算法取得了更好的能耗优化效果。实验结果说明了本实验提出的cb-hrv方法更具有任务均衡特性,能耗性能也更好。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

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