会员体验
专利管家(专利管理)
工作空间(专利管理)
风险监控(情报监控)
数据分析(专利分析)
侵权分析(诉讼无效)
联系我们
交流群
官方交流:
QQ群: 891211   
微信请扫码    >>>
现在联系顾问~
首页 / 专利库 / 截止时间 / 基于NSGA2的带截止时间约束的处理器功耗感知调度方法

基于NSGA2的带截止时间约束的处理器功耗感知调度方法

申请号 CN201811381725.4 申请日 2018-11-20 公开(公告)号 CN109753137A 公开(公告)日 2019-05-14
申请人 北京航空航天大学; 发明人 祝明发; 李昂鸿; 肖利民; 阮利; 丁树勋; 殷成涛; 苏书宾;
摘要 本发明提出一种基于NSGA2的带截止时间约束的处理器功耗感知调度算法,该方法基于多目标优化的思想,提出调度功耗和调度时间两个优化目标,在保证任务完成时间不会超过截止时间的同时降低处理器功耗。为了比较可行域中不同解之间的优劣,我们提出了一种计算任务约束度的方法,并使用任务约束度定义了Pareto占优规则来比较不同解之间的优劣;此外我们考虑了任务通信同步以及处理器运行队列的问题,提出一种改进的任务调度模型;最后我们基于NSGA2算法的快速非占优排序以及拥挤算子实现了对调度功耗和调度时间的优化。
权利要求

1.一种基于NSGA2的带截止时间约束的处理器功耗感知调度方法,其特征在于,使用任务约束度定义Pareto占优规则来比较可行域中不同解之间的优劣,采用在考虑了任务通信同步与处理器运行队列后的改进的任务调度模型,通过基于NSGA2算法的快速非占优排序以及拥挤算子实现调度功耗和调度时间两个目标的优化,在保证任务完成时间不超过截止时间的同时降低处理器功耗。

2.根据权利要求1所述的方法,其特征在于,主要包括以下几个步骤:步骤1:初始化种群P=Pinit,Pinit表示用于生成解的初始种群;

步骤2:使用快速非占优排序对P进行排序;

步骤3:使用拥挤算子计算P中每个个体的拥挤度;

步骤4:对种群P进行选择、交叉和变异操作,得到下一代临时种群Ptemp;

步骤5:将种群P和临时种群Ptemp进行合并,得到新种群P=P+Ptemp,然后使用快速非占优排序对得到的新种群P进行一次排序;

步骤6:按照每个个体的拥挤度从大到小选择P中的个体到一个新种群Pnew,直到P中的个体数等于Pnew的个体数为止;

步骤7:将新种群Pnew作为下一代种群,即P=Pnew;

步骤8:重复步骤4-7,直到种群代数达到最大代数为止,最后种群中的解即是调度算法的最优解。

3.根据权利要求2所述方法,其特征在于,所述步骤2中的快速非占优排序需要使用Pareto占优规则,规则的具体步骤如下:步骤2.1:对于两个解A和B,计算约束度FA和FB;

步骤2.2:如果FA=0且FB>0,则A相对B占优;

步骤2.3:如果FA>0且FB>0且FA<FB,则A相对B是占优的;

步骤2.4:如果FA=0且FB=0,计算A和B的调度时间tA,tB以及调度功耗pA,pB;计算条件cond=tA≤tB∧pA≤pB∧(tA<tBVpA<pB),如果cond为真则A相对B是占优的;

步骤2.5:如果以上条件均不满足,则A相对B不是占优的。

4.根据权利要求2所述方法,其特征在于,所述步骤2中计算每个解的调度时间和调度功耗使用了改进的任务调度模型,在改进的任务调度模型中,每个任务拥有开始时间和完成时间两个属性;定义任务i的开始时间为STi,完成时间为FTi,所在处理器的就绪时间为PEi,在考虑了任务通信同步以及处理器运行队列后,任务的开始时间表示为:其中nj∈pred(ni)表示任务j是i的前继任务,Cj,i表示任务j到任务i的通信时间;

任务的完成时间表示为:

FTi=STi+wi

其中wi表示任务i的执行时间;

处理器的就绪时间表示为:

其中nr-1表示运行队列中当前任务的前一个任务,nk∈succ(nr-1)表示任务nk为任务nr-1的后继任务,C表示通信时间;

当运行队列为空时,处理器立即开始执行任务,处理器的就绪时间为0;当运行队列不为空时,处理器的就绪时间取决于运行队列前一个任务的完成时间以及该任务的通信时间。

5.根据权利要求2所述方法,其特征在于,所述步骤3中使用了拥挤算子计算个体的拥挤度,拥挤度定义为个体周围个体的密度;假设快速非占优排序中生成的一个前沿面为F,前沿面F的第i个个体拥挤度为Ci,某个优化目标的最大值为Omax,最小值为Omin,则个体拥挤度定义为:由于存在调度功耗P和调度时间T两个目标,因此在计算拥挤度时需要进行两次;步骤如下:步骤1:将前沿面F的所有个体的拥挤度初始化为0;

步骤2:按照调度功耗对前沿面F中的个体从小到大排序;

步骤3:将F中第一个个体和最后一个个体的拥挤度设置为Pmax;

步骤4:从第二个个体开始到倒数第二个个体,计算每个个体的拥挤度步骤5:按照调度时间对前沿面F中的个体从小到大排序;

步骤6:将F中第一个个体和最后一个个体的拥挤度设置为Tmax;

步骤7:从第二个个体开始到倒数第二个个体,计算每个个体的拥挤度

6.根据权利要求2所述方法,其特征在于,所述步骤4使用了选择、交叉和变异操作生成下一代种群,选择算子使用锦标赛算法,选取k个个体中适应度最高的个体(默认k取3),个体适应度结合了个体拥挤度和快速非占优中的分级,假设个体A和个体B的等级为A.rank和B.rank,拥挤度为A.crowding_distance和B.crowding_distance,则A适应度比B要好当且仅当A.rankB.crowding_distance。

选择算子首先从种群P中随机选择k个个体,计算每个个体的拥挤度,然后根据个体适应度从k个个体中选出最佳个体;交叉算子使用经典的两点交叉算法,首先从个体的调度序列中随机选择两个任务t1和t2,然后将个体A和B的t1和t2之间的任务进行交换,包括每个任务分配的电压等级和处理器id,得到新个体A′和B′;变异算子使用单点变异算法,首先随机选择个体A调度序列中的一个任务,然后将任务的处理器id和电压等级随机变为一个新的值,得到新个体A′。

说明书全文

基于NSGA2的带截止时间约束的处理器功耗感知调度方法

技术领域

[0001] 本发明属于计算机科学技术领域,尤其涉及一种基于NSGA2的带截止时间约 束的处理器功耗感知调度方法。

背景技术

[0002] 随着计算机芯片制造技术的发展,现代多核处理器已经被广泛用于各种各样 的计算机系统中。相比早期的单核处理器只能同时处理一个任务,现代的多核处 理器可以同时执行多个任务,在任务并发上的性能有了极大的提高。然而随着多 核处理器性能的提升,处理器上集成的晶体管数量也越来越多,因此处理器产生 的热量以及功耗也会显著增加。处理器功耗的上升会消耗大量的电能,使得相关 的维护费用增加,而处理器运行产生的热量则会导致计算机主板的老化,降低芯 片的使用寿命,因此处理器的功耗与发热问题已经成为限制处理器发展的主要因 素。为了改善处理器的功耗与发热问题,可以使用更加先进的制程工艺制作处理 器芯片,这样可以在提高性能的同时有效降低处理器的功耗和发热。然而处理器 的制程工艺是有极限的,在工艺达到一定极限后如果再继续提高工艺,处理器内 部电路之间会发生信号干扰,使得处理器难以稳定地工作。
[0003] 由于处理器制作工艺上的困难,迫使人们不得不寻找其他可以降低处理器功 耗的方法,随着人们对处理器功耗问题研究的深入,许多处理器厂商都推出了自 己的功耗优化技术来缓解功耗问题。目前主流的功耗优化技术有DVFS,Power Gating以及Clock Gating等。DVFS(Dynamic Voltage and Frequency Scaling,动 态电压频率调节)是利用处理器动态功耗与供给电压、工作频率的关系,通过动 态调节处理器工作频率或电压来达到控制处理器动态功耗的目的,是目前最被广 泛使用的功耗优化技术之一;功耗门控(Power Gating)和时钟门控(Clock Gating) 是通过把处理器无用的电路或时钟给关闭,从而达到节省电能的效果。处理器功 耗的降低意味着处理器性能的降低,这意味着在降低处理器功耗的同时,处理器 执行任务的时间会增加。每个任务通常会带有一个截止截止时间(Deadline)属 性,需要保证每个任务必须在截止截止时间之前完成。因此仅仅以降低处理器功 耗为目标对任务进行调度可能导致某些任务完成时间超过截止时间。

发明内容

[0004] 为了解决上述提出的问题,本发明针对现代多核处理器调度时产生的功耗较 大这一问题进行了深入研究,为了解决降低处理器功耗时任务可能无法按时完成 的问题,提出一种基于NSGA2的带截止时间约束的功耗感知调度方法,该方法基 于多目标优化的思想,提出调度功耗和调度时间两个优化目标,可以在保证每个 任务满足截止时间的同时最大限度降低处理器功耗,达到节省功耗的目的。
[0005] 本发明的技术方案是:
[0006] 1.基于NSGA2的带截止时间约束的处理器功耗感知调度方法,其特征在于, 使用任务约束度定义Pareto占优规则来比较可行域中不同解之间的优劣,采用在 考虑了任务通信同步与处理器运行队列后的改进的任务调度模型,通过基于 NSGA2算法的快速非占优排序以及拥挤算子实现调度功耗和调度时间两个目标 的优化,在保证任务完成时间不会超过截止时间的同时降低处理器功耗。
[0007] 2.主要包括以下步骤:
[0008] 步骤1:初始化种群P=Pinit,Pinit表示用于生成解的初始种群;
[0009] 步骤2:使用快速非占优排序对P进行排序;
[0010] 步骤3:使用拥挤算子计算P中每个个体的拥挤度;
[0011] 步骤4:对种群P进行选择、交叉和变异操作,得到下一代临时种群Ptemp;
[0012] 步骤5:将种群P和临时种群Ptemp进行合并,得到新种群P=P+Ptemp, 然后使用快速非占优排序对得到的新种群P进行一次排序;
[0013] 步骤6:按照每个个体的拥挤度从大到小选择P中的个体到一个新种群Pnew, 直到P中的个体数等于Pnew的个体数为止;
[0014] 步骤7:将新种群Pnew作为下一代种群,即P=Pnew;
[0015] 步骤8:重复步骤4-7,直到种群代数达到最大代数为止,最后种群中的解 即是调度算法的最优解。
[0016] 3.其中,步骤2中的快速非占优排序使用了Pareto占优规则,规则的具体步 骤如下:
[0017] 步骤2.1:对于两个解A和B,计算约束度FA和FB;
[0018] 步骤2.2:如果FA=0且FB>0,则A相对B占优;
[0019] 步骤2.3:如果FA>0且FB>0且FA<FB,则A相对B是占优的;
[0020] 步骤2.4:如果FA=0且FB=0,计算A和B的调度时间tA,tB以及调度功 耗pA,pB。计算条件cond=tA≤tB∧pA≤pB∧(tA<tB∨pA<pB),如果cond 为真则A相对B是占优的;
[0021] 步骤2.5:如果以上条件均不满足,则A相对B不是占优的。
[0022] 4.其中,步骤2中使用了改进的任务调度模型,在改进的任务调度模型中, 每个任务拥有开始时间和完成时间两个属性;定义任务i的开始时间为STi,完 成时间为FTi,所在处理器的就绪时间为PEi,在考虑了任务通信同步以及处理 器运行队列后,任务的开始时间表示为:
[0023]
[0024] 其中nj∈pred(ni)表示任务j是i的前继任务,Cj,i表示任务j到任务i的通 信时间;
[0025] 任务的完成时间表示为:
[0026] FTi=STi+wi
[0027] 其中wi表示任务i的执行时间;
[0028] 处理器的就绪时间表示为:
[0029]
[0030] 其中nr-1表示运行队列中当前任务的前一个任务,nk∈succ(nr-1)表示任务 nk为任务nr-1的后继任务,C表示通信时间;
[0031] 当运行队列为空时,处理器立即开始执行任务,处理器的就绪时间为0;当 运行队列不为空时,处理器的就绪时间取决于运行队列前一个任务的完成时间以 及该任务的通信时间。
[0032] 5.其中,步骤3中使用了拥挤算子计算个体的拥挤度,拥挤度定义为个体周 围个体的密度。假设快速非占优排序中生成的一个前沿面为F,前沿面F的第i 个个体拥挤度为Ci,某个优化目标的最大值为Omax,最小值为Omin,则个体拥挤 度定义为:
[0033]
[0034] 由于存在调度功耗P和调度时间T两个目标,因此在计算拥挤度时需要进 行两次。步骤如下:
[0035] 步骤1:将前沿面F的所有个体的拥挤度初始化为0;
[0036] 步骤2:按照调度功耗对前沿面F中的个体从小到大排序;
[0037] 步骤3:将F中第一个个体和最后一个个体的拥挤度设置为Pmax;
[0038] 步骤4:从第二个个体开始到倒数第二个个体,计算每个个体的拥挤度 [0039] 步骤5:按照调度时间对前沿面F中的个体从小到大排序;
[0040] 步骤6:将F中第一个个体和最后一个个体的拥挤度设置为Tmax;
[0041] 步骤7:从第二个个体开始到倒数第二个个体,计算每个个体的拥挤度 [0042] 6.其中,步骤4使用了选择、交叉和变异操作生成下一代种群,选择算子使 用锦标赛算法,选取k个个体中适应度最高的个体(默认k取3),个体适应度 结合了个体拥挤度和快速非占优中的分级,假设个体A和个体B的等级为A.rank  和B.rank,拥挤度为A.crowding_distance和B.crowding_distance,则A适应度比 B要好当且仅当A.rankB.crowding_distance。选择算子首先从种群P中随机选择k 个个体,计算每个个体的拥挤度,然后根据个体适应度从k个个体中选出最佳个 体;交叉算子使用经典的两点交叉算法,首先从个体的调度序列中随机选择两个 任务t1和t2,然后将个体A和B的t1和t2之间的任务进行交换,包括每个任务分 配的电压等级和处理器id,得到新个体A′和B′;变异算子使用单点变异算法,首 先随机选择个体A调度序列中的一个任务,然后将任务的处理器id和电压等级 随机变为一个新的值,得到新个体A′。
[0043] 本发明的技术效果是:
[0044] 本发明提出的一种带截止时间约束的处理器功耗感知调度方法,与现有技术 相比,其主要优点是:
[0045] 改进的调度模型:参考了实际的处理器,考虑了任务间通信同步与运行队列 的问题,提出了一种改进的调度模型。该模型相比传统的调度具备更强的真实性, 因此算法的可行性更强。
[0046] 提出了任务约束度:提出了任务约束度的计算方法,在遇到不可行的调度时 不是直接放弃掉这次调度,而是使用任务约束度来描述调度的可行性。这样可以 使得解逐渐收敛到可行域中,使得最终的解都是可行的。
[0047] 使用多目标优化的思想进行调度:传统的调度一般只考虑了调度时间或调度 功耗,由于处理器功耗的减少会导致调度的时间增加,因此无法简单地同时对时 间和功耗两个目标做优化。在本发明中把该问题归纳到多目标优化问题,使用多 目标优化的方法同时对调度时间和功耗进行优化,可以在调度功耗和时间上取得 较好效果。
[0048] 和传统的功耗优化调度算法区别在于:
[0049] (1)优化目标不同:传统的功耗优化调度算法主要考虑的是降低处理器功 耗,没有考虑调度时间方面的优化。我们使用了多目标优化方法同时对调度功耗 和时间进行优化,可以达到较好地效果。
[0050] (2)调度模型不同:传统的调度没有考虑任务通信同步以及运行队列的问题。 我们在考虑了上述因素后提出了一种改进调度模型。

附图说明

[0051] 图1是本发明方法的流程图。
[0052] 图2是位于不同处理器上的任务通信图。
[0053] 图3是任务的截止时间示意图。
[0054] 图4是调度编码示意图。
[0055]

具体实施方式

[0056] 为使本发明的目的、技术方案和优点表达地更加清楚明白,以下结合附图和 具体实施步骤对本发明进行详细描述,但不作为对本发明的限定。
[0057] 本发明提出的基于NSGA2的带截止时间约束的处理器功耗感知调度方法基 于NSGA2算法,为了比较可行域中不同解之间的优劣,我们提出了一种计算任 务约束度的方法,并使用任务约束度定义了Pareto占优规则来比较不同解之间的 优劣。此外我们考虑了任务通信同步以及处理器运行队列的问题,提出一种改进 的任务调度模型。最后我们基于NSGA2算法的快速非占优排序以及拥挤算子实 现了对调度功耗和调度时间的优化,在保证任务截止时间的同时降低处理器功耗。
[0058] 如图1所示,是本发明方法的流程图。包括步骤如下:
[0059] 步骤1:初始化种群P=Pinit,Pinit表示用于生成解的初始种群;
[0060] 步骤2:使用快速非占优排序对P进行排序;
[0061] 步骤3:使用拥挤算子计算P中每个个体的拥挤度;
[0062] 步骤4:对种群P进行选择、交叉和变异操作,得到下一代临时种群Ptemp;
[0063] 步骤5:将种群P和临时种群Ptemp进行合并,得到新种群P=P+Ptemp,然 后使用快速非占优排序对得到的新种群P进行一次排序;
[0064] 步骤6:按照每个个体的拥挤度从大到小选择P中的个体到一个新种群Pnew, 直到P中的个体数等于Pnew的个体数为止;
[0065] 步骤7:将新种群Pnew作为下一代种群,即P=Pnew;
[0066] 步骤8:重复步骤4-7,直到种群代数达到最大代数为止,最后种群中的解 即是调度算法的最优解。
[0067] 1.任务功耗计算
[0068] 在现代处理器中,处理器功耗主要由动态功耗和静态功耗组成。处理器的动 态功耗与处理器供给电压和工作频率有关,可以表示为:
[0069]
[0070] 其中CL是电路的负载电容,f是处理器的工作频率,N0→1表示电路的信号翻 转率,Vdd表示处理器的工作电压。一般我们认为N0→1和CL是一个常量,在处理 器工作期间保持不变,因此可以发现处理器的动态功耗主要与处理器的工作电压 和工作频率有关。我们假设处理器的阈值电压为Vt,则处理器的工作频率和工作 电压的关系可以表示为:
[0071]
[0072] 其中k是一个与电路相关的参数。对于一个任务来说,假设任务执行所需的 时钟周期为nc,且在调整处理器电压和频率的时候保持不变,则任务的执行时钟 周期可以表示为:
[0073] nc=ft
[0074] t表示任务的执行时间,f表示任务的执行频率。因此结合上面的公式,一个 任务在执行期间产生的动态功耗可以表示为:
[0075]
[0076] 因此,我们可以认为一个任务的动态功耗与其供给电压的平方成正比。所以 我们假设处理器的最大供给电压为Vmax,阈值电压为Vt,任务的最大电压下的执 行时间为tmin,则经过DVFS调整后的任务在新供给电压Vdd下的执行时间为:
[0077]
[0078] 处理器执行任务产生的功耗可以表示为:
[0079]
[0080] 所以在估算每个任务在特定电压下的执行时间和执行功耗时我们不必知道 每个任务实际执行了多少条指令,而可以根据任务在最大电压下的执行时间和功 耗来进行估算。
[0081] 2.改进的任务调度模型
[0082] 在传统的任务调度问题上,常用的调度算法有基于复制的任务调度和基于列 表的任务调度。基于复制的任务调度算法通过把相同的任务复制到同一个处理器 核心上,以减少任务间的通信开销。基于列表的任务调度通过构造每个任务的优 先级,按照列表顺序对每个任务进行调度,具有调度复杂度低,容易实现的优点。 为了尽可能准确地描述任务调度的过程,我们做出以下假设:
[0083] (1)每个处理器同一时间只能执行一个任务。
[0084] (2)任务是非抢占式的,如果一个任务已经用完了分配的处理器时间片, 则必须等待。
[0085] (3)每个处理器都有一个运行队列保持等待运行的任务,每次处理器从中 调出一个任务执行。
[0086] (4)任务的通信过程是传输任务执行得到数据的过程,因此任务的执行和 通信不能同时进行。
[0087] (5)任务在执行完后如果还在发送数据,处理器不能执行下一个任务,必 须等到该任务传输完成后才能开始执行下一个任务。
[0088] (6)任务对任务发送数据是同步进行的,因此接收数据的任务必须接收到 所有数据后才能执行。
[0089] 在任务调度中,每个任务拥有开始时间和完成时间两个属性。任务开始时间 不仅与任务本身的执行时间、任务间的通信时间有关系,还与处理器运行队列的 就绪时间有关(可以开始执行下一个任务的时间)。我们定义任务i的开始时间 为STi,完成时间为FTi,所在处理器是的就绪时间为PEi,在考虑了任务通信同 步以及处理器运行队列后,任务的开始时间可以表示为:
[0090]
[0091] 其中nj∈pred(ni)表示任务j是i的前继任务,Cj,i表示任务j到任务i的通 信时间。任务的完成时间可以表示为:
[0092] FTi=STi+wi
[0093] 其中wi表示任务i的执行时间。处理器的就绪时间可以表示为:
[0094]
[0095] 其中nr-1表示运行队列中当前任务的前一个任务,nk∈succ(nr-1)表示任务 nk为任务nr-1的后继任务,C表示通信时间。因此当运行队列为空时处理器可以 立即开始执行任务,因此就绪时间为0;当运行队列不为空时,处理器的就绪时 间取决于运行队列前一个任务的完成时间以及该任务的通信时间。
[0096] 3.任务约束度以及带约束的Pareto占优规则
[0097] 在实际的任务调度中,每个任务的完成时间是有约束条件的,往往存在一些 任务需要在指定的时间内完成,我们称这种任务为截止时间完成任务。由于降低 处理器频率或工作电压可以降低处理器运行时的动态功耗,但相对的任务的执行 时间会延长,这可能导致截止时间任务无法在规定的时间内完成。为了满足任务 的截止时间要求,人们通常采用惩罚因子对任务的调度功耗进行调整,使调度时 间逐渐收敛到可行域中。惩罚因子可以表示为任务约束度的一个函数,当任务完 成时间超过截止时间时,惩罚因子会对调度功耗进行放大。在本发明中,我们使 用任务约束度来描述一次调度的可行程度。假设任务i的截止时间为di,完成时 间为FTi,则任务i的约束度可以表示为:
[0098] Fi=max{0,FTi-di}
[0099] 可以看出约束度描述的是任务完成时间与截止时间之间的差值,如果任务完 成时间超过了截止时间,则约束度大于0;若没有超过则约束度为0。因此整个 调度的约束度可以表示为:
[0100]
[0101] 当且仅当Ftotal=0时表明所有的任务完成时间都没有超过截止时间,因此 这次调度是可行的。我们定义一个有向无环图G表示调度的任务集,每个任务 表示为Ti,任务与任务之间存在数据依赖,每个任务集只有一个入口任务和多个 出口任务,分别表示为Tenter和Texit。每个出口任务存在一个截止时间d,出口任 务的完成时间不能超过截止时间。因此整个任务集的调度时间可以表示为:
[0102] tsched=max{FT(Texit)}
[0103] 假设compute表示任务的计算功耗,com表示通信功耗,则整个任务调度功 耗可以表示为:
[0104]
[0105] 因此基于多目标优化的调度问题可以表示为:
[0106]
[0107] 由于传统的遗传算法等方法只能优化一个目标函数,但在本问题中存在调度 时间和调度功耗两个目标。此外要满足调度是可行,必须满足调度约束度为0. 因此该问题属于带约束条件的多目标优化问题,可以表示为:
[0108]
[0109] 为了解决上述带约束条件的多目标优化问题,本发明基于上面提到的任务约 束度,提出一种带约束的Pareto占优规则,可以使得算法中产生的解逐渐向可行 域收敛,最终所有的解都是可行的。带约束的Pareto占优规则步骤如下:
[0110] 步骤1:对于两个解A和B,计算约束度FA和FB;
[0111] 步骤2:如果FA=0且FB>0,则A相对B占优;
[0112] 步骤3:如果FA>0且FB>0且FA<FB,则A相对B是占优的;
[0113] 步骤4:如果FA=0且FB=0,计算A和B的调度时间tA,tB以及调度功耗 pA,pB。计算条件cond=tA≤tB∧pA≤pB∧(tA<tB∨pA<pB),如果cond为 真则A相对B是占优的;
[0114] 步骤5:如果以上条件均不满足,则A相对B不是占优的。
[0115] 值得一提的是A相对B不是占优的不能得到B相对A是占优的结论。一个 解A相对另一个解B是Pareto占优的说明A比B在多目标优化上效果更好。
[0116] 4.拥挤算子
[0117] 使用了拥挤算子计算个体的拥挤度,拥挤度定义为个体周围个体的密度;假 设快速非占优排序中生成的一个前沿面为F,前沿面F的第i个个体拥挤度为Ci, 某个优化目标的最大值为Omax,最小值为Omin,则个体拥挤度定义为:
[0118]
[0119] 由于存在调度功耗P和调度时间T两个目标,因此在计算拥挤度时需要进 行两次;步骤如下:
[0120] 步骤1:将前沿面F的所有个体的拥挤度初始化为0;
[0121] 步骤2:按照调度功耗对前沿面F中的个体从小到大排序;
[0122] 步骤3:将F中第一个个体和最后一个个体的拥挤度设置为Pmax;
[0123] 步骤4:从第二个个体开始到倒数第二个个体,计算每个个体的拥挤度 [0124] 步骤5:按照调度时间对前沿面F中的个体从小到大排序;
[0125] 步骤6:将F中第一个个体和最后一个个体的拥挤度设置为Tmax;
[0126] 步骤7:从第二个个体开始到倒数第二个个体,计算每个个体的拥挤度 [0127] 5.选择、交叉和变异策略
[0128] 选择算子使用锦标赛算法,选取k个个体中适应度最高的个体(默认k取3), 个体适应度结合了个体拥挤度和快速非占优中的分级,假设个体A和个体B的 等级为A.rank和B.rank,拥挤度为A.crowding_distance和B.crowding_distance, 则A适应度比B要好当且仅当A.rankB.crowding_distance。选择算子首先从种群P中随机选择k 个个体,计算每个个体的拥挤度,然后根据个体适应度从k个个体中选出最佳个 体;交叉算子使用经典的两点交叉算法,首先从个体的调度序列中随机选择两个 任务t1和t2,然后将个体A和B的t1和t2之间的任务进行交换,包括每个任务分 配的电压等级和处理器id,得到新个体A′和B′;变异算子使用单点变异算法,首 先随机选择个体A调度序列中的一个任务,然后将任务的处理器id和电压等级 随机变为一个新的值,得到新个体A′
[0129] 6.带有截止时间约束的功耗感知调度算法
[0130] 遗传算法是模拟生物进化的自然选择与遗传机制的一种计算模型,通过对种 群内的个体进行选择和淘汰随机搜索最优解。遗传算法寻找最优解从一个初始种 群开始,种群中的每个个体表示一个可行解,每个可行解都有自己的独特编码和 适应度,个体的适应度越高,该个体被留下来的可能性越大。遗传算法的步骤包 括:(1)随机生成若干个体组成初始种群。(2)按照选择算法根据个体适应度生 成新一代种群。(3)对新种群按照概率进行交叉、变异操作。(4)得到下一代种 群。
[0131] 遗传算法一般只能用来优化一个目标函数,即适应度函数。对于多目标优化 通常需要合并多个目标函数为一个目标函数。在本发明中研究的问题具有两个优 化目标,此外还有约束度的限制,因此不能直接使用遗传算法进行优化。本发明 提出的基于NSGA2的带截止时间约束的处理器功耗感知调度方法基于NSGA2 算法思想,使用上述提出的约束度以及任务调度模型来解决功耗感知的调度问题。
[0132] 由于遗传算法的优化效果与个体编码密切相关,为了体现调度时间和调度功 耗,这里采用整数编码的形式,分别由task_id、pe_id和voltage_level分别表示 个体的任务id、处理器id以及使用的电压等级。每个个体存在两个目标函数tsched和Esched。为了保证调度顺序遵循任务图的先后依赖关系,每个个体的任务id按 照任务图的拓扑排序生成。
[0133] 本发明的基于NSGA2的带截止时间约束的处理器功耗感知调度方法包含遗 传算法操作、快速非占优排序以及拥挤算子三个部分。遗传算法操作包括选择、 交叉和变异,用于控制个体的进化;快速非占优排序主要根据Pareto占优规则对 种群中的个体进行排序;拥挤算子计算每个个体的拥挤度。使用任务约束度定义 Pareto占优规则来比较可行域中不同解之间的优劣,采用在考虑了任务通信同步 与处理器运行队列后的改进的任务调度模型,通过基于NSGA2算法的快速非占 优排序以及拥挤算子实现调度功耗和调度时间两个目标的优化,在保证任务截止 时间的同时降低处理器功耗。
[0134] 如图2所示,是表示三个任务在3个不同处理器上的执行示意图。可以看到 每个处理器都只有一个运行队列,运行队列按照FIFO规则来添加和删除队列中 的任务。其中任务T1在处理器PE1上,任务T2在处理器PE0上,任务T3在 处理器PE2上。其中任务T2和T3对T1有数据依赖,意味着在T1完成之前, T2和T3都不能执行。
[0135] 如图3所示,是任务的截止时间示意图。表示一次调度不同任务间的数据依 赖关系。出口任务(出度为0)一般具有一个截止时间,任务的完成时间不应该 超过截止时间。可以看到任务T6在截止时间之前完成了任务,并且完成时间和 截止时间存在一段slack时间,可以用来调节调度的功耗。而任务T5的完成时 间超过了截止时间,因此不满足截止时间约束,所以这次调度是不可行的。
[0136] 下面表示的是Pareto占优规则的算法伪代码,具体步骤上面有所讲述。
[0137]
[0138] 如图4所示,表示的是调度的编码。每个任务都会分配一个处理器id和电 压等级,表示执行该任务的处理器编号以及应该采取的电压。后面的列表表示的 是遗传算法编码。由于任务间存在数据依赖,位于依赖后面的任务不能先于依赖 前面的任务执行,因此编码规则需要按照拓扑排序的顺序进行调度。
[0139] 下面表示的是基于NSGA2的带截止时间约束的处理器功耗感知调度算法的 伪代码。算法的详细过程可以参考前面提到的算法过程。
[0140]
[0141] 本发明研究的是通用异构多核处理器在单运行队列环境下的调度模型,在实 际工作中用到的处理器调度模型会更加复杂。如ARM处理器是集成了 big.LITTLE架构,可以在大小核之间迁移任务,AMD、Intel的处理器都支持SMT 技术,一个核心可以运行不止一个线程。此外在实际的linux系统中存在多个调 度队列,用于调度不同类型的任务。因此本发明主要适用于理论方面的研究,在 实际的生产环境中会与测量值有较大误差。