[发明专利]一种面向CPU-GPU异构的低能耗任务调度策略有效
申请号: | 201910247244.2 | 申请日: | 2019-03-29 |
公开(公告)号: | CN109960576B | 公开(公告)日: | 2021-04-16 |
发明(设计)人: | 方娟;周宽 | 申请(专利权)人: | 北京工业大学 |
主分类号: | G06F9/48 | 分类号: | G06F9/48;G06N3/00 |
代理公司: | 北京思海天达知识产权代理有限公司 11203 | 代理人: | 吴荫芳 |
地址: | 100124 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 面向 cpu gpu 能耗 任务 调度 策略 | ||
1.一种面向CPU-GPU异构的低能耗任务调度策略,其特征在于包括以下步骤:
步骤1、处理器模型的初始化,所述的处理器模型包括核心状态和核心性能;
核心状态包括:处理器中N个核心的集合P={P1,P2,P3,...,PN},各个核心的空闲时间列表PEN,在处理多个子任务构成的任务集合时,每当一个子任务调度完成,更新该列表;
核心性能包括:每个核心与任务类型有关的处理能力α,每个核心的动态功耗β,处理器的静态功耗Pstatic,任意两核间的单位数据通信能耗W;
步骤2、任务的初始化处理,
包括得到DAG任务图G={T,Ed,m,d,D},其中,T为子任务集合,Ed为子任务依赖关系集合,m为子任务的计算量,d为子任务间的通信量,D为对应实时约束的子任务组截止期限;
根据子任务依赖关系集合Ed对所有子任务节点建立前驱任务列表Pre,建立子任务执行顺序列表que和临时调度方案列表temp,其中temp的第i个元素temp[i]表示子任务Ti的执行核心编号;
步骤3、完成蚁群算法中子任务执行顺序、基础参数和初始信息素的初始化;
其中,所述的子任务执行顺序通过对子任务集合T使用HEFT算法求解得到;
所述的基础参数包括:各路径上的初始信息素含量ρ,每只蚂蚁经过留下的信息素m,每只蚂蚁遍历完成之后的局部衰减因子Pl,每次迭代开始时信息素的全局衰减因子Pg,信息素影响因子g,蚂蚁数量n和迭代次数N;其中,一个子任务放置到一个核心上执行视作一条路径,子任务或核心有所不同则视为不同路径;
所述的初始信息素的初始化具体为:按子任务执行顺序选择每个子任务的最优执行核心,所述的最优执行核心为所有核心中执行该子任务的能耗最小的核心,所述的能耗为两部分之和,其中,第一部分是当前子任务在所选处理核心上的计算能耗c,第二部分是所有前驱任务最优处理核心与当前子任务所选处理核心之间的通信能耗之和,其中,Eix表示第i个子任务在核心x上的能耗,具体计算公式如下:
其中,cix=tix*βx,
tix=mi/αx,tix表示第i个子任务在第x个核心上的预估执行时间;
mi表示第i个子任务的计算量,
αx表示第x个核心与任务类型有关的处理能力,
βx表示第x个核心的动态功耗,
|Pre[i]|表示第i个子任务的前驱任务数量,
Pre[i][j]表示第i个子任务的第j个前驱任务,
ePr e[i][j]i表示执行第i个子任务的第j个前驱任务和第i个子任务的核心之间的通信能耗,
ePr e[i][j]i=dPr e[i][j]i*Wtemp[Pr e[i][j]]temp[i],
dPr e[i][j]i表示第i个子任务的第j个前驱任务和第i个子任务之间的通信量,Wtemp[Pr e[i][j]]temp[i]表示临时调度方案temp中第i个子任务的第j个前驱任务所在的处理核心与第i个子任务所在的处理核心间的单位数据通信能耗;
所有子任务及其对应的最优执行核心构成的路径的初始信息素含量翻倍,即完成初始信息素的初始化;
步骤4、选取可行路径:根据步骤3中得到的子任务执行顺序取出待调度子任务,通过EFT算法判断在各个核心上执行时任务最早完成时间是否小于截止期限D,
如果该子任务放置在一个核心上执行时的任务最早完成时间不大于截止期限D,则该子任务放置到该核心上即为可行路径,
如果该子任务放置在任意核心上执行时的任务最早完成时间都大于截止期限D,则选择耗时小于平均值的核心作为可选路径,其中,执行第i个子任务的平均耗时的计算方式如下所示:
其中,|P|为处理核心集合的容量,即核心数目,tix为步骤3中提到的第i个子任务在第x个核心上的预估执行时间;
计算各可选路径的选择概率,第i个子任务在第x个核心上执行的选择概率pix计算过程如下:
其中,g为信息素影响因子,由步骤3的基础参数初始化得到,pgix为根据信息素确定的选择概率,peix为根据能耗确定的选择概率
其中,ρix表示第i个子任务在第x个核心上执行所对应路径上的信息素含量,路径上信息素含量初始值由步骤3得到,ρix即为ρ的第i行第x列的元素,
|P|为处理核心集合的容量,即核心数目,
Eix表示第i个子任务在核心x上的能耗,
之后通过伪随机的方式根据上述可行路径的选择概率进行选择,对每个子任务都随机筛选出一个执行核心,即随机得到一个调度方案;
步骤5、更新步骤4得出的调度方案中各路径对应的信息素,更新公式如下:
ρi+1=ρi*(1-Pl)+m (6)
其中,ρi表示更新前的信息素含量,ρi+1表示更新后的信息素含量,Pl表示每只蚂蚁遍历完成之后的局部衰减因子、m表示每只蚂蚁经过留下的信息素,Pl和m由步骤3中的基础参数初始化得到;
计算步骤四随机选择出的调度方案所对应的总能耗E,其中总能耗包括处理器静态能耗Ep和任务执行的能耗Et,具体计算公式如下:
E=Ep+Et (7)
其中,
Ep=Pstatic*TL (8)
Pstatic为固定功耗常数,TL为调度方案对应的任务完成时间;
其中,|T|表示子任务的总数,temp[i]表示临时调度方案中子任务Ti的执行核心编号,Eitemp[i]表示将子任务Ti放置到临时调度方案所选择的核心中进行执行时的能耗;
步骤6、返回步骤4进行循环,当循环次数达到蚂蚁数量n时,记录总能耗最低的调度方案A1,根据调度方案A1更新所有路径的信息素,更新后的信息素作为下一次信息素更新的初值,其中,调度方案A1中各路径对应的信息素的更新公式如下:
ρi+1=ρi*(1-Pg)+5m (10)
除去A1中的路径外,剩余路径对应的信息素更新公式如下:
ρi+1=ρi*(1-Pg) (11)
其中,ρi表示更新前的信息素含量,ρi+1表示更新后的信息素含量,Pg表示每次迭代开始时信息素的全局衰减因子、m表示每只蚂蚁经过留下的信息素,两者均由步骤3中的基础参数初始化得到;
然后执行步骤7;
步骤7、重复步骤4和步骤5,重复次数为蚂蚁数量n,再次搜索并记录总能耗最低的调度方案A2,根据调度方案A2更新所有路径的信息素,更新后的信息素作为下一次信息素更新的初值,信息素更新公式与步骤6中的相同;
步骤8、将A1中的记录的调度方案更新为A1、A2中能耗最小的调度方案,对更新后的调度方案A1中各路径信息素含量进行翻倍,然后返回步骤7继续迭代,直到达到迭代次数N后,所得总能耗最低的调度方案即为最优调度方案,任务按照该方案进行执行。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京工业大学,未经北京工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910247244.2/1.html,转载请声明来源钻瓜专利网。