任务分配装置和任务分配方法

文档序号:6443891阅读:108来源:国知局
专利名称:任务分配装置和任务分配方法
技术领域
本发明涉及计算机技术领域,具体而言,涉及任务分配装置和任务分配方法。
背景技术
在计算机技术领域中,大量存在着这样的计算场景一个复杂的计算任务模型由多个有依赖性的计算任务组成,依赖任务只能在被依赖任务完成后才能进行计算,而不具有依赖关系的计算任务可并行计算。同时,这些任务计算量具有时间可变性即每次计算时任务计算量不同,且其计算量对被依赖任务的输出敏感;同时,不同的任务其计算量具有较大的差异性。如图1,一个典型的计算任务模型实例的执行过程如下在这个实例中包含任务1-1、任务2-1、任务2-2、任务3-1、任务3-2,这些任务的计算量均不相同且不可分割。其中任务2-1、任务2-2这两个任务依赖于任务1-1的完成,并且可以并行计算。任务3-1依赖于任务2-1的完成,任务3-2依赖于任务2-1,任务2-2的完成,并且任务3-1、任务3-2可以并行计算。对于这类计算任务模型,如何把任务分配到计算资源上,以获得优选的计算时间, 是一个很重要的问题。在并行计算领域现有技术解决方案主要有以下几种1,基于计算资源的能力,人为静态指定任务分配到哪些计算资源;2,引入分配服务器,对计算资源建立任务队列,分配服务器监测计算资源任务队列中待执行任务数的多少来分配计算资源;3,编译时建立任务间的静态依赖关系,依赖于其它任务完成的任务设置启动点,被依赖任务完成后通知依赖任务执行,同时在编译时基于任务关键路径进行任务分配建立执行链。目前这些方法均要求任务的计算量有基本稳定的特征,任务间的计算量差异较小的特征,同时未考虑计算资源的能力差异性。这些方法会导致不同计算资源从计算量角度看会出现分配不合理的情况,出现计算任务未分配到可最早可完成的计算资源上,从而导致任务最终完成需要更多的时间。分析目前技术方案主要存在的问题在于没有考虑任务的计算量的可变性、任务间计算量的差异性、计算资源的计算能力差异。因此,需要一种新的任务分配方法,能够更合理地分配计算资源,提高整个计算任务的执行效率。

发明内容
本发明所要解决的技术问题在于,需要提出一种新的任务分配方法,能够更合理地分配计算资源,提高整个计算任务的执行效率。有鉴于此,本发明提供了一种任务分配装置,包括依赖分析模块,根据第一组任务以及所述第一组任务之间的依赖关系,从所述第一组任务中取得被依赖任务不存在或已完成的第二组任务;时间计算模块,计算所述第二组任务中每个任务的预计完成时间;任务分配模块,根据所述预计完成时间,将为所述第二组任务逐次分配给计算资源以进行执行。在该技术方案中,以预计完成时间为标准,对当前可执行(被依赖任务不存在或已完成)的任务进行了计算量计算,实现了任务的合理分配。在上述技术方案中,优选地,所述依赖分析模块在所述第二组任务中的任一任务执行完成时,从所述第一组任务中取得新的被依赖任务不存在或已完成的任务,加入所述第二组任务。在该技术方案中,根据任务完成情况,更新被依赖任务不存在或已完成的任务,能够保证当前情况下任务的合理分配。在上述技术方案中,优选地,所述依赖分析模块还存储所述依赖关系,并在所述第二组任务中的任一任务执行完成时,对所述依赖关系中与所述已完成任务相关的部分进行修改,并根据所述依赖关系修改的部分,取得所述新的被依赖任务不存在或已完成的任务。 在该技术方案中,可以防止给依赖任务分配计算资源,同时当依赖任务状态改变时,可以及时根据改变的依赖关系来分配任务,保证了任务分配的合理性。在上述技术方案中,优选地,所述的任务分配装置,还包括状态设置模块,为所述第二组任务设置任务状态,所述时间计算模块根据所述任务状态,识别并选取所述第二组任务,再计算所述预计完成时间。在该技术方案中,通过任务状态的设置,可以轻易地识别出被哪些任务的被依赖任务已不存在,并准确地进行选取。在上述技术方案中,优选地,所述预计完成时间=max(所述计算资源当前执行任务的预计完工时间,当前时间)+ (所述第二组任务中每个任务的计算量/所述计算资源的处理速度)。在该技术方案中,通过在计算资源当前执行任务的预计完工时间与当前时间之间选取最大值,可以准确计算出任务完成所需的时间。本发明还提供了一种任务分配方法,包括步骤302,根据第一组任务以及所述第一组任务之间的依赖关系,从所述第一组任务中取得被依赖任务不存在或已完成的第二组任务;步骤304,计算所述第二组任务中每个任务的预计完成时间;步骤306,根据所述预计完成时间,将为所述第二组任务逐次分配给计算资源以进行执行。在该技术方案中,以预计完成时间为标准,对当前可执行(被依赖任务不存在或已完成)的任务进行了计算量计算, 实现了任务的合理分配。在上述技术方案中,优选地,所述的任务分配方法,还包括步骤308,在所述第二组任务中的任一任务执行完成时,从所述第一组任务中取得新的被依赖任务不存在或已完成的任务,加入所述第二组任务。在该技术方案中,根据任务完成情况,更新被依赖任务不存在或已完成的任务,能够保证当前情况下任务的合理分配。在上述技术方案中,优选地,所述步骤302还包括存储所述依赖关系;所述步骤 308具体包括在所述第二组任务中的任一任务执行完成时,对所述依赖关系中与所述已完成任务相关的部分进行修改,并根据所述依赖关系修改的部分,取得所述新的被依赖任务不存在或已完成的任务。在该技术方案中,可以防止给依赖任务分配计算资源,同时当依赖任务状态改变时,可以及时根据改变的依赖关系来分配任务,保证了任务分配的合理性。在上述技术方案中,优选地,所述步骤302还包括为所述第二组任务设置任务状态;所述步骤304具体包括根据所述任务状态,识别并选取所述第二组任务,再计算所述与预计完成时间。在该技术方案中,通过任务状态的设置,可以轻易地识别出被哪些任务的被依赖任务已不存在,并准确地进行选取。在上述技术方案中,优选地,所述预计完成时间=max(所述计算资源当前执行任务的预计完工时间,当前时间)+ (所述第二组任务中每个任务的计算量/所述计算资源的处理速度)。在该技术方案中,通过在计算资源当前执行任务的预计完工时间与当前时间之间选取最大值,可以准确计算出任务完成所需的时间。 综上所述,本发明通过充分考虑任务的计算量的可变性、任务间计算量的差异性、 计算资源的计算能力差异,通过对计算任务建立计算量模型,在每次计算时动态计算其计算量,按计算量及计算资源的时间分析来分配计算资源,以使任务能够按最早完成的原则分配计算资源,从而实现缩短计算任务执行时间的目的,使计算任务得到更好了的执行效能,提高了计算效率。


图1是现有技术中--个计算任务模型实例的示意图2是根据本发明--个实施例的任务分配装置的框图3是根据本发明--个实施例的任务分配方法的流程图4是根据本发明--个实施例的任务分配方法进行任务分配的流程图
图5是根据本发明--个实施例的任务分配方法进行任务分配的流程图
图6是根据本发明--个实施例的任务分配方法的原理示意图7是根据本发明--个实施例的计算资源状况的示意图8是根据本发明--个实施例的物料清单的示意图9是根据本发明--个实施例的任务依赖关系的示意图。
具体实施例方式为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式
对本发明进行进一步的详细描述。在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明并不限于下面公开的具体实施例的限制。图2是根据本发明一个实施例的任务分配装置的框图。如图2所示,本发明提供了一种任务分配装置200,包括依赖分析模块202,根据第一组任务以及第一组任务之间的依赖关系,从第一组任务中取得被依赖任务不存在或已完成的第二组任务;时间计算模块204,计算第二组任务中每个任务的预计完成时间;任务分配模块206,根据预计完成时间,将为第二组任务逐次分配给计算资源以进行执行。在该技术方案中,以预计完成时间为标准,对当前可执行(被依赖任务不存在或已完成)的任务进行了计算量计算,实现了任务的合理分配。在上述技术方案中,依赖分析模块202在第二组任务中的任一任务执行完成时, 从第一组任务中取得新的被依赖任务不存在或已完成的任务,加入第二组任务。在该技术方案中,根据任务完成情况,更新被依赖任务不存在或已完成的任务,能够保证当前情况下任务的合理分配。在上述技术方案中,依赖分析模块202还存储依赖关系,并在第二组任务中的任一任务执行完成时,对依赖关系中与已完成任务相关的部分进行修改,并根据依赖关系修改的部分,取得新的被依赖任务不存在或已完成的任务。在该技术方案中,可以防止给依赖任务分配计算资源,同时当依赖任务状态改变时,可以及时根据改变的依赖关系来分配任务,保证了任务分配的合理性。在上述技术方案中,还包括状态设置模块208,为第二组任务设置任务状态,时间计算模块204根据任务状态,识别并选取第二组任务,再计算预计完成时间。在该技术方案中,通过任务状态的设置,可以轻易地识别出被哪些任务的被依赖任务已不存在,并准确地进行选取。在上述技术方案中,所述的预计完成时间=max(计算资源当前执行任务的预计完工时间,当前时间)+ (第二组任务中每个任务的计算量/计算资源的处理速度)。在该技术方案中,通过在计算资源当前执行任务的预计完工时间与当前时间之间选取最大值,可以准确计算出任务完成所需的时间。图3是根据本发明一个实施例的任务分配方法的流程图。如图3所示,本发明还提供了一种任务分配方法,包括步骤302,根据第一组任务以及第一组任务之间的依赖关系,从第一组任务中取得被依赖任务不存在或已完成的第二组任务;步骤304,计算第二组任务中每个任务的预计完成时间;步骤306,根据预计完成时间,将为第二组任务逐次分配给计算资源以进行执行。在该技术方案中,以预计完成时间为标准,对当前可执行(被依赖任务不存在或已完成)的任务进行了计算量计算,实现了任务的合理分配。在上述技术方案中,优选地,的任务分配方法,还包括步骤308,在第二组任务中的任一任务执行完成时,从第一组任务中取得新的被依赖任务不存在或已完成的任务,加入第二组任务。在该技术方案中,根据任务完成情况,更新被依赖任务不存在或已完成的任务,能够保证当前情况下任务的合理分配。在上述技术方案中,优选地,步骤302还包括存储依赖关系;步骤308具体包括 在第二组任务中的任一任务执行完成时,对依赖关系中与已完成任务相关的部分进行修改,并根据依赖关系修改的部分,取得新的被依赖任务不存在或已完成的任务。在该技术方案中,可以防止给依赖任务分配计算资源,同时当依赖任务状态改变时,可以及时根据改变的依赖关系来分配任务,保证了任务分配的合理性。在上述技术方案中,优选地,步骤302还包括为第二组任务设置任务状态;步骤 304具体包括根据任务状态,识别并选取第二组任务,再计算与预计完成时间。在该技术方案中,通过任务状态的设置,可以轻易地识别出被哪些任务的被依赖任务已不存在,并准确地进行选取。在上述技术方案中,优选地,预计完成时间=max(计算资源当前执行任务的预计完工时间,当前时间)+ (第二组任务中每个任务的计算量/计算资源的处理速度)。在该技术方案中,通过在计算资源当前执行任务的预计完工时间与当前时间之间选取最大值,可以准确计算出任务完成所需的时间。以上,本发明中技术方案充分考量计算任务的计算量特征以及计算资源的能力特征,通过对计算任务建立计算量模型,在每次计算时动态计算其计算量,按计算量及计算资源的时间预占分析来分配计算资源,以使任务能够按最早完成的原则分配计算资源,从而实现缩短计算任务执行时间的目的,使计算任务得到更好的执行效能。在本发明的一个实施例中,提供基于任务计算量动态评估的任务分配方法,接收计算任务,启动计算任务,对任务进行动态计算量评估,优先分配高计算量任务,按计算资源当前所有工作项预测完成时间最早的原则优先分配任务,评估依赖性满足情况,启动依赖性任务的调度并进行资源分配计算,最终完成计算结果。如图4所示,主要包含三个过程P1,计算任务启动;P2,计算量评估;P3,任务分配及执行。详细步骤如图5所示P1,计算任务启动,该过程主要包括以下步骤接收计算任务及其依赖性模型,放入任务模型DlO及任务依赖型存储D20。此时任务状态为等待调度。S110,从任务依赖型存储D20获取被依赖任务集不存在的任务集,在任务模型DlO 中把这个任务集中的任务状态更新为可评估。P2,计算量评估过程,该过程主要包括以下步骤S210,从任务模型DlO获取可评估状态的任务,评估任务的计算量,并在任务模型 DlO中更新任务状态为可分配并存储任务的计算量。P3,任务分配及执行,该过程主要包括S310,从任务模型DlO获取可分配状态的计算任务,按计算量由大到小进行任务排序,任务分配给预计完工时间最早的计算资源。S320,任务发送给计算资源,更新任务模型DlO中任务状态为已分配。S330,计算资源任务计算完成后,反馈完成信息,更新任务模型DlO中任务状态为已完成。S340,从任务依赖型存储D20中获取当前任务对应的依赖任务,如果当前任务的完成使得后续依赖任务的依赖条件满足,则把依赖任务在任务模型DlO中置为可评估状态。返回P2,再计算量评估过程,对可评估的任务进行计算量评估。根据以上步骤的任务分配方法,可以实现一种任务调度器结构,主要包括任务管理器(相当于前述的时间计算模块)、任务依赖性管理器(相当于前述的依赖分析模块)、 计算资源分配器(相当于前述的任务分配模块),其中1.任务管理器,存储任务模型及对任务状态进行管理并对任务的计算量进行评估。任务模型主要包括任务状态及其计算量模型。如图6,任务状态主要包括等待调度602、可调度604、可分配606、已分配608、完成610。当任务创建及接收时,任务处于等待调度状态602 ;当任务人工启动或者任务的依赖条件得到满足时,任务状态跃迁到可评估状态604 ;当对任务的计算量评估完成时,任务状态跃迁到可分配状态606 ;当任务分配计算资源并发送给计算资源后,任务状态跃迁到已分配状态608 ;当计算资源完成任务并返回结果时,任务状态跃迁为完成状态610。任务的计算量模型定义了任务的计算特征计算规模及其计算量的关系。依据任务的计算特点及其历史执行的情况分析并拟合得出其模型,定义出其关键计算规模集合 {nl, n2, n3. . . }及其计算量函数f (nl,n2, n3...)。当对任务进行计算量评估时获取计算规模集合的值并通过计算计算量f函数得出任务计算量。
2.任务依赖性管理器,存储任务间的依赖关系并在任务计算完成后评估依赖性满足情况。对任务间的依赖关系模型进行存储及管理。通过D20依赖矩阵存储任务间依赖关系。表1中依赖矩阵实例表达了任务2依赖于任务1的情况。
权利要求
1.一种任务分配装置,其特征在于,包括依赖分析模块,根据第一组任务以及所述第一组任务之间的依赖关系,从所述第一组任务中取得被依赖任务不存在或已完成的第二组任务;时间计算模块,计算所述第二组任务中每个任务的预计完成时间;任务分配模块,根据所述预计完成时间,将为所述第二组任务逐次分配给计算资源以进行执行。
2.根据权利要求1所述的任务分配装置,其特征在于,所述依赖分析模块在所述第二组任务中的任一任务执行完成时,从所述第一组任务中取得新的被依赖任务不存在或已完成的任务,加入所述第二组任务。
3.根据权利要求1所述的任务分配装置,其特征在于,所述依赖分析模块还存储所述依赖关系,并在所述第二组任务中的任一任务执行完成时,对所述依赖关系中与所述已完成任务相关的部分进行修改,并根据所述依赖关系修改的部分,取得所述新的被依赖任务不存在或已完成的任务。
4.根据权利要求1所述的任务分配装置,其特征在于,还包括状态设置模块,为所述第二组任务设置任务状态,所述时间计算模块根据所述任务状态,识别并选取所述第二组任务,再计算所述预计完成时间。
5.根据权利要求1至4中任一项所述的任务分配装置,其特征在于,所述预计完成时间 =max(所述计算资源当前执行任务的预计完工时间,当前时间)+ (所述第二组任务中每个任务的计算量/所述计算资源的处理速度)。
6.一种任务分配方法,其特征在于,包括步骤302,根据第一组任务以及所述第一组任务之间的依赖关系,从所述第一组任务中取得被依赖任务不存在或已完成的第二组任务;步骤304,计算所述第二组任务中每个任务的预计完成时间;步骤306,根据所述预计完成时间,将为所述第二组任务逐次分配给计算资源以进行执行。
7.根据权利要求6所述的任务分配方法,其特征在于,还包括步骤308,在所述第二组任务中的任一任务执行完成时,从所述第一组任务中取得新的被依赖任务不存在或已完成的任务,加入所述第二组任务。
8.根据权利要求6所述的任务分配方法,其特征在于,所述步骤302还包括存储所述依赖关系;所述步骤308具体包括在所述第二组任务中的任一任务执行完成时,对所述依赖关系中与所述已完成任务相关的部分进行修改,并根据所述依赖关系修改的部分,取得所述新的被依赖任务不存在或已完成的任务。
9.根据权利要求6所述的任务分配方法,其特征在于,所述步骤302还包括为所述第二组任务设置任务状态;所述步骤304具体包括根据所述任务状态,识别并选取所述第二组任务,再计算所述与预计完成时间。
10.根据权利要求6至9中任一项所述的任务分配方法,其特征在于,所述预计完成时间=max (所述计算资源当前执行任务的预计完工时间,当前时间)+ (所述第二组任务中每个任务的计算量/所述计算资源的处理速度)。
全文摘要
本发明提供了一种任务分配装置,包括依赖分析模块,根据第一组任务以及所述第一组任务之间的依赖关系,从所述第一组任务中取得被依赖任务不存在或已完成的第二组任务;时间计算模块,计算所述第二组任务中每个任务的预计完成时间;任务分配模块,根据所述预计完成时间,将为所述第二组任务逐次分配给计算资源以进行执行。相应地,本发明还提供了一种任务分配方法。通过对依赖关系和计算量的分析,实现了更合理地分配计算资源,提高了计算效率。
文档编号G06F9/50GK102521056SQ20111044887
公开日2012年6月27日 申请日期2011年12月28日 优先权日2011年12月28日
发明者祝奇 申请人:用友软件股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1