一种DAG并行任务调度中基于树搜索的剪枝方法与流程

文档序号:20917108发布日期:2020-05-29 13:40阅读:481来源:国知局
一种DAG并行任务调度中基于树搜索的剪枝方法与流程

本发明涉及任务调度系统领域,尤其是涉及一种dag并行任务调度方法。



背景技术:

目前在分布式异构计算系统中,如何优化dag任务调度是一个开放的研究问题。dag任务调度的目标是给出一个调度方案,将dag图中的任务按照一定的顺序调度到处理器上执行,使调度长度最小化。其模型如下:

工作流应用一般通过有向无环图(dag)g(n,e,p)来描述。其中n={n1,n2...nm}代表应用程序中m个任务的集合。e={e1,e2...es}是s条有向边的集合,边e(i,j)∈e表示优先约束,任务nj必须等到ni完成才可以执行。q={p1,p2...pt}表示t个处理器的集合。wi,j表示任务ni调度到处理器pj上执行的计算开销;表示任务ni调度到处理器上执行的平均计算开销;

ci,j表示任务ni和任务nj之间的通信开销,当任务ni和任务nj在同一处理器上执行时通信开销为0;esti,j表示任务ni调度到处理器pj上的开始执行时间;efti,j表示任务ni调度到处理器pj上的执行结束时间;三者关系为:efti,j=esti,j+wi,j。

在分布式异构系统中,高效的任务调度算法对于获得高质量的调度是至关重要的。中国专利公告号cn102193826b,公告日2012年12月19日,发明创造的名称为一种异构多核处理器高效调度方法,该申请案采用线性任务聚簇方法,将任务图中某些特殊的、通信开销较大的、容易聚簇的任务聚簇到其前驱节点;从整个任务图的拓扑结构出发,选择能够综合反映任务在整个任务图中地位的参数作为优先级权值。这个方法会大量重复访问一些调度效果差的结点,最终会造成大量时间的浪费,搜索效率会变低。

peft算法是一种列表启发式算法,算法主要分为两个阶段:任务选择阶段和处理器选择阶段。这两个阶段都是建立在一个乐观花销表上的,所以在调度开始之前要先计算出乐观花费表,表中的oct值是指子任务结点到出口任务结点的最长路径。出口任务结点oct(nexit,pk)=0

任务选择阶段:按照从大到小的顺序选择rankoct(ni)的任务ni

处理器选择阶段:选择oeft(ni,pj)值小的处理器pj执行任务ti

oeft(ni,pj)=eft(ni,pj)+oct(ni,pj)

cpop算法中,任务ni的上行权重用如下公式计算,其中

任务ni的下行权重则用如下公式计算,其中rankd(nentry)=0:

任务的权重值为上下行权重之和,用如下公式计算:

ct(ni)=ranku(ni)+rankd(ni)

关键路径的任务结点为上下权重值最大的任务结点。

dag任务调度已经被证明是np完全问题,由于其在实际中的重要性,在众多文献中被广泛研究。许多基于dag的任务调度算法已经被提出,例如基于遗传和进化的随机搜索算法、列表启发式调度算法等等。然而,基于遗传和进化的随机搜索算法需要多次迭代过程,才能找到相对比较好的解,而且整个迭代过程执行时较长;列表调度算法属于静态的启发式算法,缺乏适应各种异构硬件和快速变化的应用需求。因此,设计一种能够加速保证算法的效率,同时提高算法搜索效率的dag任务调度方法,就显得十分重要。



技术实现要素:

本发明是为了克服现有技术的dag任务调度方法会大量重复访问一些调度效果差的结点的问题,提供一种加入剪枝的蒙特卡洛树搜索的dag任务调度方法。

为了实现上述目的,本发明采用以下技术方案:

本发明解决其技术问题所采用的技术方案是:一种dag并行任务调度中基于树搜索的剪枝方法,所述方法包括步骤:

s1、求出dag图的关键路径;

s2、初始化上下界;

s3、初始化搜索树和就绪队列;

s4、选择阶段:根结点s0开始,选择路径上uct值最大的子结点s,直到到达叶子结点,对uct值最大的子结点s进行判断;

s5、剪枝阶段:对从根结点到当前结点的路径上的所有结点的makespan值和未调度的关键路径任务结点在各自最快完成的处理器上执行时间的累加值做判断;

s6、扩展阶段:判断s4步骤选中的叶子结点是不是终止结点,依据判断结果创建新的子结点,添加到搜索树上,更新新的子结点的标记;

s7、模拟阶段:从扩展结点开始,将剩余的任务进行模拟任务调度的过程;

s8、回传阶段:模拟结束后,将所得最新结点回传到根结点上;

s9、依据makespan值找出一条调度顺序。通过s4步骤递归的选择路径上需要剪枝的结点,然后进入s5步骤把这些结点从搜索树中删除,这样把这些调度效果差的结点就不会再访问,缩小了搜索范围,可以加快计算速度、提高搜索的效率。

作为优选,所述s1步骤中:利用cpop算法求出dag图的关键路径;

s2步骤中:下界此值为所有关键路径结点在各自最快完成的处理器上执行时间的累加值,上界β=+∞,cpmin表示dag图中所有的关键路径任务节点的集合。s1步骤中利用cpop算法求出dag图的关键路径为下面的步骤提供基础,s2步骤给出了上下界的值,为下面步骤的开始提供初始值。

作为优选,所述是s3步骤中:初始化搜索树和就绪队列,搜索树的根结点标记为false,将dag图的入口结点任务加入就绪队列,同时更新这些任务的孩子结点的父结点数把搜索树和就绪队列初始化为下面步骤开展做准备,不使下面步骤受到干扰,dag图的入口结点任务加入到就绪队列,就可以对dag图的入口结点任务进行下一步的操作。

作为优选,所述s4步骤中:从根结点s0开始,递归的选择路径上uct值最大的子结点s,直到到达叶子结点,若选择的uct值最大的子结点s的标记为false,就进入剪枝阶段,否则就回退到父结点,重新选择其他子结点,判断标记是否为false,若此父结点的所有孩子结点的标记都为true,则将此父结点的标记也改为true,并退回到根结点,清空就绪队列里的任务,从根结点重新开始进行选择阶段;

uct=argmax(q(s,a)+u(s,a))

cpuct是重要的超参数;n(s,a)表示当前任务结点的访问次数;表示当前任务的所有父结点的访问次数,q(s,a)表示当前树节点的累积奖励值。路径上uct值最大的子结点是效果不好的结点,可以通过判断他的标记是否为false时,来决定是需要剪枝,还是退回父结点,退回父结点后再判断这个父结点的子结点是否有为false的子结点,如果有就剪枝,没有就退回根结点,这样就可以把效果不好的子结点给挑出来。

作为优选,所述s5步骤中:计算从根结点到当前结点的路径上的所有结点的makespan值,记为计算未调度的关键路径任务结点在各自最快完成的处理器上执行时间的累加值,记为若m1+m2>β,则剪去该结点以及它所有的子结点,并将该结点的标记变为true,下次不再次访问标记为true的结点,并退回到根结点,清空就绪队列里的任务,从根结点重新开始进行选择阶段,否则,将当前结点作为搜索路径结点,并将该结点所对应的的任务结点从就绪队列里取出,同时更新dag图中当前任务结点的孩子结点的父结点数若存在孩子结点的父结点数为零,则将此孩子结点加入到就绪队列,回到s4步骤。根据根结点到当前结点的路径上的所有结点的makespan值和未调度的关键路径任务结点在各自最快完成的处理器上执行时间的累加值来进一步判断该结点是否需要剪枝,需要剪枝的标记变为true,这样可以实现下次不再访问的效果,使得不做无用功,不需要剪枝的结点就可以作为搜索路径结点。

作为优选,所述s6步骤中:计算就绪队列里的任务数量,记为q,若s4步骤选中的叶子结点不是终止结点,那么就创建q×t个新的子结点,t代表处理器数量,添加到搜索树上,并对这些结点的访问次数,奖励值进行初始化n(st,a)=0,q(st,a)=0,这些结点的标记记为false,随机选择其中一个结点,然后进入s7步骤,n(st,a)表示新扩展节点的访问次数,q(st,a)表示新扩展节点的奖励值。创建q×t个新的子结点代表就绪队列的任务调度到处理器上所有调度情况,对这些子节点进行分析就可以得出就绪队列里的任务调度到各个处理器的情况,这些子节点因为没有进行过操作,所以初始值要进行赋值。

作为优选,所述s7步骤中:从扩展结点开始,将剩余的任务使用peft算法进行模拟任务调度的过程,直到模拟到全部任务都被调度到处理器上为止,得到一个makespan值,如果当前的α<makespan≤β,则更新β=makespan。对剩余的任务进行模拟调度,找到最小的makespan值,然后把上限更新,就可以进一步确定上限的值,缩小范围。

作为优选,所述s8步骤中:当模拟结束后,搜索树中各结点的信息也都已经得到,此时根据makespan值,将搜索后所得最新结点由叶子结点回传到根结点上进行更新,结点访问次数的更新方式n(s,a)=n(s,a)+1;结点的奖励值的更新方式为搜索树中各结点的信息要传到根节点进行更新,这样就可以在此基础上继续进行操作,可以进一步找到合适的路径。

作为优选,所述s9步骤中:执行完s4、s5、s6、s7和s8后,都要将dag任务图恢复成原始的任务图,然后重复执行s4、s5、s6、s7和s8;步直到达到模拟上限次数为止,根据调度结果找出一条makespan值最小的调度顺序。将dag任务图恢复成原始的任务图是为了不受上一次的影响,这样才能将所有情况都考虑到,模拟到模拟上限后,依据之前的调度的数据,从中就可以选择出来一条makespan值最小的调度顺序,这样就可以得到较好的调度效果。

因此,本发明具有如下有益效果:(1)把一些调度效果差的结点从搜索树中删除;(2)加快计算速度、提高搜索效率;(3)通过剪枝把搜索树的缩小搜索范围变小;

附图说明

图1是本发明的一种原理图

图2是本发明的一种dag拓扑图

图3是本发明的一种对dag拓扑图使用本发明的方法的结果图

具体实施方式

下面结合附图与具体实施方式对本发明做进一步的描述。

实施例:一种dag并行任务调度中基于树搜索的剪枝方法,对图2所示的dag拓扑图使用本发明所述的方法,其过程如下:

s1步骤:利用cpop算法求出dag图的关键路径;

s2步骤:下界上界β=+∞。

s1步骤中利用cpop算法求出dag图的关键路径为下面的步骤提供基础,s2步骤给出了上下界的值,为下面步骤的开始提供初始值。,此值为所有关键路径结点在各自最快完成的处理器上执行时间的累加值,是调度的理想下限时间,

s3步骤:初始化搜索树和就绪队列,搜索树的根结点标记为false,将dag图的入口结点任务加入就绪队列,同时更新这些任务的孩子结点的父结点数

s4步骤:从根结点root开始,递归的选择路径上uct值最大的子结点,直到到达叶子结点,若选择的uct值最大的子结点的标记为false,表明此结点未剪枝过,则进入剪枝阶段,否则就回退到父结点,选择其他子结点判断标记是否为false,若此父结点的所有孩子结点的标记都为true,则将此父结点的标记也变为true。若此父结点的标记为true,就退回到根结点,并清空就绪队列里的任务,从根结点重新开始进行选择阶段;

uct=argmax(q(s,a)+u(s,a))

cpuct是重要的超参数,主要用于平衡探索和利用间的权重;n(s,a)表示当前任务结点的访问次数;表示当前任务的所有父结点的访问次数。

因为路径上uct值最大的子结点是效果不好的结点,可以通过判断他的标记是否为false时,来决定是需要剪枝,还是退回父结点,退回父结点后再判断这个父结点的子结点是否有为false的子结点,如果有就剪枝,没有就退回根结点,这样就可以把效果不好的子结点给挑出来,以后就不再访问,这样就减少了获得makespan值最小调度顺序的时间。

s5步骤:计算从根结点到当前结点的路径上的所有结点的makespan值,记为计算未调度的关键路径任务结点在各自最快完成的处理器上执行时间的累加值,记为若m1+m2>β,则剪去该结点以及它所有的子结点,并将该结点的标记变为true,防止下次再次访问,并退回到根结点,清空就绪队列里的任务,从根结点重新开始进行选择阶段,否则,将当前结点作为搜索路径结点,并将该结点所对应的任务结点从就绪队列里取出,同时更新dag图中当前任务结点的孩子结点的父结点数若存在孩子结点的父结点数为零,则将此子结点加入到就绪队列,回到s4步骤。

根据根结点到当前结点的路径上的所有结点的makespan值和未调度的关键路径任务结点在各自最快完成的处理器上执行时间的累加值来进一步判断该结点是否需要剪枝,需要剪枝的标记变为true,这样可以实现下次不再访问的效果,使得不做无用功,不需要剪枝的结点就可以作为搜索路径结点。

s6步骤:计算就绪队列里的任务数量,记为q,若s4步骤选中的叶子结点不是终止结点,那么就创建q×t个新的子结点,t代表处理器数量,添加到搜索树上,并对这些结点的访问次数,奖励值进行初始化n(st,a)=0,q(st,a)=0,这些结点的标记记为false,随机选择其中一个结点,然后进入s7步骤。

创建q×t个新的子结点代表就绪队列的任务调度到处理器上所有调度情况,对这些子节点进行分析就可以得出就绪队列里的任务调度到各个处理器的情况,这些子节点因为没有进行过操作,所以初始值要进行赋值。

s7步骤:从扩展结点开始,将剩余的任务使用peft算法进行模拟任务调度的过程,直到模拟到全部任务都被调度到处理器上为止,得到一个makespan值,如果当前的α<makespan≤β,则更新β=makespan。

s8步骤:模拟结束后,搜索树中各结点的信息也都已经得到,此时根据makespan值,将搜索后所得最新结点由叶子结点回传到根结点上进行更新,结点访问次数的更新方式n(s,a)=n(s,a)+1;结点的奖励值的更新方式为

s9步骤:执行完s4、s5、s6、s7和s8后,都要将dag任务图恢复成原始的任务图,然后重复执行s4、s5、s6、s7和s8;直到达到模拟上限次数为止,根据调度结果找出一条makespan值最小的调度顺序。

将dag任务图恢复成原始的任务图是为了不受上一次的影响,这样才能将所有情况都考虑到,模拟到模拟上限后,依据之前的调度的数据,从中就可以选择出来一条makespan值最小的调度顺序,这样就可以得到较好的调度效果。

图3是对图2中的dag拓扑图运用本发明的方法得到的结果图,运用本发明的方法可以加速保证算法的效率,同时提高算法搜索效率,通过s4步骤递归的选择路径上需要剪枝的结点,然后进入s5步骤把这些结点从搜索树中删除,这样把这些调度效果差的结点就不会再访问,缩小了搜索范围,可以加快计算速度、提高搜索的效率。

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