专利名称:多核集群服务器上基于依赖度的并行任务分组调度方法
技术领域:
本发明属于高性能计算领域,具体涉及到集群服务器上操作系统中多个任务的并行调度方法,即将多个可以并行的任务分配到多个处理器执行,从而使得所有任务的总体执行时间或使用的处理器个数满足要求。
背景技术:
随着高性能计算机的快速发展,大型多处理器集群系统的能耗越来越多,高效节能已经成为高性能计算必须考虑的重要因素之一。集群系统往往由数百至数万个计算节点组成,每个节点中包括多个同构多核处理器。集群系统能够同时运行多个应用程序,向多个用户提供服务。如何通过调度的方法加快应用程序运行速度、减少系统总能耗,已经成为高性能计算必须解决的问题之一。集群系统中并行任务节能调度问题是为系统中每一个待执行的并行任务分配处理器等执行资源,并指定占用这些资源的起止时间,在满足任务间依赖关系的前提下,使得所有任务能够较早完成,并且总能量消耗尽量少。与传统的并行调度相比,并行任务节能调度的主要目标不仅是减少所有任务总体完成时间,更要求尽量减少使用资源数目和资源的占用时间,提高资源利用率,达到整个集群系统中性能(任务总体完成时间)和能耗之间的平衡。并行任务在多处理器上的最优调度问题已经证明是NP难的,不存在多项式时间的调度算法。国内外的学者一般采用启发式算法生成调度方案,在减少所有任务完成时间的同时降低系统能耗。带依赖关系的并行任务可以抽象成一个由多个定点构成的有向无环图(DAG图),其中顶点表示任务,顶点内部的数字表示任务编号,顶点周围的数字表示任务执行时间;有向边表示任务之间的依赖关系(数据传递方向)。如果具有依赖关系的两个任务不在一个处理器上执行,前一个任务完成后需要向后一个任务传送数据,这需要一定的传输耗时。有向边上的数值即表示数据传输耗时。如果具有依赖关系的两个任务在一个处理器上执行(无论是否在同一个内核上),这种数据传输耗时相对于处理器之间的传输耗时可以忽略不计,即认为此时的传输耗时等于O。已有的任务复制调度策略TDS (Task Duplication Scheduling)按照DAG图的拓扑结构生成多条任务执行路径,每条执行路径上的所有任务分为一组,分配到一个处理器上执行,通过在多个处理器上复制执行部分前驱任务,避免前驱任务的数据传输耗时,从而缩短所有任务的总体执行时间。但是,任务复制执行的方法在减少任务总体完成时间的同时,不可避免的带来了能耗增加问题。为此,有人在TDS的基础上,提出了两种非抢占式离线节能调度算法一能量敏感复制调度EAD(Energy-Aware Duplication)调度和性能能量均衡复制调度PEBD(Performance-Energy Balanced Duplication)调度,通过设置任务能量阈值和能量/时间比阈值,减少不必要任务的复制次数,从而降低系统的总体能量开销。但是TDS、EAD和PEBD都存在处理器负载不平衡,平均利用率较低的问题。而且已有方法只是针对单核处理器上的考虑任务复 制的节能调度算法。目前,还没有同构多核处理器上考虑任务复制执行的节能调度算法。
发明内容
为解决现有调度技术无法实现同构多核处理器上考虑任务复制情况的并行节能调度问题,本发明提供了一种同构多核集群服务器中基于任务依赖度的并行任务分组调度方法。本发明采用的技术方案如下:多核集群服务器上基于依赖度的并行任务分组调度方法,包括以下步骤:步骤(I)根据任务执行参数和依赖关系得到初始执行路径;然后,计算每条初始执行路径的负载,按照负载从大到小的顺序对初始执行路径进行排序;步骤(2)根据给定的处理器个数,按照依赖关系安排初始执行路径运行位置,即按照初始执行路径之间的依赖关系,将两条或多条依赖度大的初始执行路径安排在同一个处理器上,组成一条优化后的执行路径;步骤(3)将处理器使用个数减I,并按照步骤(2)安排所有N条初始执行路径的运行位置,寻找其它可选调度方案;步骤(4)不断执行步骤(3),直到调度方案的完成时间超过允许的总体完成时间为止。在所有的可选调度方案列表中,选择完成时间小于或等于总体完成时间约束的、节约能耗最多的一组调度方案作为最终调度。所述的步骤(I)的具体步骤如下:(1-1)计算各个任务的执行参数,包括最优前驱任务、任务在依赖关系图中的高度;(1-2)利用计算出来的执行参数,根据已有的任务复制调度算法,生成初始执行路径,并假设初始执行路径有N条(N <总内核数),所述的总内核数是指给定的处理器的内核数之和;(1-3)计算每条初始执行路径的负载,即初始执行路径上所有任务的执行时间总和;依据负载从大到小的顺序对初始执行路径进行排序,并假设所有初始执行路径中负载最大值为最大负载为Max_Load ;(1-4)根据所用系统的单个处理器内核个数,假设为K,设定最多可用处理器个数Max_CPU=生成初始执行路径条数/单个处理器内核个数=N/K取上整数;设置占用处理器个数初始值M=Max_CPU。所述的初始执行路径任务未分配到处理器上时,任务的初始执行路径由TDS、EAD或PEBD算法生成。所述的步骤(2)的具体步骤如下:首先将N条初始执行路径的前M条路径分配到M个处理器的第一个核上,然后从第M+1条路径开始计算该路径对M个处理器的依赖度,选择依赖度最大的处理器上分配给该路径;该路径将运 行在依赖度最大的处理器中的空闲时间最多的内核上;按照相同的方法,循环迭代安排第M+2至第N条路径的运行位置(即运行该路径的处理器及其内核);当所有N条初始执行路径安排完运行位置之后,将此时处理器个数、最后一个任务完成时间和总能耗作为一种可选调度方案,添加到{处理器个数、完成时间、总能耗}列表中。
所述的步骤(3)的具体步骤如下:不断重复执行步骤(3),直到调度方案的完成时间超过允许的总体完成时间为止;在所有的可选调度方案列表中,在允许的总体完成时间范围内,选择节约能耗最多的一组调度方案作为最终调度。本发明采用的方法与现有技术相比有如下优点:本发明结合分组调度和复制调度的基本思想,本发明提出了一种考虑同构多核处理器结构的、基于任务集依赖度的并行任务分组调度方法,简称DG (Dependence Grouping)方法。通过计算任务执行路径之间的任务依赖度,根据任务路径之间依赖度的大小选择合适的任务执行路径进行合并,将合并之后的路径作为一个路径分组分配给一个处理器内核执行。DG方法可以充分利用内核的空闲时间,减少占用的处理器个数,从而降低系统总能量开销。DG方法与TDS、EAD和PEBD调度结合形成了三种优化的调度算法TDS_DG、EAD_DG和PEBD_DG。实验结果表明,优化后的三种算法与优化之前的相应算法相比,在任务总体执行时间不变或略微增加的情况下,而总体能耗得到的大幅降低,另外还有如下优点:(I)相对于现有的同构多处理器调度算法,本发明能有效地减少处理器的使用个数,提高资源的利用效率,减少不必要的任务复制、处理器之间通信开销以及处理器的空闲时间,从而降低整个集群系统的能量消耗;(2)本发明使用启发式算法形成一种静态调度方法,实现过程简单高效,对硬件要求低、计算开销小;(3)本发明还可以根据任务集合总体完成时间约束或处理器的最大使用个数约束,生成符合约束要求的最节能的调度方案。
图1是本发明实施例中应用任务依赖关系图。图2是任务复制调度策略(TDS)生成的调度结果;图3是本发明的调度结果;图4是本发明所用到的任务复制调度策略的流程图;图5是单个任务对任务执行路径依赖度(Dependence Factor,简称DF)的计算方法流程图。
具体实施例方式下面首先给出本发明的相关定义,然后列出相关算法,最后给出一个具体实例,并结合附图对本发明做进一步地说明。本发明提出了一种基于任务依赖度的任务分配算法,通过计算执行路径之间的依赖度,在不增加执行路径最大负载和符合执行任务之间的前驱后继约束关系的前提下,将执行路径之间依赖度大的路径进行合并,相对于原来算法达到了使处理器负载更加平衡、减少不必要的任务复制、减少处理器之间通信开销、减少处理器的空闲时间能耗,从而达到整体能耗减少。根据任务执行参数和依赖关系得到初始的任务执行路径,然后根据任务执行路径之间依赖度大小将执行路径分组合并后,分配到处理器上执行,寻找满足总体完成时间约束的所有分配方案,从中选择一个最节能的分配方案。具体包括下列部分:(I)生成初始执行路径首先,计算各个任务的执行参数,例如:最优前驱任务、任务在依赖关系图中的高度。利用计算出来的执行参数,根据已有的任务复制调度算法(TDS、EAD或PEBD)生成初始执行路径(假设初始执行路径有N条)。生成执行路径之后,计算每条路径的负载(即路径上所有任务的执行时间总和),依据负载从大到小的顺序对执行路径进行排序。假设所有执行路径中负载最大值为最大负载(Max_Load)。根据所用系统的单个处理器内核个数(假设为K),设定最多可用处理器个数(Max_CPU)=生成初始执行路径条数/单个处理器内核个数=N/K取上整数。设置占用处理器个数初始值M=Max_CPU。(2)给定处理器个数下,安排任务执行路径运行位置首先将前M条路径分配到M个处理器的第一个核上,然后从第M+1条路径开始计算该路径对M个处理器的依赖度,选择依赖度最大的处理器上分配给该路径。该路径将运行在依赖度最大的处理器中的空闲时间最多的内核上。按照相同的方法,循环迭代安排第M+2至第N条路径的运行位置(即运行该路径的处理器及其内核)。当所有N条路径安排完运行位置之后,将此 时处理器个数、最后一个任务完成时间和总能耗作为一种可选调度方案,添加到{处理器个数、完成时间、总能耗}列表中。(3)减少处理器个数寻找其它可选调度方案将处理器使用个数M减1,并按照第(2)步安排所有N条执行路径的运行位置,寻找其它可选调度方案。(4)选择满足截止期需求的最节能的调度方案不断执行步骤(3),直到调度方案的完成时间超过允许的总体完成时间为止。在所有的可选调度方案列表中,在允许的总体完成时间范围内,选择节约能耗最多的一组调度方案作为最终调度。1.相关定义I)直接任务依赖在DAG图中,相邻两个任务节点之间如果存在直接前驱、后继关系,则这两个任务之间存在直接任务依赖,例如图1中任务I和任务2,如果两个任务之间不存在直接的前驱、后继关系,则两个任务之间不存在直接任务依赖,例如图中任务2和任务6,任务2和任务3。2)执行路径具有依赖关系的多个任务可以组成一条执行路径,分配到一个处理器上执行,从而避免依赖任务之间的数据传输耗时。任意一条执行路径中,任务执行顺序要求符合任务间的前驱后继关系。例如,在如图1中,任务I 一定要在任务2、3、4、5之前执行。TDS、EAD或PEBD算法可以生成初始执行路径。图1所示例子中的任务集经过TDS算法生成5条任务执行路径,分别为:L1=<1, 4,8,9>,L2=〈l,2,7>,L3=〈l,2,6>,L4=〈l,5>,L5=〈l,3>。 3)任务对路径的依赖度任务对某条路径的依赖度分两种情况定义:
(a)如果任务ν在任务执行路径L上,则ν对L的依赖度为V的执行时间;(b)如果任务ν不在L上,而存在ν的直接前驱或后继在L上,则此任务对L的依赖度等于ν在L上的直接前驱对ν的数据传输耗时加上ν对L上的直接后继任务的数据传输耗时之和。例如,在图1中,节点3对路径Ll=〈l,4,8,9>的依赖度等于5 (即2+3);如果此任务ν不在L上,且其直接前驱和后继都不在L上,则此任务对L的依赖度为O。任务对路径的依赖度代表如果任务ν和路径L在一个处理器上执行的话,所节约的时间。4)执行路径对执行路径的依赖度假设存在两条任务路径A和B,路径A对路径B的依赖度为路径A上的所有任务对路径B的依赖度之和。例如,在图1中,路径1^5=〈1,3>对路径1^1=〈1,4,8,9>的依赖度等于7(即2+5)。路径之间的依赖度具有不对称性,即路径A对路径B的依赖度不一定等于路径B对路径A的依赖度。5 )执行路径对处理器依赖度假设存在路径L和一个处理器P。如果处理器任何一个核上都没有分配任务路径,则L对P的依赖度设为无穷大,L将被分配到P的第一个核上;若处理器上已经分配过任务,则L对P的依赖度为L对P上所有执行路径依赖度之和。2.基于依赖度的任务分组分配策略(DG)Stepl.利用TDS (例如图3流程图)、EAD或者PEBD算法,得到N条任务初始执行路径; Step2.计算每条执行路径的负载,即该条路径上所有任务的执行时间之和;根据路径负载的从大到小的顺序,对任务执行路径进行排序;Step3.假设系统中有Μ’个多核处理器,每个处理器包含K个相同的内核,而且同一处理器的各个核心可以通过共享内存相互通信,处理器内部通信时间和能耗相对于处理器之间的通信近似忽略不计;Step4.如果N〈=K*M’,令占用的总处理器个数Μ=ρν/ΛΤ| (上整数);否则Μ=Μ’ ;Step5.将前M条路径分配到M个处理器的第一个核上;从第M+1条路径开始计算该路径对M个处理器的依赖度,选择依赖度最大的处理器上分配给该路径。该路径将运行在依赖度最大的处理器中的空闲时间最多的内核上。然后,根据任务level属性值从大到小调整任务的执行顺序,并将存在的冗余任务删除。按照相同的方法,循环迭代安排第M+2至第N条路径的运行位置(即运行该路径的处理器及其内核)。当所有N条路径安排完运行位置之后,将此时处理器个数、最后一个任务完成时间和总能耗作为一种可选调度方案,添加到{处理器个数、完成时间、总能耗}列表中;Step6.将处理器使用个数M减1,并按照St印5安排所有N条执行路径的运行位置,寻找其它可选调度方案。Step7.不断执行Step6,直到调度方案的完成时间超过允许的总体完成时间为止。在所有的可选调度方案列表中,选择完成时间小于或等于总体完成时间约束的、节约能耗最多的一组调度方案作为最终调度。3.一个由9个结点组成的任务集合调度实例
( I)生成初始执行路径首先计算使用任务复制算法生成初始执行路径的参数,以图1所列DAG图为例,首先根据TDS调度算法计算复制参数,见表1:
权利要求
1.多核集群服务器上基于依赖度的并行任务分组调度方法,其特征在于:包括以下步骤: 步骤(I)根据任务执行参数和依赖关系得到初始执行路径;然后,计算每条初始执行路径的负载,按照负载从大到小的顺序对初始执行路径进行排序; 步骤(2)根据给定的处理器个数,按照依赖关系安排初始执行路径运行位置,即按照初始执行路径之间的依赖关系,将两条或多条依赖度大的初始执行路径安排在同一个处理器上,组成一条优化后的执行路径; 步骤(3)将处理器使用个数减1,并按照步骤(2)安排所有N条初始执行路径的运行位置,寻找其它可选调度方案; 步骤(4)不断执行步骤(3),直到调度方案的完成时间超过允许的总体完成时间为止;在所有的可选调度方案列表中,选择完成时间小于或等于总体完成时间约束的、节约能耗最多的一组调度方案作为最终调度。
2.如权利要求1所述的基于依赖度的并行任务分组调度方法,其特征在于:所述的步骤(I)的具体步骤如下: (1-1)计算各个任务的执行参数,包括最优前驱任务、任务在依赖关系图中的高度; (1-2)利用计算出来的执行参数,根据已有的任务复制调度算法,生成初始执行路径,并假设初始执行路径有N条,其中N <总内核数; (1-3)计算每条初始执行路径的负载,即初始执行路径上所有任务的执行时间总和;依据负载从大到小的顺序对初始执行路径进行排序,并假设所有初始执行路径中负载最大值为最大负载为Max_Load ; (1-4)根据所用系统的单个处理器内核个数,假设为K,设定最多可用处理器个数Max_CPU=生成初始执行路径条数/单个处理器内核个数=N/K取上整数;设置占用处理器个数初始值 M=Max_CPU。
3.如权利要求2所述的并行任务分组调度方法,其特征在于:所述的初始执行路径任务未分配到处理器上时,任务的初始执行路径由TDS、EAD或PEBD算法生成。
4.如权利要求2所述的并行任务分组调度方法,其特征在于:所述的步骤(2)的具体步骤如下: 首先将N条初始执行路径的前M条路径分配到M个处理器的第一个核上,然后从第M+1条路径开始计算该路径对M个处理器的依赖度,选择依赖度最大的处理器上分配给该路径;该路径将运行在依赖度最大的处理器中的空闲时间最多的内核上;按照相同的方法,循环迭代安排第M+2至第N条路径的运行位置,即运行该路径的处理器及其内核;当所有N条初始执行路径安排完运行位置之后,将此时处理器个数、最后一个任务完成时间和总能耗作为一种可选调度方案,添加到{处理器个数、完成时间、总能耗}列表中。
5.如权利要求1所述的并行任务分组调度方法,其特征在于:所述的步骤(3)的具体步骤如下: 不断重复执行步骤(3),直到调度方案的完成时间超过允许的总体完成时间为止;在所有的可选调度方案列表中,在允许的总体完成时间范围内,选择节约能耗最多的一组调度方案作为最终调度。
全文摘要
本发明具体公开了一种同构多核集群服务器上基于依赖度的并行任务分组调度方法,通过计算执行路径之间的依赖度,在不增加执行路径最大负载前提下,将执行路径之间依赖度大的路径进行合并,相对于原来算法,本方法能够减少不必要的任务复制开销、处理器之间通信开销和处理器的空闲时间能耗,使处理器负载更加平衡,从而达到整体能耗减少。本发明最大的特点就是有效地减少处理器的使用个数,提高了资源的利用效率,使处理器负载更加平衡,从而达到整体能耗减少。
文档编号G06F9/50GK103235742SQ20131011786
公开日2013年8月7日 申请日期2013年4月7日 优先权日2013年4月7日
发明者李新, 贾智平, 赵衍恒, 谢帅 申请人:山东大学