发明名称 一种带任务重复的工作流调度算法
摘要 本发明涉及一种带任务重复的工作流调度算法。本发明根据用户提交的任务初始化DAG图,根据DAG图的优先级构建任务队列V,V={v<sub>1</sub>,v<sub>2</sub>,Λ,v<sub>n</sub>},计算任务队列V的首个任务v<sub>i</sub>在虚拟列表中每个处理器上的完成时间,比较查找任务v<sub>i</sub>的最小完成时间T<sub>ft</sub>(v<sub>i</sub>,P<sub>k</sub>),构建任务队列A存储需要重复的任务,任务队列B存储已经重复过的任务,任务按照最早开始时间非递增存储,采用遗传算法迭代出最优解,将映射好的任务分配到相应的资源以获得最优调度方案。本发明克服了DAG图不具有明显的分层和清晰的优先级约束的缺陷。本发明由于在D‑IAHA和IAHA中,任务在交叉和变异阶段中的是否要选择变异的资源时考虑到了任务的出错概率,所以大大减少任务在处理器上执行时的出错次数。
申请公布号 CN106201701A 申请公布日期 2016.12.07
申请号 CN201610569560.8 申请日期 2016.07.14
申请人 扬州大学 发明人 李云;阮敏;袁运浩
分类号 G06F9/48(2006.01)I 主分类号 G06F9/48(2006.01)I
代理机构 南京中新达专利代理有限公司 32226 代理人 孙鸥;朱杰
主权项 一种带任务重复的工作流调度算法,其特征在于包括如下步骤:(1)根据用户提交的任务初始化DAG图,用G=(V,E,[W],C)表示,其中v<sub>i</sub>∈V,表示DAG图中的第i个节点,E是DAG图中节点边的集合,e<sub>ij</sub>∈E表示任务v<sub>i</sub>到任务v<sub>j</sub>的边,同时注意,任务v<sub>i</sub>必须在任务v<sub>j</sub>执行前执行完成;w<sub>ik</sub>∈[W],[W]表示n×m阶任务在不同处理器上的执行时间矩阵,w<sub>ik</sub>表示任务v<sub>i</sub>在处理器P<sub>j</sub>上的执行时间;c<sub>ij</sub>∈C表示v<sub>i</sub>到v<sub>j</sub>的通信开销,用边上的权值表示;(2)根据DAG图的优先级构建任务队列V,V={v<sub>1</sub>,v<sub>2</sub>,Λ,v<sub>n</sub>};(3)计算任务队列V的首个任务v<sub>i</sub>在虚拟列表中每个处理器上的完成时间:(3a)计算任务v<sub>i</sub>在处理器P<sub>k</sub>上的初始完成时间:T<sub>ft</sub>(v<sub>i</sub>,P<sub>k</sub>)=T<sub>st</sub>(v<sub>i</sub>,P<sub>k</sub>)+w<sub>ik</sub>其中,T<sub>st</sub>(v<sub>i</sub>,P<sub>k</sub>)为任务v<sub>i</sub>在处理器P<sub>k</sub>上的开始时间,T<sub>ft</sub>(v<sub>i</sub>,P<sub>k</sub>)为完成时间;(3b)令M<sub>j</sub>为任务v<sub>i</sub>所有任务中出度最大的父任务结点(若存在几个以上相同出度,则比较完成时间,M<sub>j</sub>为完成时间最大的任务);M<sub>i</sub>为任务v<sub>i</sub>的最重要的直接父任务,在考虑重复任务后,计算任务v<sub>i</sub>在处理器P<sub>k</sub>上的最终完成时间:(i)若M<sub>i</sub>和M<sub>j</sub>均不在或均已调度到当前处理器P<sub>k</sub>上,则返回T<sub>ft</sub>(v<sub>i</sub>,P<sub>k</sub>)的值;(ii)若处理器P<sub>k</sub>上存在合适执行M<sub>i</sub>或M<sub>j</sub>的空闲时间隙,计算任务M<sub>j</sub>在处理器P<sub>k</sub>上的完成时间T<sub>ft</sub>(v<sub>j</sub>,P<sub>k</sub>),计算任务M<sub>i</sub>在处理器P<sub>k</sub>上的完成时间T<sub>ft</sub>(v<sub>t</sub>,P<sub>k</sub>):①若T<sub>ft</sub>(v<sub>j</sub>,P<sub>k</sub>)<T<sub>st</sub>(v<sub>i</sub>,P<sub>k</sub>),则在处理器P<sub>k</sub>上重复任务M<sub>j</sub>;②若T<sub>ft</sub>(v<sub>t</sub>,P<sub>k</sub>)<T<sub>st</sub>(v<sub>i</sub>,P<sub>k</sub>),则在处理器P<sub>k</sub>上重复任务M<sub>i</sub>;③其他情况,则返回T<sub>ft</sub>(v<sub>i</sub>,P<sub>k</sub>);(iii)其他情况,则返回T<sub>ft</sub>(v<sub>i</sub>,P<sub>k</sub>);(4)比较查找任务v<sub>i</sub>的最小完成时间T<sub>ft</sub>(v<sub>i</sub>,P<sub>k</sub>),若存在相同值,则将该任务调度到任务相对较少的处理器上;(5)若不存在相同值且任务队列为空时,构建任务队列A存储需要重复的任务,任务队列B存储已经重复过的任务,任务按照最早开始时间非递增存储;(6)对任务队列B中的所有任务,若移除该任务对总完成时间无影响的话,则删除冗余任务,更新任务队列;(7)采用遗传算法迭代出最优解;(8)将映射好的任务分配到相应的资源以获得最优调度方案。
地址 225009 江苏省扬州市大学南路88号