CN103336723B - 基于关键路径的适应处理器内核紧缺调度方法 - Google Patents
基于关键路径的适应处理器内核紧缺调度方法 Download PDFInfo
- Publication number
- CN103336723B CN103336723B CN201310305300.6A CN201310305300A CN103336723B CN 103336723 B CN103336723 B CN 103336723B CN 201310305300 A CN201310305300 A CN 201310305300A CN 103336723 B CN103336723 B CN 103336723B
- Authority
- CN
- China
- Prior art keywords
- node
- sequence
- task
- scheduling
- critical path
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Devices For Executing Special Programs (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
基于关键路径的适应处理器内核紧缺调度方法。采用传统的多核处理器任务分配算法会出现处理器剩余内核紧缺的问题。本发明方法包括:任务图转换模块采用复制叉节点的方法将DAG任务图转换为产品加工树;产品加工树调度模块按层序遍历产品加工树,自上而下将产品加工树划分成若干子树,自最底层的子树起,依次在子树中查找并优先调度关键路径上节点,形成调度序列,每调度完成一棵子树便将该子树虚拟为一个节点并加入上层的子树中,直到所有节点调度完毕,形成初始调度序列;序列合并调整模块采用合并通信最为频繁且合并后对任务完成总时间影响最小序列的方式,将调度序列合并以适应处理器内核紧缺。本发明用于调度多核处理器。
Description
技术领域:
本发明涉及一种适应处理器内核紧缺的多核调度方法。
背景技术:
多核处理器现已广泛应用于各个领域,如何在满足一定约束条件下使处理器上任务充分并行处理,是任务调度研究的主要方向。任务调度需要通过任务调度算法来实现,而多核任务调度算法早已被证明是NP完全问题,即使在允许任务复制的前提下也是NP完全问题,故在以后的研究中大多侧重于获取近似最优解。
目前多核处理器片上通信机制主要有两种,一种是基于共享L2cache的共享存储结构,一种是基于片上网络或交叉开关的片上互连结构。无论处理器采用哪种结构,处理器内核之间的通信开销都是不可忽略的,这也是影响处理器性能的主要因素之一。现今多核处理器任务调度研究主要有三个方向:任务分配优化,提高L2cache命中率的共享存储优化和任务负载均衡等。其中,任务分配优化方向的主要着眼点在于将任务通过合理的调度算法分配到处理器各个内核上执行,以减少内核之间通信开销和提前任务完成总时间。
在多核处理器结构中,一个应用程序可以看成是一个任务的集合,这些任务之间存在着一定的数据依赖关系,这种依赖关系在应用程序开始执行之前就已经存在。如何在满足这种依赖关系的前提下,将应用程序中的任务合理的分配到处理器内核上执行,达到减少通信时间和任务执行总时间的目的,是多核处理器任务分配优化方向研究的主要内容。
目前,在任务分配优化方向比较著名的调度算法主要有:IREA,PPA,ETDS,TDMSCL,CPFD,PY,等。由于采用任务复制的方式将加权有向无环任务图(Directed Acyclic Graph,DAG)转换为产品加工树后,便于对任务进一步的分析处理;又由于对产品加工树采用逐层分解调度方式,便于在每一步调度中都能优先调度当前关键路径上的节点,达到减少任务执行时间的目的,而以往算法没有考虑到这一点,因此在任务完成总时间上会有所延迟,同时由于不能根据处理器当前剩余内核数对调整调度序列进行调整,因此在处理器内核不足时无法进行任务处理,进而使得当前剩余内核空闲,会造成处理器资源浪费。
发明内容:
本发明的目的是提供一种适应处理器内核紧缺的多核调度方法。
上述的目的通过以下的技术方案实现:
一种基于关键路径的适应处理器内核紧缺调度方法,该方法包括如下步骤:任务图转换模块采用复制叉节点的方法将DAG任务图转换为产品加工树;产品加工树调度模块按层序遍历产品加工树,自上而下将所述的产品加工树划分成若干子树,自最底层的子树起,依次在子树中查找并优先调度关键路径上节点,形成调度序列,每调度完成一棵子树便将该子树虚拟为一个节点并加入上层的子树中,直到所有节点调度完毕,形成初始调度序列;序列合并调整模块采用合并通信最为频繁且合并后对任务完成总时间影响最小序列的方式,将调度序列合并以适应处理器内核紧缺。
所述的基于关键路径的适应处理器内核紧缺调度方法,所述的调度方法具体实施步骤如下:
步骤1:遍历DAG任务图,复制叉节点,将DAG图转换为产品加工树;
步骤2:由叶节点起层序遍历产品加工树,依次将入度大于1的节点加入队列a;
步骤3:判断队列a是否为空,如不为空,继续执行,否则跳至步骤13;
步骤4:取出队列a当前头结点Ti,与其紧前节点序列形成以Ti为根节点的产品加工树;
步骤5:在加工树中查找关键路径,将关键路径上节点依次加入队列b;
步骤6:判断队列b是否为空,如不空继续向下执行,否则跳转至步骤3;
步骤7:取出并删除队列b当前头结点,判断该节点入度是否大于1,如该任务节点入度不大于1,继续向下执行,否则跳转至步骤9;
步骤8:与紧前节点序列形成调度序列,跳转到步骤6;
步骤9:将不在关键路径上的紧前节点序列形成初始调度序列;
步骤10:拟合并紧前节点序列,如果合并后使得该节点开始时间延迟,继续向下执行;否则跳转至步骤12;
步骤11:将关键紧前节点序列与非关键紧前节点序列分别形成调度序列,并将节点分配到使其最早开始执行的序列上,跳转至步骤6;
步骤12:合并紧前节点序列形成调度序列,跳转至步骤6;
步骤13:判断产品加工树中是否还有未调度节点,如果有继续向下执行,否则,跳转至步骤15;
步骤14:将该节点与其紧前节点序列形成调度序列;
步骤15:初始调度序列形成完毕;
步骤16:将初始调度序列分别加入队列;
步骤17:判断队列数是否多于处理器当前剩余内核数,如果多于继续向下执行,否则跳转至步骤21;
步骤18:查找与其他队列通信次数最多的队列;
步骤19:将该队列以其他队列拟合并,并分别计算任务完成总时间;
步骤20:选择对任务完成总时间影响最小的队列,形成调度序列,跳转至步骤17;
步骤21:将调度序列形成最终执行序列;
步骤22:为每个调度序列分配内核。
所述的基于关键路径的适应处理器内核紧缺调度方法,该方法的具体过程是:
(1)任务图转换模块:
应用程序的任务之间往往存在数据约束关系,这种关系在程序开始执行之前就已经存在,而DAG图可以很好地表示出这种关系,DAG图可以通过复制节点的方式转换为综合调度中常用的产品加工树模型,便于对任务图中节点的进一步分析和调度;
(2)产品加工树调度模块:
关键路径是加工树中执行时间最长的路径,所以关键路径工序的有效调度将很大程度上影响任务完成总时间。由于产品加工树只能优先调度叶节点工序,剩下的待调度工序加工流程仍为树状结构,当优先调度关键路径上节点后,剩余加工树的关键路径可能发生改变,如果始终坚持任务节点调度开始时确定的关键路径,不能保证总是优先调度变化了的关键路径上的工序。为此,加工树调度模块采用如下调度策略进行设计:
按层序将产品加工树分解成子树,在子树中查找并优先调度关键路径上节点形成调度序列。当该子树调度完毕后,将该子树虚拟为一个任务节点,加入上一级子树中进行调度,直到产品加工树调度完成为止,在将子树虚拟为节点时,虚拟节点的权值为子树执行时间,通信时间为根节点通信时间;
关键路径上节点通常包含多个紧前节点序列,在对关键路径上节点进行调度时,如果直接将其分配到关键路径上紧前节点序列上进行调度,则当该节点的其他紧前节点序列执行时间与通信时间之和较大时会导致当前待调度节点完成时间延迟;因此,本文在为节点分配调度序列时,首先对节点的紧前节点序列进行拟合并,将使节点尽早开始执行的序列合并到同一内核上执行,可以最大限度的提前任务完成的总时间;对于拟合并后使待调度节点的开始时间延迟的,则将序列分配到不同内核上,并将待调度节点分配到使其最早开始执行的序列上;
(3)序列合并调整模块:
当处理器当前剩余内核不足以完成任务调度时,按传统调度算法对任务进行处理后的调度序列将无法分配到当前内核上执行;如果当前任务的优先级最高,则处理器的剩余内核上将不会有任务执行;此时,处理器的剩余内核将会空闲,进而产生处理器资源浪费;
在序列合并调整中,当内核数剩余不足时,因为经过调度后形成的初始序列之间大都依然存在通信关系,而这种通信开销有可能会使某些节点的开始执行时间向后推移,如果合并这种有通信关系的序列可以尽量减少通信开销,在合并序列的同时也要注重选取合并后对任务执行总时间影响最小的序列进行合并;通过这种合并策略可以减少最终调度序列的数量,以适应处理器当前剩余内核数量,进而减少处理器资源浪费。
有益效果:
1. 本发明通过任务图转换模块将DAG任务图转换为产品加工树;再通过产品加工树调度模块对产品加工树中节点进行调度,使产品加工树中节点尽早开始执行,以缩短应用程序在处理器内核上执行的总时间;并通过序列合并调整模块使调度序列数适应处理器当前剩余内核数,减少处理器内核资源的浪费,使处理器资源得到充分利用。
2. 本发明减少通信开销,在多核处理器系统中一个应用程序就是一个任务的集合,任务之间存在数据依赖关系,这种依赖关系使得某一任务节点开始执行时,它的所有前驱任务必须已经执行完毕。而多核处理器的特殊结构使得内核之间的通信时间远大于内核上的通信时间,而采用任务复制方式对任务图进行处理,可以使处理器内核间的通信时间得到较为有效地控制。
3. 本发明便于查找每个节点的近优调度方式:;在产品加工树调度模块中采用逐层分解产品加工树的方式,将产品加工树分解形成相互独立的子树,这些子树的根节点正是原产品加工树的叉节点;而如果想提前应用程序的结束时间,也正是要使这些叉节点尽量提前开始执行。将产品加工树分解成为相互独立的子树后,可以很方便的在每个子树中找到近优调度序列,而形成调度序列后将子树虚拟为一个可调度的节点加入其上层产品加工树子树中进行调度,便于上层产品加工树近优调度序列的寻找。
4. 本发明提前节点的开始时间;在产品加工树调度模块中采用优先调度关键路径上节点方式对每个子树进行处理。而关键路径上的节点通常不止包含一个紧前节点序列,这些紧前节点序列的调度方式会对关键路径上节点的开始执行时间产生重要影响,本发明采用合并能提前关键路径上节点开始时间的紧前节点序列到同一调度序列上的方式,对紧前节点序列进行合并处理,通过控制通信开销来提前关键路径上节点开始执行时间。
5. 本发明减少处理器资源浪费;当处理器当前剩余内核不足以完成任务调度时,按传统调度算法对任务进行处理后的调度序列将无法分配到当前内核上执行。如果当前任务的优先级最高,则处理器的剩余内核上将不会有任务执行。此时,处理器的剩余内核将会空闲,进而产生处理器资源浪费,本发明提出的方法将根据剩余内核数调整调度序列数,使调度序列数适应处理器剩余内核数,减少处理器空闲等待,进而减少处理器资源浪费。
6. 本发明是对传统调度算法的优化;首先将DAG图转换为产品加工树,以便于对各个节点的分析处理;然后将产品加工树逐层分解成相互独立的子树,以便于各个节点调度序列的查找;最后根据处理器当前剩余内核数,合并与其他序列通信次数最多且合并后对总任务完成时间影响最小的序列,以便于任务在处理器当前剩余内核数不足的情况下依然能得到较为充分的调度,减少处理器资源的浪费。以往调度算法没有这些方面考虑,所以本发明所提供的方法,对传统调度算法有一定的优化效果,同时也对以后调度算法的研究有一定借鉴作用。
7.本发明提高了多核处理器任务处理的效率,使任务在处理器剩余内核不足时仍能够得到较为理想的调度,减少处理器内核空闲等待,同时也使任务图中每个节点都能得到充分调度,使任务完成时间得以提前,提升同构多核处理器性能。
附图说明:
附图1是本发明的任务调度实施结构图。
附图2是本发明的任务图转换模块过程图。
附图3是本发明的产品加工树调度模块过程图。
附图4是本发明的序列合并调整模块过程图。
附图5是本发明的DAG任务图图例。
附图6是本发明通过任务图转换模块生成的产品加工树图例A。
附图7是本发明通过任务图转换模块生成的产品加工树图例B。
附图8是本发明通过任务图转换模块生成的产品加工树图例C。
附图9是本发明针对附图5所示任务图在处理器剩余内核充足时的调度结果甘特图。
附图10是本发明针对附图5所示任务图在处理器剩余3个内核时的调度结果甘特图。
附图11是本发明针对附图5所示任务图在处理器剩余2个内核时的调度结果甘特图。
附图12是现有技术TDMSCL算法对附图5所示任务图调度结果甘特图。
具体实施方式:
实施例1:
一种基于关键路径的适应处理器内核紧缺调度方法,该方法包括如下步骤:任务图转换模块采用复制叉节点的方法将DAG任务图转换为产品加工树;产品加工树调度模块按层序遍历产品加工树,自上而下将所述的产品加工树划分成若干子树,自最底层的子树起,依次在子树中查找并优先调度关键路径上节点,形成调度序列,每调度完成一棵子树便将该子树虚拟为一个节点并加入上层的子树中,直到所有节点调度完毕,形成初始调度序列;序列合并调整模块采用合并通信最为频繁且合并后对任务完成总时间影响最小序列的方式,将调度序列合并以适应处理器内核紧缺。
实施例2:
根据实施例1 所述的基于关键路径的适应处理器内核紧缺调度方法,所述的调度方法具体实施步骤如下:
步骤1:遍历DAG任务图,复制叉节点,将DAG图转换为产品加工树;
步骤2:由叶节点起层序遍历产品加工树,依次将入度大于1的节点加入队列a;
步骤3:判断队列a是否为空,如不为空,继续执行,否则跳至步骤13;
步骤4:取出队列a当前头结点Ti,与其紧前节点序列形成以Ti为根节点的产品加工树;
步骤5:在加工树中查找关键路径,将关键路径上节点依次加入队列b;
步骤6:判断队列b是否为空,如不空继续向下执行,否则跳转至步骤3;
步骤7:取出并删除队列b当前头结点,判断该节点入度是否大于1,如该任务节点入度不大于1,继续向下执行,否则跳转至步骤9;
步骤8:与紧前节点序列形成调度序列,跳转到步骤6;
步骤9:将不在关键路径上的紧前节点序列形成初始调度序列;
步骤10:拟合并紧前节点序列,如果合并后使得该节点开始时间延迟,继续向下执行;否则跳转至步骤12;
步骤11:将关键紧前节点序列与非关键紧前节点序列分别形成调度序列,并将节点分配到使其最早开始执行的序列上,跳转至步骤6;
步骤12:合并紧前节点序列形成调度序列,跳转至步骤6;
步骤13:判断产品加工树中是否还有未调度节点,如果有继续向下执行,否则,跳转至步骤15;
步骤14:将该节点与其紧前节点序列形成调度序列;
步骤15:初始调度序列形成完毕;
步骤16:将初始调度序列分别加入队列;
步骤17:判断队列数是否多于处理器当前剩余内核数,如果多于继续向下执行,否则跳转至步骤21;
步骤18:查找与其他队列通信次数最多的队列;
步骤19:将该队列以其他队列拟合并,并分别计算任务完成总时间;
步骤20:选择对任务完成总时间影响最小的队列,形成调度序列,跳转至步骤17;
步骤21:将调度序列形成最终执行序列;
步骤22:为每个调度序列分配内核。
实施例3:
所述的基于关键路径的适应处理器内核紧缺调度方法,
(1)任务图转换模块:
应用程序的任务之间往往存在数据约束关系,这种关系在程序开始执行之前就已经存在,而DAG图可以很好地表示出这种关系,DAG图可以通过复制节点的方式转换为综合调度中常用的产品加工树模型,便于对任务图中节点的进一步分析和调度。
(2)产品加工树调度模块:
关键路径是加工树中执行时间最长的路径,所以关键路径工序的有效调度将很大程度上影响任务完成总时间。由于产品加工树只能优先调度叶节点工序,剩下的待调度工序加工流程仍为树状结构,当优先调度关键路径上节点后,剩余加工树的关键路径可能发生改变,如果始终坚持任务节点调度开始时确定的关键路径,不能保证总是优先调度变化了的关键路径上的工序。为此,本发明产品加工树调度模块采用如下调度策略进行设计。
按层序将产品加工树分解成子树,在子树中查找并优先调度关键路径上节点形成调度序列。当该子树调度完毕后,将该子树虚拟为一个任务节点,加入上一级子树中进行调度,直到产品加工树调度完成为止。在将子树虚拟为节点时,虚拟节点的权值为子树执行时间,通信时间为根节点通信时间。
关键路径上节点通常包含多个紧前节点序列,在对关键路径上节点进行调度时,如果直接将其分配到关键路径上紧前节点序列上进行调度,则当该节点的其他紧前节点序列执行时间与通信时间之和较大时会导致当前待调度节点完成时间延迟。因此,本文在为节点分配调度序列时,首先对节点的紧前节点序列进行拟合并,将使节点尽早开始执行的序列合并到同一内核上执行,可以最大限度的提前任务完成的总时间。对于拟合并后使待调度节点的开始时间延迟的,则将序列分配到不同内核上,并将待调度节点分配到使其最早开始执行的序列上。
(3)序列合并调整模块:
当处理器当前剩余内核不足以完成任务调度时,按传统调度算法对任务进行处理后的调度序列将无法分配到当前内核上执行。如果当前任务的优先级最高,则处理器的剩余内核上将不会有任务执行。此时,处理器的剩余内核将会空闲,进而产生处理器资源浪费。
在序列合并调整中,当内核数剩余不足时,因为经过调度后形成的初始序列之间大都依然存在通信关系,而这种通信开销有可能会使某些节点的开始执行时间向后推移,如果合并这种有通信关系的序列可以尽量减少通信开销,在合并序列的同时也要注重选取合并后对任务执行总时间影响最小的序列进行合并。通过这种合并策略可以减少最终调度序列的数量,以适应处理器当前剩余内核数量,进而减少处理器资源浪费。
实施例4:
所述的基于关键路径的适应处理器内核紧缺调度方法,本发明主要针对同构多核处理器任务分配方向的研究,任务采用DAG图来表示,而DAG图可以通过G=(T,E,t,C)表示。其中,T={T1,T2,…,Ti,…,Tn}表示图中任务节点的集合,Ti表示第i个任务节点,n表示任务图中的任务节点总数。E={e1,2,e2,3,…ei,j,…}为图中有向边的集合,ei,j表示节点Ti与节点Tj之间的有向边。t={t1,t2,…,ti,…,tn}表示任务节点的执行时间的集合,ti表示节点Ti的执行时间。C={c1,2,c2,3,…ci,j,…}表示任务节点之间通信开销集合,ci,j表示任务节点Ti和Tj之间的通信开销。
应用程序的任务之间存在数据依赖关系,这种依赖关系使得某个任务开始执行的时候,其所有前驱任务必须已经执行完毕。任务分配到同一内核上执行时通信开销按0计算,而不能分配到同一内核上执行时任务之间会有较长的通信时间。任务节点以非抢占方式执行,内核上一旦执行某个任务节点,则直到该任务节点执行完毕后,这个内核才能执行其他任务节点。
实施例5:
所述的基于关键路径的适应处理器内核紧缺调度方法,附图5所示为一个应用程序的DAG图,图中矩形框内T表示节点(对应应用程序中的任务),节点的权值表示任务的执行时间。有向边表示从节点Ti到节点Tj存在通信关系,边的权值表示节点间的通信开销。
以下将结合附图5中的DAG图来对本技术的具体执行流程进行说明,首先将复制任务图中叉节点,将DAG图转换成如附图6、附图7、附图8所示的产品加工树。
实施例6:
所述的基于关键路径的适应处理器内核紧缺调度方法,下面分别针对附图6、附图7、附图8中的3棵产品加工树A,B,C进行分析和调度。
产品加工树A中,首先由叶节点开始,层序遍历产品加工树找到入度大于1的节点加入队列a中,然后逐个取出队列a中节点,形成以该节点为根的产品加工树,并查找关键路径,将关键路径上节点依次加入队列b。队列a和队列b中节点变换过程,以及调度序列形成过程如表1所示。
表1 产品加工树A调度过程
次序 | 队列a | 队列b | 调度序列 | 执行时间 |
1 | T7,T8 | |||
2 | T8 | T1,T3,T7 | ||
3 | T8 | T3,T7 | (T1) | 3 |
4 | T8 | T7 | (T1,T3) | 7 |
5 | T8 | {(T1,T3),(T2,T7)} | 15 | |
6 | T1,T3,T8 | {(T1,T3),(T2,T7)} | 15 | |
7 | T3,T8 | {(T1),(T1,T3),(T2,T7)} | 15 | |
8 | T8 | {(T1,T3),(T2,T7)} | 15 | |
9 | {(T1,T3),(T2,T7,T8)} | 19 |
产品加工树B中,以T4节点为根的产品加工树形成调度序列后,在以T4节点为根的子树调度完成后,将该子树虚拟为一个节点以Tv4来表示,其权值为14;以T6为根的子树调度完成后,将该子树虚拟为一个节点以Tv6来表示,其权值为16。队列a和队列b中节点变换过程,以及调度序列形成过程如表2所示。
表2 产品加工树B调度过程
次序 | 队列a | 队列b | 调度序列 | 执行时间 |
1 | T4,T6,T9 | |||
2 | T6,T9 | T2,T4 | ||
3 | T6,T9 | T4 | (T2) | 5 |
4 | T6,T9 | (T2,T1,T4) | 14 | |
5 | T9 | Tv4,T6 | (T2,T1,T4) | 14 |
6 | T9 | T6 | (T2,T1,T4) | 14 |
7 | T9 | {(T1,T3),(T2,T1,T4,T6)} | 16 | |
8 | Tv6,T9 | {(T1,T3),(T2,T1,T4,T6)} | 16 | |
9 | T9 | {(T1,T3),(T2,T1,T4,T6)} | 16 | |
10 | {(T1,T3),(T2,T1,T4,T6,T9)} | 22 |
产品加工树C中,分别以T5和T7节点为根的两产品加工树形成调度序列后,将子树分别虚拟为节点Tv5和Tv7,权值分别为14和18。队列a和队列b中节点变换过程,以及产品加工树调度序列形成过程如表3所示。
表3 产品加工树C调度过程
次序 | 队列a | 队列b | 调度序列 | 执行时间 |
1 | T5,T7,T10 | |||
2 | T7,T10 | T2,T5 | ||
3 | T7,T10 | T5 | (T2) | 5 |
4 | T7,T10 | (T2,T1,T5) | 14 | |
5 | T10 | T1,T3,T7 | (T2,T1,T5) | 14 |
6 | T10 | T3,T7 | {(T1),(T2,T1,T5)} | 14 |
7 | T10 | T7 | {(T1,T3),(T2,T1,T5)} | 14 |
8 | T10 | {(T1,T3),(T2,T1,T5,T7)} | 18 | |
9 | Tv5,T10 | {(T1,T3),(T2,T1,T5,T7)} | 18 | |
10 | T10 | {(T1,T3),(T2,T1,T5,T7)} | 18 | |
11 | {(T1,T3),(T2,T1,T5,T7,T10)} | 20 |
经过以上步骤的节点分配后,产品加工树可得到4个执行序列,分别为序列1:(T1,T3)执行时间为7;序列2:(T2,T7,T8)执行时间为19;序列3:(T2,T1,T4,T6,T9)执行时间为22;序列4:(T2,T1,T4,T7,T10)执行时间为20。如处理器内核充足时,不需进行序列合并,直接为每个调度序列分配内核,此时任务完成总时间为22。调度结果如图7所示,图中阴影部分表示通信时间。
实施例7:
所述的基于关键路径的适应处理器内核紧缺调度方法,当处理器内核数剩余不足时,如当前处理器只剩余3个内核:
需对调度序列进行合并。首先查找与其他序列通信次数最多的序列,本例中为(T1,T3)与其他序列均有通信,拟合并序列1到其他序列上,拟合并后的序列执行时间,以及对任务完成总时间影响如表4所示。
表4 执行序列1次合并表
执行序列 | 合并后的执行序列 | 执行时间 | 完成总时间 |
1与2 | (T1,T3,T2,T7,T8) | 20 | 22 |
1与3 | (T1,T3,T2,T4,T6,T9) | 26 | 26 |
1与4 | (T1,T3,T2,T4,T7,T10) | 24 | 24 |
由表4中可知执行序列1与序列2合并后,对总任务完成时间影响最小,故合并序列1到序列2上形成新的调度序列2′:(T1,T3,T2,T7,T8)执行时间为20。任务完成总时间为22,调度结果如图8所示。
实施例8:
所述的基于关键路径的适应处理器内核紧缺调度方法,当处理器内核数剩余不足时,如当前处理器只剩余2个内核:
需对调度序列再次进行合并。合并过程为:首先查找与其他序列通信次数最多的序列,本例中为调度序列2′与其他序列均有通信,拟合并序列2′到其他序列上,合并后的序列执行时间,以及对任务完成总时间影响如表5所示。
表5 执行序列2次合并表
执行序列 | 合并后的执行序列 | 执行时间 | 完成总时间 |
2′与3 | (T1,T3,T2,T5,T7,T8,T10) | 28 | 28 |
2′与4 | (T1,T3,T2,T7,T8,T4,T6,T9) | 34 | 34 |
由表5中可知执行序列2′与序列3合并后,对总任务完成时间影响最小,故合并序列2′到序列3上形成新的调度序列3′:(T1,T3,T2,T5,T7,T8,T10)执行时间为28。任务完成总时间为28,调度结果如图9所示。
实施例9:
所述的基于关键路径的适应处理器内核紧缺调度方法,实例对比:
下面将本发明调度技术与现有的较为优秀的多核调度技术TDMSCL算法进行实例对比。
附图10为采用TDMSCL算法对附图5所示的图例进行调度的结果甘特图,图中阴影部分为不在同一内核上的任务节点之间的通信时间。通过对比可以看出,所发明的调度技术处理器剩余内核不足时可调整调度序列,使任务能够及时完成,而TDMSCL算法没有够调整调度序列数以适应处理器剩余内核数,因此当处理器内核不足时将不能进行有效调度;在处理器内核充足时本文提出的算法采用细化分解产品加工树,分级查找并优先调度关键路径上节点的方式使节点T2,T5,T7,T10分配到同一序列上执行,消除了T5和T10之间的通信开销。同时将T1,T3单独形成序列,使其与T6节点的紧前节点序列并行执行,提前了节点T6的开始时间,进而减少了任务完成总时间。
因此,本发明提出的调度技术是对目前多核调度技术的优化,且对调度技术的进一步研究有一定借鉴意义。
Claims (2)
1.一种基于关键路径的适应处理器内核紧缺调度方法,其特征是: 该方法包括如下步骤:任务图转换模块采用复制叉节点的方法将DAG 任务图转换为产品加工树;产品加工树调度模块按层序遍历产品加工树,自上而下将所述的产品加工树划分成若干子树,自最底层的子树起,依次在子树中查找并优先调度关键路径上节点,形成调度序列,每调度完成一棵子树便将该子树虚拟为一个节点并加入上层的子树中,直到所有节点调度完毕,形成初始调度序列;序列合并调整模块采用合并通信最为频繁且合并后对任务完成总时间影响最小序列的方式,将调度序列合并以适应处理器内核紧缺,多核处理器任务处理的效率,使任务在处理器剩余内核不足时仍能够得到较为理想的调度,减少处理器内核空闲等待,同时也使任务图中每个节点都能得到充分调度,使任务完成时间得以提前,提升同构多核处理器性能;
所述的调度方法具体实施步骤如下:
步骤1 :遍历DAG 任务图,复制叉节点,将DAG 图转换为产品加工树;
步骤2 :由叶节点起层序遍历产品加工树,依次将入度大于1 的节点加入队列a ;
步骤3 :判断队列a 是否为空,如不为空,继续执行,否则跳至步骤13 ;
步骤4 :取出队列a 当前头结点Ti,与其紧前节点序列形成以Ti 为根节点的产品加工树;
步骤5 :在加工树中查找关键路径,将关键路径上节点依次加入队列b ;
步骤6 :判断队列b 是否为空,如不空继续向下执行,否则跳转至步骤3 ;
步骤7 :取出并删除队列b 当前头结点,判断该节点入度是否大于1,如该任务节点入度不大于1,继续向下执行,否则跳转至步骤9 ;
步骤8 :与紧前节点序列形成调度序列,跳转到步骤6 ;
步骤9 :将不在关键路径上的紧前节点序列形成初始调度序列;
步骤10 :拟合并紧前节点序列,如果合并后使得该节点开始时间延迟,继续向下执行;否则跳转至步骤12 ;
步骤11 :将关键紧前节点序列与非关键紧前节点序列分别形成调度序列,并将节点分配到使其最早开始执行的序列上,跳转至步骤6 ;
步骤12 :合并紧前节点序列形成调度序列,跳转至步骤6 ;
步骤13 :判断产品加工树中是否还有未调度节点,如果有继续向下执行,否则,跳转至步骤15 ;
步骤14 :将该节点与其紧前节点序列形成调度序列;
步骤15 :初始调度序列形成完毕;
步骤16 :将初始调度序列分别加入队列;
步骤17 :判断队列数是否多于处理器当前剩余内核数,如果多于继续向下执行,否则跳转至步骤21 ;
步骤18 :查找与其他队列通信次数最多的队列;
步骤19 :将该队列以其他队列拟合并,并分别计算任务完成总时间;
步骤20 :选择对任务完成总时间影响最小的队列,形成调度序列,跳转至步骤17 ;
步骤21 :将调度序列形成最终执行序列;
步骤22 :为每个调度序列分配内核。
2.根据权利要求1所述的基于关键路径的适应处理器内核紧缺调度方法,其特征是:该方法的具体过程是:
(1)任务图转换模块:
应用程序的任务之间往往存在数据约束关系,这种关系在程序开始执行之前就已经存在,而DAG 图可以很好地表示出这种关系,DAG 图可以通过复制节点的方式转换为综合调度中常用的产品加工树模型,便于对任务图中节点的进一步分析和调度;
(2)产品加工树调度模块:
关键路径是加工树中执行时间最长的路径,所以关键路径工序的有效调度将很大程度上影响任务完成总时间;由于产品加工树只能优先调度叶节点工序,剩下的待调度工序加工流程仍为树状结构,当优先调度关键路径上节点后,剩余加工树的关键路径可能发生改变,如果始终坚持任务节点调度开始时确定的关键路径,不能保证总是优先调度变化了的关键路径上的工序;为此,加工树调度模块采用如下调度策略进行设计:
按层序将产品加工树分解成子树,在子树中查找并优先调度关键路径上节点形成调度序列;当该子树调度完毕后,将该子树虚拟为一个任务节点,加入上一级子树中进行调度,直到产品加工树调度完成为止,在将子树虚拟为节点时,虚拟节点的权值为子树执行时间,通信时间为根节点通信时间;
关键路径上节点通常包含多个紧前节点序列,在对关键路径上节点进行调度时,如果直接将其分配到关键路径上紧前节点序列上进行调度,则当该节点的其他紧前节点序列执行时间与通信时间之和较大时会导致当前待调度节点完成时间延迟;因此,本文在为节点分配调度序列时,首先对节点的紧前节点序列进行拟合并,将使节点尽早开始执行的序列合并到同一内核上执行,可以最大限度的提前任务完成的总时间;对于拟合并后使待调度节点的开始时间延迟的,则将序列分配到不同内核上,并将待调度节点分配到使其最早开始执行的序列上;
(3)序列合并调整模块:
当处理器当前剩余内核不足以完成任务调度时,按传统调度算法对任务进行处理后的调度序列将无法分配到当前内核上执行;如果当前任务的优先级最高,则处理器的剩余内核上将不会有任务执行;此时,处理器的剩余内核将会空闲,进而产生处理器资源浪费;
在序列合并调整中,当内核数剩余不足时,因为经过调度后形成的初始序列之间大都依然存在通信关系,而这种通信开销有可能会使某些节点的开始执行时间向后推移,如果合并这种有通信关系的序列可以尽量减少通信开销,在合并序列的同时也要注重选取合并后对任务执行总时间影响最小的序列进行合并;通过这种合并策略可以减少最终调度序列的数量,以适应处理器当前剩余内核数量,进而减少处理器资源浪费。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310305300.6A CN103336723B (zh) | 2013-07-21 | 2013-07-21 | 基于关键路径的适应处理器内核紧缺调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310305300.6A CN103336723B (zh) | 2013-07-21 | 2013-07-21 | 基于关键路径的适应处理器内核紧缺调度方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103336723A CN103336723A (zh) | 2013-10-02 |
CN103336723B true CN103336723B (zh) | 2017-03-29 |
Family
ID=49244897
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310305300.6A Active CN103336723B (zh) | 2013-07-21 | 2013-07-21 | 基于关键路径的适应处理器内核紧缺调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103336723B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105335218A (zh) * | 2014-07-03 | 2016-02-17 | 北京金山安全软件有限公司 | 一种基于本地的流式计算方法及流式计算系统 |
CN104636204B (zh) * | 2014-12-04 | 2018-06-01 | 中国联合网络通信集团有限公司 | 一种任务调度方法与装置 |
CN105117286B (zh) * | 2015-09-22 | 2018-06-12 | 北京大学 | MapReduce中任务的调度方法和流水化执行方法 |
CN105159783A (zh) * | 2015-10-09 | 2015-12-16 | 上海瀚之友信息技术服务有限公司 | 一种系统任务分配方法 |
CN105511432B (zh) * | 2015-12-09 | 2018-08-10 | 哈尔滨理工大学 | 基于路径长度的工序串综合调度方法 |
CN109725989B (zh) * | 2017-10-31 | 2020-07-31 | 阿里巴巴集团控股有限公司 | 一种任务执行的方法及装置 |
CN108874533A (zh) * | 2018-01-08 | 2018-11-23 | 深圳市铱硙医疗科技有限公司 | 处理mri图像的服务器分配方法及装置 |
CN110147270A (zh) * | 2019-04-15 | 2019-08-20 | 平安普惠企业管理有限公司 | 数据库调度方法、装置、计算机设备及存储介质 |
CN109993460B (zh) * | 2019-04-17 | 2023-04-07 | 哈尔滨理工大学 | 一种存在非紧密衔接多设备工序的综合调度方法 |
CN110134506A (zh) * | 2019-05-24 | 2019-08-16 | 哈尔滨理工大学 | 基于处理器内核动态的实时动态关键路径多核调度方法 |
CN110378583B (zh) * | 2019-07-05 | 2023-01-17 | 惠州学院 | 一种拟关键路径同设备相邻工序互换方法 |
CN111209095B (zh) * | 2019-08-20 | 2023-08-15 | 杭州电子科技大学 | 一种dag并行任务调度中基于树搜索的剪枝方法 |
CN110717674A (zh) * | 2019-10-10 | 2020-01-21 | 哈尔滨理工大学 | 基于图的树分解和启发式的综合调度方法 |
CN112070410A (zh) * | 2020-09-14 | 2020-12-11 | 哈尔滨理工大学 | 存在子树工序集冲突调整的综合调度方法 |
CN112817731B (zh) * | 2021-02-25 | 2022-12-06 | 合肥工业大学 | 一种基于节点复制的异构多核系统任务调度方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103034614A (zh) * | 2012-12-19 | 2013-04-10 | 哈尔滨理工大学 | 基于关键路径和任务复制的单任务多核调度方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101403982B (zh) * | 2008-11-03 | 2011-07-20 | 华为技术有限公司 | 一种多核处理器的任务分配方法和系统 |
US8543857B2 (en) * | 2009-09-26 | 2013-09-24 | Intel Corporation | Method and apparatus for low power operation of multi-core processors |
-
2013
- 2013-07-21 CN CN201310305300.6A patent/CN103336723B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103034614A (zh) * | 2012-12-19 | 2013-04-10 | 哈尔滨理工大学 | 基于关键路径和任务复制的单任务多核调度方法 |
Non-Patent Citations (1)
Title |
---|
适用多核处理器的任务调度研究;赵磊;《中国优秀硕士学位论文全文数据库(信息科技辑)》;20110615;第4.3.2节,第4.4.2节 * |
Also Published As
Publication number | Publication date |
---|---|
CN103336723A (zh) | 2013-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103336723B (zh) | 基于关键路径的适应处理器内核紧缺调度方法 | |
CN103034614B (zh) | 基于关键路径和任务复制的单任务多核调度方法 | |
CN107015856A (zh) | 云环境下科学工作流中的任务调度方案生成方法及装置 | |
CN104732355B (zh) | 设备空闲时间段调整的设备驱动综合调度方法 | |
CN110413391A (zh) | 基于容器集群的深度学习任务服务质量保证方法和系统 | |
CN110365787B (zh) | 一种应用容器并基于微服务框架的边缘计算最优化布局方法 | |
CN111782355B (zh) | 一种基于混合负载的云计算任务调度方法及系统 | |
CN106155781A (zh) | 一种多智能体平台中的实时任务调度方法 | |
CN1231244A (zh) | 车辆组装线控制系统和方法 | |
CN107230023B (zh) | 基于改进和声搜索的生产和运输协同调度方法和系统 | |
CN108776862A (zh) | 支持工序任务量拆分的智能排产方法 | |
CN103593232B (zh) | 一种数据仓库的任务调度方法及装置 | |
CN105868025A (zh) | 一种解决大数据处理系统中内存资源激烈竞争的系统 | |
CN109871270A (zh) | 调度方案生成方法及装置 | |
CN107943561A (zh) | 一种面向云计算平台的科学工作流任务调度方法 | |
CN111861095A (zh) | 存在预启动设备的综合调度方法 | |
CN117455222B (zh) | 基于分布式异构流水车间组调度问题的求解方法 | |
CN110048966A (zh) | 基于截止时间的最小化系统开销的Coflow调度方法 | |
CN109522348A (zh) | 一种融合多个智能分析语言的数据处理系统和方法 | |
Li et al. | A novel collaborative iterative greedy algorithm for hybrid flowshop scheduling problem with batch processing machines and variable sublots | |
CN107808226A (zh) | 基于最早开始时间的二车间柔性综合调度方法 | |
CN106487889B (zh) | 一种面向云数据中心的任务与数据联合部署方法 | |
CN104077182B (zh) | 一种同优先级任务调度策略 | |
CN101996105A (zh) | 可重构计算平台上的静态软硬件任务划分与调度方法 | |
CN104915250B (zh) | 一种实现作业内的MapReduce数据本地化的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |