
任务分解与调度PPT课件.ppt
20页第三章 任务分解与调度1本章内容本章内容23.1 任务分解 任务分解的主要功能是将提交的任务分解任务分解的主要功能是将提交的任务分解成多个具有尽可能高并行度的子任务,并决成多个具有尽可能高并行度的子任务,并决定由哪些定由哪些AgentAgent在何时执行它们经典的算在何时执行它们经典的算法有:法有:•McCornockMcCornock的基于聚簇的方法;的基于聚簇的方法;•NiizunaNiizuna和和KitahachiKitahachi的基于状态和等价关的基于状态和等价关系的方法系的方法3任务分解的形式化描述任务分解的形式化描述任务分解问题定义为如下五元组任务分解问题定义为如下五元组: :
所耗费的通信和执行开销最小5任务分解的形式化描述任务分解的形式化描述另外,定义一个执行开销函数ExecFun与通信开销函数CommFun:ExecFun: A,ERCommFun: E,E R其中R为实数集并定义如下二进制向量:Mjq=1若操作j的输入信息中包含知识q;Djq=1 若操作j的输入信息中包含知识q;6任务分解的形式化描述任务分解的形式化描述Zik=1 若由执行单元k来完成操作i;Xi=1 若在完成任务的过程中执行了操作i;Vi=1 若信息i是完成所必需的;Yij=1 若操作j的输入信息可由操作i的输出信息提供;Wik=1 若执行单元i与执行单元k通信7任务分解的形式化描述任务分解的形式化描述根据以上的定义可知:①①每个操作最多可被执行一次,即:每个操作最多可被执行一次,即: i(i(∑Zik≤1) ....(1) k i(i(∑Zik=Xi) ....(2) k②所有操作的输出信息必须覆盖目标集,即:所有操作的输出信息必须覆盖目标集,即: i(i(∑DjiXj≥Vi) ....(3) j8任务分解的形式化描述任务分解的形式化描述 ③每个操作仅当其输入信息存在时才能执行,即:每个操作仅当其输入信息存在时才能执行,即: q q j(j(∑DiqYij≥MjqXj) ....(4) i④所执行的操作序列必须是可行的,即:所执行的操作序列必须是可行的,即: i i j(j(Rij≥Yij) ....(5a) i i j j k(k(Rik+ Rkj ≤ Rij +1) ....(5b) i i ( (Rii= 0) ....(5c) ⑤仅当需要传递信息时,才进行通信,即:仅当需要传递信息时,才进行通信,即: i i j j k k l(Zl(Zik+ Zjl + Yij ≤ Wkl +2) ....(6) 9任务分解的形式化描述任务分解的形式化描述⑥完成任务的开销为:完成任务的开销为:∑∑ZijExecFun(Ei,Ej)+ ∑∑WijCommFun(Ei,Ej)i j i j....(7)结论:任务分解问题就是在满足(1)-(6)的同时使(7)之值最小的问题。
10任务分解的启发式算法任务分解的启发式算法①定义Ti为操作,INP(Ti)为操作Ti所需要的输入信息,OUT(Ti)为操作Ti的输出信息,INP0为初始输入信息OUT为完成任务所获得的输出信息令Beginners={Ti:INP(Ti)≤INP0},Actions[1..N]为操作集数组②如果Beginners为空集,同不存在可行的操作集,算法结束否则从Beginners中选择一操作T0,置Beginners= Beginners- {T0},定义输入信息集INP=INP0∪OUT(T0),INP’=INP0,令Actions[1]={T0},M=1③置M=M+1,Actions[M]={Ti:INP(Ti) 直到Wanted为空.11任务分解的启发式算法任务分解的启发式算法⑦如果(INP∪OUT(Ti) ≥ ∪INP(Ti),则算法结束Result为所需操作集,否则置Wanted=INP ∪(OUT(Ti))- ∪INP(Ti),执行第6步123.2 任务分配任务分配算法可分为三类:•基于图论的分配算法;•整数规划算法•启发式方法133.3 并行调度 并行调度的含义是指系统并行地收集负载信息并完成任务的调度 RIPS增量调度并行调度任务执行执行结束系统阶段用户阶段143.3.1 基于环结构的并行调度算法①按顺时针方向为每个节点编号;②令Wi为节点i的任务数,每个结点保留一个Wi;③主控结点j计算平均任务数Wavg=Wi之和除N最整,余数R=Wi之各模N并把Wavg和R广播到全部节点;④节点i收到Wavg和R后,计算本节点应调度多少任务:当R=0时,每个节点应调度的任务数为Wavg如果:Wi=Wavg,则该节点不接收也不发送任务,开始用户阶段;Wi i在j+R之后且Wi 完成子任务执行的同步以及负责收集结果其提供的处理过程为:其提供的处理过程为:On Finish(Ai) DoOn Finish(Ai) Do Send Agenti Finish(Aj) At Priorty(xxx) Send Agenti Finish(Aj) At Priorty(xxx)20。
