首页> 中国专利> 一种基于拓扑排序的任务调度方法及系统

一种基于拓扑排序的任务调度方法及系统

摘要

本发明公开了一种基于拓扑排序的任务调度方法及系统,属于计算机系统技术领域。包括:获取大规模有向无环任务调度图,并基于拓扑排序的粗化算法对大规模有向无环任务调度图进行多级粗化处理,以获得对应的有向无环初始调度图;基于小规模调度算法对有向无环初始调度图进行初始划分,以获得有向无环初始调度图的粗化图划分结果;基于细化算法将粗化图划分结果映射回大规模有向无环任务调度图,并进行细化调整,以获得大规模有向无环任务调度图的任务调度划分结果。由于预先对大规模有向无环任务调度图进行了多级粗化处理,对任务进行了聚类,从而对于大规模任务调度场景,使用任务调度算法也能够有效缩小处理量,进而降低运算复杂度。

著录项

  • 公开/公告号CN112948087A

    专利类型发明专利

  • 公开/公告日2021-06-11

    原文格式PDF

  • 申请/专利权人 湖南大学;

    申请/专利号CN202110252562.5

  • 申请日2021-03-09

  • 分类号G06F9/48(20060101);

  • 代理机构42233 武汉臻诚专利代理事务所(普通合伙);

  • 代理人宋业斌

  • 地址 410082 湖南省长沙市岳麓区麓山南路1号

  • 入库时间 2023-06-19 11:22:42

说明书

技术领域

本发明属于计算机系统技术领域,更具体地,涉及一种基于拓扑排序的任务调度方法及系统。

背景技术

目前传统的任务调度算法,比如异构计算环境下最早完成时间算法以及基于任务复制的调度算法等。其中,最早完成时间算法是一种基础的静态调度算法,其主要思路是将各个任务都安排在能够使它最早完成的处理器上执行,具体是根据任务有向无环图中的依赖关系,在调度之前分别计算所有任务在各个处理器上的最早完成时间,然后通过比较得到最小的最早完成时间和能够满足该条件的处理器,将任务和该处理器进行一个匹配并对应相应的占用时段,在所有任务和处理器完成匹配后,再将整个工作流的任务依此调度至对应的处理器上进行运行。

而对于基于任务复制的调度算法,其主要思路是在基于复制任务的调度中,通过跟踪任务的异构系统给出的关键路径图来将任务分配或者复制到更快的机器中。对于上述第一种算法,需要在调度之前分别计算所有任务在各个处理器上的最早完成时间,这导致在需要进行大规模任务调度时,任务太多对应计算量也大,从而其聚类调度的复杂度太高。对于上述第二种算法,由于需要进行任务复制,在进行大规模任务调度时,需要复制的任务会很多,从而同样聚类调度的运算复杂度也会很高。

发明内容

针对现有技术的以上缺陷或改进需求,本发明提供了一种基于拓扑排序的任务调度方法及系统,其目的在于,解决现有任务调度算法由于大规模任务需要进行大量任务复制或者大量计算完成时间而导致运算复杂度较高的技术问题。

为实现上述目的,按照本发明的第一个方面,提供了一种基于拓扑排序的任务调度方法,包括以下步骤:

获取大规模有向无环任务调度图,并基于拓扑排序的粗化算法对大规模有向无环任务调度图进行多级粗化处理,以获得对应的有向无环初始调度图;

基于小规模调度算法对有向无环初始调度图进行初始划分,以获得有向无环初始调度图的粗化图划分结果。

基于细化算法将粗化图划分结果映射回大规模有向无环任务调度图,并进行细化调整,以获得大规模有向无环任务调度图的任务调度划分结果。

优选地,基于拓扑排序的粗化算法对大规模有向无环任务调度图进行多级粗化处理,以获得对应的有向无环初始调度图这一过程进一步包括:根据大规模有向无环任务调度图中每一节点的输入顺序,对大规模有向无环任务调度图中的节点依次遍历以进行聚类,若所有节点完成遍历聚类后,大规模有向无环任务调度图中的节点数量大于预设阈值,则重复上述遍历聚类过程,直至大规模有向无环任务调度图中的节点数量不大于预设阈值,以得到有向无环初始调度图。

优选地,根据大规模有向无环任务调度图中每一节点的输入顺序,对大规模有向无环任务调度图中的节点依次遍历以进行聚类这一过程进一步包括:

对于大规模有向无环任务调度图中的任一节点,若该节点满足第一预设条件,则从该节点的候选节点集合中选取好邻居节点,并将选取的好邻居节点与该节点进行聚类;

若该节点不满足第一预设条件,则不对该节点进行聚类,并根据输入顺序,继续对该节点的后续节点进行聚类,直至大规模有向无环任务调度图中所有节点均完成遍历聚类;

其中,候选节点集合是由能够与该节点进行聚类的候选节点所确定的,第一预设条件为该节点为单一节点且候选节点集合不为空;该节点的候选节点满足第二预设条件,第二预设条件包括与该节点为邻居节点、与该节点之间Top值差值的绝对值小于1以及第二预设子条件,第二预设子条件为该节点的坏邻居节点数量为0或者该节点的坏邻居节点数量为1且该节点的坏邻居节点位于候选节点所处的聚类;

该节点的邻居节点指的是与该节点直接相连的直接前驱节点或者直接后继节点;该节点的好邻居节点指的是基于预设规则选取的以能够与该节点进行聚类的邻居节点;若该节点所处聚类中每一节点与该节点的邻居节点所处聚类中每一节点之间Top值差值的绝对值小于1,则邻居节点为该节点的坏邻居节点;该节点的Top值指的是从大规模有向无环任务调度图的入度节点至该节点的最长路径的长度。

优选地,该方法进一步包括将选取的好邻居节点与任一节点进行聚类之后的如下步骤:

将任一节点作为节点u,对于节点u的任一邻居节点v,若节点u与节点v之间Top值差值的绝对值大于1,则不对节点u的坏邻居信息进行更新;

若节点u与节点之间Top值差值的绝对值不大于1且节点v的坏邻居节点数量为0,则将节点v的坏邻居节点数量赋值为1,并将节点v的坏邻居节点记为节点u所处的聚类;

若节点u与节点之间Top值差值的绝对值不大于1、节点v的坏邻居节点数量为1且节点v的坏邻居节点不位于节点v所处的聚类,则将节点v的坏邻居节点数量赋值为2。

优选地,该方法进一步包括将选取的好邻居节点与任一节点进行聚类之后的如下步骤:

将任一节点作为节点u,对于节点u的任一好邻居节点w以及节点w的任一邻居节点k,若节点w为单一节点、节点w与节点k之间Top值差值的绝对值不大于1且节点k的坏邻居节点数量为0,则将节点k的坏邻居数量赋值为1,并将节点k的坏邻居节点记为节点w所处的聚类;

若节点w为单一节点、节点w与节点k之间Top值差值的绝对值不大于1、节点k的坏邻居节点数量为1且节点k的坏邻居节点不位于节点w所处的聚类,则将节点k的坏邻居数量赋值为2;

若节点w为单一节点且节点w与节点k之间Top值差值的绝对值大于1,则对节点w除节点k之外的其它邻居节点的坏邻居数量进行更新。

优选地,基于小规模调度算法对有向无环初始调度图进行初始划分,以获得有向无环初始调度图的粗化图划分结果这一过程进一步包括:

获取由有向无环初始调度图中每一节点的RankUp值所构成的调度列表,RankUp值用于衡量完成节点对应任务所花费的时长;

根据调度列表中RankUp值从低至高的排列顺序,依次对有向无环初始调度图中的节点对应任务进行分区分配,以得到有向无环初始调度图的粗化图划分结果。

优选地,根据调度列表中RankUp值从低至高的排列顺序,依次对有向无环初始调度图中的节点对应任务进行分区分配这一过程进一步包括:

对于任一待分区分配的节点所对应的任务,获取在系统中每一处理器上完成任务所耗费的时长,并将最短时长对应的处理器作为放置任务以执行任务的处理器。

优选地,RankUp值通过如下公式计算:

其中,n

其中,w

优选地,基于细化算法将粗化图划分结果映射回大规模有向无环任务调度图,并进行细化调整,以获得大规模有向无环任务调度图的任务调度划分结果这一过程进一步包括:

获取映射后的大规模有向无环任务调度图中边界节点的增益值,将所有边界节点的增益值按照从大到小进行排序,并基于排序结果构建优先队列,最大增益值对应的边界节点位于队首;

从优先队列中取出队首节点,若从队首节点所处的原分区中移走队首节点不会造成原分区不平衡,则从队首节点的所有邻居分区中确定最适合移动的目标分区,并判断移走队首节点后是否会使得原分区以及目标分区更平衡,若能够更平衡,则将队首节点移动至目标分区,并更新队首节点的邻居节点的增益值,重复上述移动节点的过程直至优先队列为空,以得到任务调度划分结果。

按照本发明的第二个方面,提供了一种基于拓扑排序的任务调度系统,包括:

第一模块,用于获取大规模有向无环任务调度图,并基于拓扑排序的粗化算法对大规模有向无环任务调度图进行多级粗化处理,以获得对应的有向无环初始调度图;

第二模块,用于基于小规模调度算法对有向无环初始调度图进行初始划分,以获得有向无环初始调度图的粗化图划分结果;

第三模块,用于基于细化算法将粗化图划分结果映射回大规模有向无环任务调度图,并进行细化调整,以获得大规模有向无环任务调度图的任务调度划分结果。

本发明实施例提供的基于拓扑排序的任务调度方法及系统,通过本发明所构思的以上技术方案与现有技术相比,能够取得如下有益效果:

(1)由于本发明实施例预先对大规模有向无环任务调度图进行了多级粗化处理,对任务进行了聚类,从而对于大规模任务调度场景,使用任务调度算法也能够有效缩小处理量,进而降低运算复杂度,减少了大规模任务调度的时间。

(2)由于本发明实施例在通过多级粗化处理对节点进行聚类时,是基于好邻居节点进行聚类,而一个节点的好邻居节点是基于该节点与其邻居节点之间Top值差值的绝对值所确定的,而一个节点的Top值能够反映从入度节点到该节点的路径长度,从而使得聚类时考虑到了路径长度所带来的时延,会使得关键调度路径的长度大大减少,进而能够进一步降低运算复杂度,减少了大规模任务调度的时间。

(3)由于本发明实施例在基于小规模调度算法对有向无环初始调度图进行初始划分时,结合了每一节点的RankUp值,而RankUp值能够衡量节点对应任务所花费的时长,通过优先对RankUp值低的节点对应任务进行分区分配,从而提高后续任务处理的效率,减少了大规模任务调度的时间。

(4)由于本发明实施例在进行细化调整时,可以基于大规模有向无环任务调度图中边界节点的增益值,优先选取增益值大的边界节点进行调整,也即对该边界节点对应任务重新移动调整至哪个处理器上执行更加平衡进行考量,从而能够进一步提高后续任务处理的效率,减少了大规模任务调度的时间。

附图说明

图1是本发明实施例提供的一种基于拓扑排序的任务调度方法的流程示意图;

图2是本发明实施例提供的一种粗化过程的粗化流程示意图;

图3是本发明实施例提供的一种粗化过程示例图;

图4是本发明实施例提供的一种初始划分流程示意图;

图5是本发明实施例提供的一种FM算法的流程示意图;

图6是本发明实施例提供的一种FM算法的运算示例图;

图7为本发明实施例提供的一种基于拓扑排序的任务调度系统的结构示意图;

图8为本发明实施例提供的一种电子设备的结构示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。

目前传统的任务调度算法,比如异构计算环境下最早完成时间算法以及基于任务复制的调度算法等。其中,最早完成时间算法是一种基础的静态调度算法,其主要思路是将所有任务都安排在能够使它最早完成的处理器上执行,具体是根据任务有向无环图中的依赖关系,在调度之前分别计算所有任务在各个处理器上的最早完成时间,然后通过比较得到最小的最早完成时间和能够满足该条件的处理器,将任务和该处理器进行一个匹配并对应相应的占用时段,在所有任务和处理器完成匹配后,再将整个工作流的任务依此调度至对应的处理器上进行运行。

而对于基于任务复制的调度算法,其主要思路是在基于复制任务的调度中,通过跟踪任务的异构系统给出的关键路径图来将任务分配或者复制到更快的机器中。对于上述第一种算法,需要在调度之前分别计算所有任务在各个处理器上的最早完成时间,这导致在需要进行大规模任务调度时,任务太多对应计算量也大,从而其聚类调度的复杂度太高。对于上述第二种算法,由于需要进行任务复制,在进行大规模任务调度时,需要复制的任务会很多,从而同样聚类调度的复杂度也会很高。

基于上述存在的问题,本发明实施例提供了一种基于拓扑排序的任务调度方法。该方法可以应用于由多个处理器构成的大规模云计算系统中,本发明实施例对此不作具体限定。如图1所示,该方法包括:

101、获取大规模有向无环任务调度图,并基于拓扑排序的粗化算法对大规模有向无环任务调度图进行多级粗化处理,以获得对应的有向无环初始调度图;

102、基于小规模调度算法对有向无环初始调度图进行初始划分,以获得有向无环初始调度图的粗化图划分结果。

103、基于细化算法将粗化图划分结果映射回大规模有向无环任务调度图,并进行细化调整,以获得大规模有向无环任务调度图的任务调度划分结果。

在上述步骤101中,大规模有向无环任务调度图是基于多个任务之间的执行顺序将多个任务进行有向连线所形成的。多级粗化指的是进行多层的粗化,即通过将节点进行聚类以将多个节点聚类成一个节点,以使得每层粗化形成的有向无环粗化图均比上一层的有向无环粗化图规模更小,直至有向无环粗化图的规模小于预设规模P,即可得到有向无环初始调度图。其中,预设规模即为预设的节点数量。

在上述步骤102中,小规模调度算法可以为异构计算环境下最早完成时间算法或基于任务复制的调度算法等,本发明实施例对此不作具体限定。通过初始划分过程,可以将将每一节点对应任务进行初始的分区分配,也即可以初始确认将每一节点对应任务放置在哪个处理器上执行。

在上述步骤103中,在通过步骤102进行初始的分区分配后,可以进一步地对任务进行细化调整,也即进一步确定哪些任务改变下放置在哪个处理器上执行可能会更好,基于该思路,对边界节点对应任务放置在哪个处理器上处理进行细化调整,从而得到最终的任务调度划分结果。需要说明的是,最终的任务调度划分结果可以文件形式进行输出,也即最终可以得到一个文件记载每一节点所在分区,也即每一节点对应任务放在哪个处理器上处理。

本发明实施例提供的方法,可以带来如下有益效果:

(1)由于本发明实施例预先对大规模有向无环任务调度图进行了多级粗化处理,对任务进行了聚类,从而对于大规模任务调度场景,使用任务调度算法也能够有效缩小处理量,进而降低运算复杂度,减少了大规模任务调度的时间。

(2)由于本发明实施例在通过多级粗化处理对节点进行聚类时,是基于好邻居节点进行聚类,而一个节点的好邻居节点是基于该节点与其邻居节点之间Top值差值的绝对值所确定的,而一个节点的Top值能够反映从入度节点到该节点的路径长度,从而使得聚类时考虑到了路径长度所带来的时延,会使得关键调度路径的长度大大减少,进而能够进一步降低运算复杂度,减少了大规模任务调度的时间。

(3)由于本发明实施例在基于小规模调度算法对有向无环初始调度图进行初始划分时,结合了每一节点的RankUp值,而RankUp值能够衡量节点对应任务所花费的时长,通过优先对RankUp值低的节点对应任务进行分区分配,从而提高后续任务处理的效率,减少了大规模任务调度的时间。

(4)由于本发明实施例在进行细化调整时,可以基于大规模有向无环任务调度图中边界节点的增益值,优先选取增益值大的边界节点进行调整,也即对该边界节点对应任务重新移动调整至哪个处理器上执行更加平衡进行考量,从而能够进一步提高后续任务处理的效率,减少了大规模任务调度的时间。

基于上述实施例的内容,作为一种可选实施例,基于拓扑排序的粗化算法对大规模有向无环任务调度图进行多级粗化处理,以获得对应的有向无环初始调度图这一过程进一步包括:根据大规模有向无环任务调度图中每一节点的输入顺序,对大规模有向无环任务调度图中的节点依次遍历以进行聚类,若所有节点完成遍历聚类后,大规模有向无环任务调度图中的节点数量大于预设阈值,则重复上述遍历聚类过程,直至大规模有向无环任务调度图中的节点数量不大于预设阈值,以得到有向无环初始调度图。

其中,每一节点对应任务是存在先后执行顺序的,也即存在输入顺序。另外,在开始上述遍历聚类的过程之前,可以设置一个计数器a,且a的初始值为1,每进行依次遍历聚类均可以使得a的数值加1,并由此设置遍历聚类进行的次数上限,如100次,以防止过度进行遍历聚类。

基于上述实施例的内容,作为一种可选实施例,根据大规模有向无环任务调度图中每一节点的输入顺序,对大规模有向无环任务调度图中的节点依次遍历以进行聚类这一过程进一步包括:

对于大规模有向无环任务调度图中的任一节点,若该节点满足第一预设条件,则从该节点的候选节点集合中选取好邻居节点,并将选取的好邻居节点与该节点进行聚类;

若该节点不满足第一预设条件,则不对该节点进行聚类,并根据输入顺序,继续对该节点的后续节点进行聚类,直至大规模有向无环任务调度图中所有节点均完成遍历聚类;

其中,候选节点集合是由能够与该节点进行聚类的候选节点所确定的,第一预设条件为该节点为单一节点且候选节点集合不为空;该节点的候选节点满足第二预设条件,第二预设条件包括与该节点为邻居节点、与该节点之间Top值差值的绝对值小于1以及第二预设子条件,第二预设子条件为该节点的坏邻居节点数量为0或者该节点的坏邻居节点数量为1且该节点的坏邻居节点位于候选节点所处的聚类;

该节点的邻居节点指的是与该节点直接相连的直接前驱节点或者直接后继节点;该节点的好邻居节点指的是基于预设规则选取的以能够与该节点进行聚类的邻居节点;若该节点所处聚类中每一节点与该节点的邻居节点所处聚类中每一节点之间Top值差值的绝对值小于1,则邻居节点为该节点的坏邻居节点;该节点的Top值指的是从大规模有向无环任务调度图的入度节点至该节点的最长路径的长度。

需要说明的是,在执行上述过程之前,可以先计算每一节点的Top值,计算每一节点的权重,将每一节点的坏邻居数量初始化为0,并将每一节点的坏邻居聚类标志设置成-1。若一个节点的坏邻居聚类标志为-1,则表示该节点没有坏邻居节点BadNeigh。

具体地,以任一节点为节点u为例,若节点u不是单一节点,则跳过节点u的聚类。若节点u是单一节点,则计算出所有能与其聚合的候选节点,并将其记为候选节点集合N。如果N为空,则同样跳过节点u的聚类。

若N不为空,则从N中选出一个好邻居节点,将该好邻居节点与节点u进行聚类,并更新聚类后形成的节点对应的权重。其中,聚类后形成的节点对应的权重为该聚类中所有节点权重之和。

以节点u的邻居节点为节点v为例,节点v作为节点u的候选节点需要满足以下三个条件:

①是u的邻居节点;

②|Top[u]-Top[v]|<=1;

③假设节点v满足条件1和2,如果节点v是候选节点,那么它还应该满足节点u的坏邻居节点数量为0;或者节点u的坏邻居节点数量为1,并且节点u的坏邻居节点位于节点v所处的聚类。

对于节点u,节点u的直接前驱节点和直接后继节点被称为u的邻居节点。好邻居节点(BestNeigh)是指,当一个节点u可以和多个节点聚类时,可以根据某些规则而选出来作为与节点u聚类的节点,比如根据与节点u相连的最大边权的边上的另一个节点。坏邻居节点(BadNeigh)是指,如果一个节点u和节点v直接相连,且节点u与节点v所在的聚类中所有节点的Top值相差不超过1,那么节点v是节点u的一个坏邻居。节点的Top值是指,入度节点到该顶点的最长路径的长度。节点的权重代表任务在该节点需要处理的预估时间,边权代表节点之间的通信时延,入度节点表示大规模有向无环任务调度图的起始节点。

经历上述过程之后,还可以进一步对节点u的坏邻居信息进行更新。基于上述实施例的内容,作为一种可选实施例,该方法进一步包括将选取的好邻居节点与任一节点进行聚类之后的如下步骤:

将任一节点作为节点u,对于节点u的任一邻居节点v,若节点u与节点v之间Top值差值的绝对值大于1,则不对节点u的坏邻居信息进行更新;

若节点u与节点之间Top值差值的绝对值不大于1且节点v的坏邻居节点数量为0,则将节点v的坏邻居节点数量赋值为1,并将节点v的坏邻居节点记为节点u所处的聚类;

若节点u与节点之间Top值差值的绝对值不大于1、节点v的坏邻居节点数量为1且节点v的坏邻居节点不位于节点v所处的聚类,则将节点v的坏邻居节点数量赋值为2。

例如,设节点v是节点u的一个邻居节点,如果节点u和节点v之间Top值差值的绝对值大于1,则无需更新节点v的坏邻居信息。否则,接下来判断节点v的坏邻居节点数量是否为0,如果为0,则将节点v的坏邻居数量赋值为1,并且把节点v的坏邻居节点记为节点u所处的聚类;如果节点v的坏邻居数为1并且节点v的坏邻居节点不位于节点v所处的聚类,则将节点v的坏邻居节点数量记为2。

经历上述过程之后,还可以使得节点u的好邻居节点的邻居节点获知节点u的好邻居节点不再是单一节点。基于上述实施例的内容,作为一种可选实施例,该方法进一步包括将选取的好邻居节点与任一节点进行聚类之后的如下步骤:

将任一节点作为节点u,对于节点u的任一好邻居节点w以及节点w的任一邻居节点k,若节点w为单一节点、节点w与节点k之间Top值差值的绝对值不大于1且节点k的坏邻居节点数量为0,则将节点k的坏邻居数量赋值为1,并将节点k的坏邻居节点记为节点w所处的聚类;

若节点w为单一节点、节点w与节点k之间Top值差值的绝对值不大于1、节点k的坏邻居节点数量为1且节点k的坏邻居节点不位于节点w所处的聚类,则将节点k的坏邻居数量赋值为2;

若节点w为单一节点且节点w与节点k之间Top值差值的绝对值大于1,则对节点w除节点k之外的其它邻居节点的坏邻居数量进行更新。

具体地,若节点w本身就不是单一节点,则无需执行后续过程。若节点w是单一节点,设节点k是节点w的一个邻居节点,如果节点w和节点k之间Top值差值的绝对值大于1,则继续对节点w除节点k之外的其它邻居节点的信息进行更新。否则,接下来判断节点k的坏邻居节点数量是否为0,如果为0,则将节点k的坏邻居数量赋值为1,并且把节点k的坏邻居节点记为节点w所处的聚类;如果节点k的坏邻居节点数量为1并且节点k的坏邻居节点不是节点w所处的聚类,则将节点k的坏邻居节点数量记为2。执行完上述过程之后,可将节点w的标志位设置为true,以表示其不再为单一节点了。与此同时,还可将节点u的标志位设置为true,同样表示其已经不是一个单一节点了。其中,基于拓扑排序的粗化算法进行粗化过程的粗化流程示意图可参考图2,粗化过程示例图可参考图3。

基于上述实施例的内容,作为一种可选实施例,基于小规模调度算法对有向无环初始调度图进行初始划分,以获得有向无环初始调度图的粗化图划分结果这一过程进一步包括:

获取由有向无环初始调度图中每一节点的RankUp值所构成的调度列表,RankUp值用于衡量完成节点对应任务所花费的时长;

根据调度列表中RankUp值从低至高的排列顺序,依次对有向无环初始调度图中的节点对应任务进行分区分配,以得到有向无环初始调度图的粗化图划分结果。

其中,小规模调度算法可以为异构计算环境下最早完成时间算法以及基于任务复制的调度算法等,本发明实施例对此不作具体限定。为了便于说明,本发明实施例以异构计算环境下最早完成时间算法为例,其原理主要是所有任务都安排在能够使它最早完成的处理器上执行。相应地,其步骤则是根据有向无环图中的依赖关系,在调度之前分别计算所有任务在各个处理器上的最早完成时间,然后通过比较得到最小的最早完成时间和能够满足该条件的处理器,将任务和该处理器进行一个匹配并对应相应的占用时段,在所有任务和处理器完成匹配后,再将整个工作流的任务依此调度至对应的处理器上进行运行。

基于上述实施例的内容,作为一种可选实施例,根据调度列表中RankUp值从低至高的排列顺序,依次对有向无环初始调度图中的节点对应任务进行分区分配这一过程进一步包括:

对于任一待分区分配的节点所对应的任务,获取在系统中每一处理器上完成任务所耗费的时长,并将最短时长对应的处理器作为放置任务以执行任务的处理器。

结合上述异构计算环境下最早完成时间算法的原理,在对节点对应任务进行分区分配时,在调度列表选择当前要调度的任务后,可先假设该任务在不同处理器上都正常执行完成,从而得到在每个处理器上的该任务的完成时间,并且进行比较,选择其中最早的完成时间对应的处理器,选择它作为要放置该任务执行的处理器,从而完成调度。调度列表中所有节点对应任务均按照上述过程进行处理,即可完成整个有向无环初始调度图的任务调度,并得到有向无环初始调度图的粗化图划分结果。其中,初始划分的过程可参考图4的初始划分流程示意图。

基于上述实施例的内容,作为一种可选实施例,RankUp值通过如下公式计算:

其中,n

其中,w

基于上述实施例的内容,作为一种可选实施例,基于细化算法将粗化图划分结果映射回大规模有向无环任务调度图,并进行细化调整,以获得大规模有向无环任务调度图的任务调度划分结果这一过程进一步包括:

获取映射后的大规模有向无环任务调度图中边界节点的增益值,将所有边界节点的增益值按照从大到小进行排序,并基于排序结果构建优先队列,最大增益值对应的边界节点位于队首;

从优先队列中取出队首节点,若从队首节点所处的原分区中移走队首节点不会造成原分区不平衡,则从队首节点的所有邻居分区中确定最适合移动的目标分区,并判断移走队首节点后是否会使得原分区以及目标分区更平衡,若能够更平衡,则将队首节点移动至目标分区,并更新队首节点的邻居节点的增益值,重复上述移动节点的过程直至优先队列为空,以得到任务调度划分结果。

上述过程即为FM(Factorization Machine,因式分解机)算法。需要说明的是,在进行移动节点的过程之前,同样可以设置一个计数器b,设置初始值为1,并可获取上述遍历聚类过程的次数记为M。其中,每进行一次移动节点的过程之后,均可以将b值加1,并判断b是否大于M,如果不大于M且优先队列不为空,则可以继续进行移动节点的过程。如果大于M或者优先队列为空,则可以停止移动节点的过程,并以此输出任务调度划分结果。其中,FM算法的流程示意图可参考图5。

具体地,同样以节点u为例,计算节点u的增益值公式可具体为:

在上述公式中,Gain(u)表示节点u的增益值,ed(u)表示节点u的异侧边权总和,id(u)表示节点u的同侧边权总和,nnbrs(u)表示节点u的邻居分区个数。

为了便于理解,现对nnbrs(u)的含义进行说明。给定图G=(V,E),正整数m,将节点集V划分为互不相交的k个集合V

与此同时,ed(u)及id(u)的计算方式可参考如下公式:

需要说明的是,只有当ed(u)>0,才称节点u为边界节点。

如图6中FM算法的运算示例图所示,虚线将A、B、C、D四个节点分割为左右2个分区。假定图6中的边权值为1,对节点A,共有2条边与其他节点相连,其中有2条边所连接的节点与节点A在不同的分区,即ed(A)=2。节点A有0条边所连接的节点与节点A在相同的分区,即id(A)=0,节点A的邻居分区个数nnbrs(A)=1。那么,节点A的增益值

对于节点C,共有2条边与其他节点相连,其中有1条边所连接的节点与节点C在不同的分区,即ed(C)=1。节点C有1条边所连接的节点与节点C在相同的分区,即id(C)=1,节点C的邻居分区个数nnbrs(C)=1。那么,节点C的增益值

为了便于理解,现对从优先队列中取节点进行移动进行进一步说明:将所有边界节点放入优先队列中并按增益值从大到小排序,每次取出队首节点,直至优先队列为空。每次取出队首节点后,首先判断移走该节点是否会使该节点所在的分区不平衡,如果会使该节点所在的分区不平衡则放弃移动该节点。然后,再从优先队列中取新的队首节点。

如果不会使该节点所在的分区不平衡,则从该节点的所有邻居分区中找一个最适合移动的目标分区,然后判断移动后是否会使原分区和目标分区更平衡,如果移动后不会更平衡则放弃移动该节点,然后再从优先队列中取新的队首节点。如果移动后会更平衡则将该节点移到目标分区,并更新与该节点相连的节点的增益值,然后继续取出新的队首节点,重复上述过程,直至优先队列为空。

基于上述实施例的内容,本发明实施例提供了一种基于拓扑排序的任务调度系统,该系统用于执行上述方法实施例中提供的基于拓扑排序的任务调度方法。参见图7,该系统包括:

第一模块701,用于获取大规模有向无环任务调度图,并基于拓扑排序的粗化算法对大规模有向无环任务调度图进行多级粗化处理,以获得对应的有向无环初始调度图;

第二模块702,用于基于小规模调度算法对有向无环初始调度图进行初始划分,以获得有向无环初始调度图的粗化图划分结果;

第三模块703,用于基于细化算法将粗化图划分结果映射回大规模有向无环任务调度图,并进行细化调整,以获得大规模有向无环任务调度图的任务调度划分结果。

图8示例了一种电子设备的实体结构示意图,如图8所示,该电子设备可以包括:处理器(processor)810、通信接口(Communications Interface)820、存储器(memory)830和通信总线840,其中,处理器810,通信接口820,存储器830通过通信总线840完成相互间的通信。处理器810可以调用存储器830中的逻辑指令,以执行如下方法:获取大规模有向无环任务调度图,并基于拓扑排序的粗化算法对大规模有向无环任务调度图进行多级粗化处理,以获得对应的有向无环初始调度图;基于小规模调度算法对有向无环初始调度图进行初始划分,以获得有向无环初始调度图的粗化图划分结果;基于细化算法将粗化图划分结果映射回大规模有向无环任务调度图,并进行细化调整,以获得大规模有向无环任务调度图的任务调度划分结果。

此外,上述的存储器830中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,电子设备,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号