CN109960576B - 一种面向cpu-gpu异构的低能耗任务调度策略 - Google Patents
一种面向cpu-gpu异构的低能耗任务调度策略 Download PDFInfo
- Publication number
- CN109960576B CN109960576B CN201910247244.2A CN201910247244A CN109960576B CN 109960576 B CN109960576 B CN 109960576B CN 201910247244 A CN201910247244 A CN 201910247244A CN 109960576 B CN109960576 B CN 109960576B
- Authority
- CN
- China
- Prior art keywords
- core
- subtask
- task
- energy consumption
- pheromone
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4893—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/004—Artificial life, i.e. computing arrangements simulating life
- G06N3/006—Artificial life, i.e. computing arrangements simulating life based on simulated virtual individual or collective life forms, e.g. social simulations or particle swarm optimisation [PSO]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/483—Multiproc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/484—Precedence
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
一种面向CPU‑GPU异构的低能耗任务调度策略,针对异构多核系统的特点和传统蚁群算法存在的仅对单目标进行优化和收敛速度过慢的问题,提出一种同时关注实时约束和系统能耗的蚁群任务调度算法。方法首先根据任务在异构核心上的能耗在信息素初始化过程中提供指导信息,加快算法收敛速度,然后经过任务实时约束条件对核心的筛选后,再根据任务在异构核心上的计算能耗,不同任务的核间通信能耗以及信息素含量来选择合适的执行核心,最后通过蚁群算法的多次迭代不断寻找能耗更低的调度方案,并根据所得结果调整信息素含量,进一步加快算法收敛速度。经过若干次迭代后得到最终任务调度方案能在满足任务实时性约束的情况下使系统的能耗得到优化。
Description
技术领域
本发明属于异构系统任务分配与资源调度领域,具体涉及一种面向CPU- GPU异构系统结构,同时考虑实时约束和系统能耗的资源分配与任务调度策略。
背景技术
现今,处理器结构逐渐朝着多核化和异构化的方向发展。多核处理器已经成为当前的主流处理器。由于拥有多个处理核心,应用程序可以把并行的线程同时交付给多个核心分别处理,因此程序的运行速度得到很大的提高。根据其内核结构是否存在差异,多核处理器分为同构多核处理器和异构多核处理器。同构多核处理器大多是指所有处理器核的体系结构相同,多个处理器核执行相同或者类似的任务。同构多核处理器往往针对特征单一的应用。而异构多核处理器包含多个不同体系结构的处理器核,不同的核心能够起到缺陷互补的作用,尤其对于CPU+GPU的异构体系,CPU弥补了GPU逻辑控制方面的不足,GPU 弥补了传统的CPU多核结构在面对图形数据处理这样的高计算密集程度和高并行度问题时表现出的不足,从而能够面对更为广泛的应用场景。
异构多核系统上的任务调度算法已成为当今学术界研究的热点问题,而 CPU-GPU异构多核任务调度更是重点研究方向,并且在接受任务实时约束的条件下,在能耗方向上的优化问题是设计异构多核任务调度算法时所需面对的关键问题之一。
在较为关键的实时任务处理和降低系统能耗方面,已经有很多学者进行了相关研究。张晶等人通过将异构核心根据处理能力和适用范围重新建模,并参考了相对严格程度任务调度算法的主要思想,提出了一种适用于异构多核系统的实时任务调度算法,该算法在实时性方面确实取得了较好的结果,但处理任务的适用范围还是受到高实时性处理方式的限制,不够灵活。白恩慈等人也提出了基于蚁群算法的异构多核任务调度算法,并且在改进蚁群算法的时候还考虑到了实时性约束,初步将实时性约束和以性能为优化目标的蚁群算法结合起来,但是没有考虑到软实时要求和蚁群算法初始化阶段信息缺乏的问题。
综上所述,这些改进的任务与资源调度策略虽然可以适用于异构多核,并且部分考虑了实时性,但对于异构核心的区分都还是不够细致,并且绝大多数是以提升性能为目标的,没有考虑到可以通过蚁群算法来搜寻满足实时约束条件下不再进行任务调度长度的优化,转而对总体能耗进行优化的可行解。
发明内容
为优化CPU-GPU异构多核系统执行任务时的性能,并且进一步降低功耗,本发明提出了一种基于蚁群算法的异构多核实时任务调度算法。
该发明针对的实际情况有以下几点基本原则:(1)划分的子任务间存在依赖关系,存在依赖关系的多个任务间所对应的通信量有所不同。(2)任务在 CPU与GPU核心上执行的时间和造成的能耗可以被较为准确的预估。(3)任务本身具有实时性要求。
本发明的内容包含三个部分,第一部分是相关数学模型的设计,根据以发挥CPU-GPU异构系统的性能,满足实时约束,优化功耗为目标的数据参数需求,设计处理器和任务的数学模型,为算法高效性提供保障。第二部分是对于算法求解速度的优化,在算法执行求解过程之前,先对输入的数据进行初步处理,通过设定综合优先级的方法寻找较优解,为后续算法的求解过程提供一定程度的指导,提高了算法的收敛速度。最后一部分是算法的设计和改进,算法同时兼顾任务实时性和系统能耗,并且对经典蚁群算法的参数设置和部分循环步骤根据实时约束和异构核心的特性进行了改进,扩大了算法的适用范围,并且使得算法能够快速搜寻满足实时约束的低能耗调度方案。
为达到上述目的,本发明采用以下技术方案。
1.一种面向CPU-GPU异构的低能耗任务调度策略,其特征在于包括以下步骤:
步骤1、处理器模型的初始化,所述的处理器模型包括核心状态和核心性能;
核心状态包括:处理器中N个核心的集合P={P1,P2,P3,...,PN},各个核心的空闲时间列表PEN,每当一个任务调度完成,更新该列表;
核心性能包括:每个核心与任务类型有关的处理能力α,每个核心的动态功耗β,处理器的静态功耗Pstatic,任意两核间的单位数据通信能耗W;
步骤2、任务的初始化处理,
包括得到DAG任务图G={T,Ed,m,d,D},其中,T为子任务集合, Ed为子任务依赖关系集合,m为子任务的计算量,d为子任务间的通信量,D 为对应实时约束的子任务组截止期限;
根据任务依赖关系集合Ed对所有任务节点建立前驱任务列表Pre,建立任务执行顺序列表que和临时调度方案列表temp,其中temp的第i个元素temp[i] 表示子任务Ti的执行核心编号;
步骤3、完成蚁群算法中任务执行顺序、基础参数和初始信息素的初始化;
其中,所述的任务执行顺序通过对子任务集合T使用HEFT算法求解得到;
所述的基础参数包括:各路径上的初始信息素含量ρ,每只蚂蚁经过留下的信息素m,每只蚂蚁遍历完成之后的局部衰减因子Pl,每次迭代开始时信息素的全局衰减因子Pg,信息素影响因子g,蚂蚁数量n和迭代次数N;其中,一个子任务放置到一个核心上执行视作一条路径,子任务或核心有所不同则视为不同路径;
所述的初始信息素的初始化具体为:按任务执行顺序选择每个子任务的最优执行核心,所述的最优执行核心为所有核心中执行该子任务的能耗最小的核心,所述的能耗为两部分之和,其中,第一部分是当前子任务在所选处理核心上的计算能耗c,第二部分是所有前驱任务最优处理核心与当前子任务所选处理核心之间的通信能耗之和,其中,Eix表示第i个子任务在核心x上的能耗,具体计算公式如下:
其中,cix=tix*βx,
tix=mi/αx,tix表示第i个子任务在第x个核心上的预估执行时间;
mi表示第i个子任务的计算量,
αx表示第x个核心与任务类型有关的处理能力,
βx表示第x个核心的动态功耗,
|Pre[i]|表示第i个子任务的前驱任务数量,
Pre[i][j]表示第i个子任务的第j个前驱任务,
ePre[i][j]i表示执行第i个子任务的第j个前驱任务和第i个子任务的核心之间的通信能耗,
ePre[i][j]i=dPre[i][j]i*Wtemp[Pre[i][j]]temp[i],
dPre[i][j]i表示第i个子任务的第j个前驱任务和第i个子任务之间的通信量,
Wtemp[Pre[i][j]]temp[i]表示临时调度方案temp中第i个子任务的第j个前驱任务的处理核心与第i个任务的处理核心间的单位数据通信能耗之积;
所有子任务及其对应的最优执行核心构成的路径的初始信息素含量翻倍,即完成初始信息素的初始化;
步骤4、选取可行路径:根据步骤3中得到的任务执行顺序取出待调度子任务,通过EFT算法判断在各个核心上执行时任务最早完成时间是否小于截止期限D,
如果该子任务放置在一个核心上执行时的任务最早完成时间不大于截止期限D,则该子任务放置到该核心上即为可行路径,
其中,|P|为处理核心集合的容量,即核心数目,tix为步骤3中提到的第i 个子任务在第x个核心上的预估执行时间;
计算各可选路径的选择概率,第i个子任务在第x个核心上执行的选择概率pix计算过程如下:
其中,g为信息素影响因子,由步骤3的基础参数初始化得到,pgix为根据信息素确定的选择概率,peix为根据能耗确定的选择概率
其中,ρix表示第i个子任务在第x个核心上执行所对应路径上的信息素含量,该变量的初始值由步骤3得到,ρix即为ρ的第i行第x列的元素,
|P|为处理核心集合的容量,即核心数目,
Eix表示第i个子任务在核心x上的能耗,
之后通过伪随机的方式根据上述可行路径的选择概率进行选择,对每个子任务都随机筛选出一个执行核心,即随机得到一个调度方案;
步骤5、更新步骤4得出的调度方案中各路径对应的信息素,更新公式如下:
ρi+1=ρi*(1-Pl)+m (6)
其中,ρi表示更新前的信息素含量,ρi+1表示更新后的信息素含量,Pl表示每只蚂蚁遍历完成之后的局部衰减因子、m表示每只蚂蚁经过留下的信息素,Pl和m由步骤3中的基础参数初始化得到;
计算步骤四随机选择出的调度方案所对应的总能耗E,其中总能耗包括处理器静态能耗Ep和任务执行的能耗代价Et,具体计算公式如下:
E=Ep+Et (7)
其中,
Ep=Pstatic*TL (8)
Pstatic为固定功耗常数,TL为调度方案对应的任务完成时间;
其中,|T|表示子任务的总数,temp[i]表示临时调度方案中任务Ti的执行核心编号,Eitemp[i]表示将任务Ti放置到临时调度方案所选择的核心中进行执行时的能耗;
步骤6、返回步骤4进行循环,当循环次数达到蚂蚁数量n时,记录总能耗最低的调度方案A1,根据调度方案A1更新所有路径的信息素,更新后的信息素作为下一次信息素更新的初值,其中,调度方案A1中各路径对应的信息素的更新公式如下:
ρi+1=ρi*(1-Pg)+5m (10)
除去A1中的路径外,剩余路径对应的信息素更新公式如下:
ρi+1=ρi*(1-Pg) (11)
其中,ρi表示更新前的信息素含量,ρi+1表示更新后的信息素含量,Pg表示每次迭代开始时信息素的全局衰减因子、m表示每只蚂蚁经过留下的信息素,两者均由步骤3中的基础参数初始化得到;
然后执行步骤7;
步骤7、重复步骤4和步骤5,重复次数为蚂蚁数量n,再次搜索并记录总能耗最低的调度方案A2,根据调度方案A2更新所有路径的信息素,更新后的信息素作为下一次信息素更新的初值,信息素更新公式与步骤6中的相同;
步骤8、将A1中的记录的调度方案更新为A1、A2中能耗最小的调度方案,对更新后的调度方案A1中各路径信息素含量进行翻倍,然后返回步骤7继续迭代,直到达到迭代次数N后,所得总能耗最低的调度方案即为最优调度方案,任务按照该方案进行执行。
与现有技术相比,本发明具有以下优点:
一.在实时任务处理方面,考虑到了任务执行时间超出截止期限的情况,且针对这种情况在步骤4中通过计算子任务在异构核心上的平均执行时间,并以此为依据来筛选调度方案,保证该情况下任务时延和能耗这两个优化目标能得到均衡处理。
二.在算法优化方面,相比于通常的蚁群算法,本发明中提出的优化算法针对任务能耗对关键的信息素进行了多处调整处理,解决了蚁群算法收敛速度过慢的问题:通过在步骤3通过计算并比较各个任务在各核心上的能耗大小完成信息素初始化,增加任务执行的能耗代价最低的核心所对应的路径上的信息素含量,提供搜索方向,避免盲目搜索,提高算法的搜索效率;通过在步骤8中根据算法不同迭代轮次的能耗优化结果对信息素进行调整,进一步加快了算法的收敛速度。
三.本发明所使用过的能耗的计算模型更加细致,在步骤5中计算任务调度方案所对应的总能耗的时候不仅考虑了任务在核心上的计算能耗和不同任务间的通信能耗,还考虑到了核心处于空闲状态时的能耗,该模型的计算结果能够在步骤7,步骤8的迭代循环过程中影响到算法的信息素,进而在循环过程中逐渐完成对任务调度方案的调整。
本发明适用于CPU-GPU主从异构架构环境下的任务调度,根据需求重新设计了CPU-GPU异构环境下处理器和待处理任务的数学模型,该模型可作为多目标任务调度算法设计的基础。提出了一种适用于异构多核系统,考虑任务实时性约束,且同时还以能耗为优化目标的改进蚁群算法,补充了国内对于CPU- GPU异构环境下兼顾实时约束和能耗的启发式任务调度策略相关研究的不足之处,并且在能耗计算时着重考虑了通信能耗,能够适应通信量较大的任务。通过在蚁群算法开始之前根据任务在各个核心的执行能耗和任务间依赖关系寻找可行解来为算法提供初始信息,并在迭代运行过程中通过实时性约束筛选来可行解,在尽量满足任务实时需求的同时进一步加了快收敛速度。
附图说明
为使本发明的目的,方案更加通俗易懂,下面将结合附图对本发明进一步说明。
图1为本发明所使用的系统结构示意图;
图2为将任务数据划分为DAG的示例图;
图3为本发明中所涉及的改进算法的流程图。
具体实施方式
为使本发明的目的,技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。
本发明是基于CPU-GPU主从架构环境下的任务调度策略,异构架构示意图如图1所示,此处以该图示的为例,处理器中存在一个CPU和三个GPU,不同处理核心之间通过PCI主线交互数据,所处理的任务实例如图2的DAG所示,可以划分为14个具有依赖关系且通信量有较大差异的子任务。在开始任务调度之前,整个系统需要设定好自身处理器性能相关的参数(步骤1),并且接受任务时应当获取任务的相关信息(步骤2),任务调度算法的流程如图3所示,首先根据各个子任务的截止期限,计算量,通信量等信息,处理核心的计算能力和功率等性能进行改初始解的搜索以加快后续算法的收敛速度(步骤3),之后通过任务预估完成时间,任务截止期限,任务执行能耗,核间通信能耗,核心空闲情况等多因素的综合处理展开蚁群算法流程的循环迭代求解过程(步骤4,5,6,7,8),最后得出在当前系统配置环境下满足实时约束条件且能耗最优的任务调度方案并进行执行。
步骤1,接受对应所设计抽象数学模型的处理器相关数据的输入并进行整理,完成处理器模型的初始化工作。所选实例对应到本发明所设计的处理器模型就应当包含如下内容:处理器中有4个核心,记为P={P1,P2,P3,P4},其中P1 为CPU,P2,P3和P4均为GPU,核心间通过PCI主线进行信息交互,因为任务调度需要了解核心的具体状态,所以需要建立各核心的空闲时间列表PEN,核心P1的空闲时间列表PEN(P1)={(0,eof)},其中0表示开始处理任务的时刻, eof为对应任务最大规模的常量,通常设置为10000,每当一个子任务调度完成都需要更新和维护该列表,对于第i个处理核心Pi,其空闲时间列表初始状态为PEN(Pi)={(0,eof)}。核心的处理能力为αi,动态功耗βi和处理器的静态功耗 Pstatic,而对于核间通信代价,因为异构的关系不能用简单的均值来表示,因为这4个处理核心之间通信的代价会有所不同,用Wij表示核心Pi到核心Pj的传输单位数据的通信能耗(当i=j,Wij为0,即进行核内通信时的通信代价忽略不计,另外由于通信的对称性,Wij=Wji),通过结合任务间通信量可计算任务通信能耗。
步骤2,接受任务相关数据并根据之前初始化完成后的处理器模型对任务数据进行相应的任务初始化处理。所选实例对应到本发明所设计的任务模型应当包含如下内容:用图2所示的有向无环图DAG来表示任务间的依赖关系和通信量,T为子任务集合,那么T={T1,T2,T3,T4,...,T14},Ed为子任务依赖关系集合,此处通过14x14的对称矩阵进行存储,例如子任务T1与T3具有依赖关系,T3和T9具有依赖关系,而T1和T9没有直接的依赖关系,那么对应矩阵元素Ed13=1,Ed39=1,Ed19=0,为了方便之后的算法求解过程,这里还需要根据依赖关系对所有子任务建立前驱任务列表,例如T4的前驱任务列表为 Pre[4]={1},T13的前驱任务列表为Pre[13]={9,10,11},mi为任务Ti的计算量, dij为具有依赖关系的任务Ti与任务Tj间的通信量,在实例中通过14*14的矩阵存储,对应实时约束的要求,每个任务从输入中接收一个截止期限D。建立任务的执行顺序列表que[14],临时记录任务调度方案的列表temp[14](初始为全0,元素顺序对应任务执行顺序,例如当任务执行顺序为T1,T3,T2,T4,...,T14,对应que[14]={1,3,2,4,...,14},已生成的调度方案为T1→P1,T3→P2,T2→P1,那么temp={1,1,2,0,0,0,0,0,0,0,0,0,0,0})。
步骤3,完成蚁群算法中任务执行顺序,基础参数和初始信息素的初始化。
使用HEFT算法根据子任务间的依赖关系集合Ed和各个子任务预估完成时间t确定任务的执行顺序que[14]={1,3,2,4,...,14}。
所述的基础参数包括:各路径上的初始信息素含量ρ,每只蚂蚁经过留下的信息素m,每只蚂蚁遍历完成之后的局部衰减因子Pl,每次迭代开始时信息素的全局衰减因子Pg,信息素影响因子g,蚂蚁数量n和迭代次数N;其中,一个子任务放置到一个核心上执行视作一条路径,子任务或核心有所不同则视为不同路径,对于当前实例,存在14*4条不同的路径;
表1蚁群算法初始化参数
参数符号 | 参数含义 | 初始值 |
N | 迭代次数 | 100 |
n | 蚂蚁数量 | 50 |
g | 信息素影响因子 | 1.2 |
P<sub>1</sub> | 局部衰减因子 | 0.02 |
P<sub>2</sub> | 全局衰减因子 | 0.2 |
m | 经过路径的留下的信息素 | 0.8 |
ρ | 初始信息素含量 | 10 |
所述的初始信息素的初始化具体为:按任务执行顺序选择每个子任务的最优执行核心,所述的最优执行核心为所有核心中执行该子任务的能耗最小的核心,所述的能耗为两部分之和,其中,第一部分是当前子任务在所选处理核心上的计算能耗c,第二部分是所有前驱任务最优处理核心与当前子任务所选处理核心之间的通信能耗之和,其中,Eix表示第i个子任务在核心x上的能耗,具体计算公式由权利要求书中的公式(1)给出。
公式(1)中涉及到的相关变量:t为各个子任务在各个异构核心中的预估执行时间,对应实例的存储方式为14*4的矩阵,例如tix为子任务Ti在核心Px 中的预估执行时间,tix=mi/αx。c为各个子任务在各个核心上执行时的能耗代价, cix为子任务Ti在核心Px中执行造成的计算能耗,cix=tix*βx。e表示执行不同子任务的核心之间的通信能耗,eij为执行任务Ti与任务Tj的核心之间所需要进行的数据通信造成的能耗,eij=dij*Wtemp[i]temp[j],dij为子任务Ti和子任务Tj之间的通信量,temp[i]为临时任务调度方案中子任务Ti的执行核心编号, Wtemp[i]temp[j]为临时任务调度方案中子任务Ti和Tj的执行核心间的单位数据通信能耗。
根据HEFT算法得到的任务执行顺序被更新为que[14]={1,3,2,4,...,14},按照任务执行顺序列表,当前调度任务为T1,计算T1分别在P1,P2,P3,P4 上的能耗,其中T1在P1上能耗的具体计算如下:记录任务的执行核心编号,即temp[1]的值临时置为1,此时由于T1不存在前驱任务,所以子任务T1的所有前驱任务最优处理核心与当前子任务所选处理核心之间的通信能耗之和为0,该路径的能耗为E11=c11;同理计算P2,P3,P4上的能耗E12,E13和E14,本实施例中T1在P1上能耗最小,P1即为T1的最优执行核心,此时更新 temp[1]=1;根据任务执行顺序,接下来执行子任务T3,计算T3分别在P1, P2,P3,P4上的能耗,其中T3在P1上能耗的具体计算如下:记录任务的执行核心编号,即temp[3]的值临时置为1,此时由于T3的前驱任务有且仅有T1,前驱个数|Pre[1]|=1,任务T3的第一个前驱Pre[3][1]=1,此时能耗代价之和为 E31=c31+e13=c31+d13*Wtemp[1]temp[3]=c31+d13*W11,其中核内单位数据通信能耗 W11=0,因此E31=c31,类似的计算子任务T3在核心P2,P3,P4上的能耗, E32=c32+e13=c32+d13*Wtemp[1]temp[3]=c32+d13*W12,E33=c33+d13*W13,E34=c34+d13*Wi4;本实施例中T3在P3上能耗最小,P3即为T3的最优执行核心,此时更新 temp[3]=3。
同理,完成所有子任务的调度之后即可生成完整的临时任务调度列表temp,将temp中各路径对应的信息素含量翻倍即可完成信息素的初始化。在信息素的初始化完成后,重置临时调度方案列表temp至步骤2中的初始状态。
步骤4,根据任务截止时间,能耗和信息素随机生成一种任务调度方案。
根据步骤3中得到的执行顺序列表que[14]={1,3,2,4,5,6,7,...,14},对于待调度的任务T1,通过EFT算法计算出将任务T1放置到核心P1上执行时整个任务的最早完成时间为EFT11,类似的,计算出任务T1在其余核心上执行时整个任务的最早完成时间EFT12,EFT13和EFT14,取任务最早完成时间不大于D的路径作为可行路径,对于子任务T1,这些值均不大于截止期限D,因此均为可行路径(如果不存在能够使任务在截止期限内完成的可选路径,那么优先考虑时间因素,选择耗时小于平均的路径作为可选路径,其中平均值的计算方法由权利要求书中的公式(2)给出),根据权利要求书中的公式(3)-(5)计算可行路径被选择的概率p11,类似的计算出p12,p13和p14。
统计任务T1的所有可行路径的选择概率之和ap1=p11+p12+p13+p14,由于所有路径都是可行路径,使用伪随机函数生成位于[0,ap1]区域内的随机数r,0 与不同可行路径的被选择概率构成数量等同于可选路径的区间:[0,p11),[p11, p11+p12),[p11+p12,p11+p12+p13),[p11+p12+p13,p11+p12+p13+p14],根据r的值属于哪一个区间完成对处理核心的选择,例如随机数r满足r>=0且r<p11,那么选择核心P1处理子任务T1,更新temp[1]=1。定义子任务Ti的前驱任务完成时间和所选核心进入最后空闲的时间这两者的中最大值作为子任务Ti的开始执行时间ESTi,那么EST1即为任务T1的开始执行时间,EST1+h1即为核心P1完成子任务T1后再次进入空闲的时刻,从核心的空闲时间列表中移除区域(EST1, EST1+h1),由于子任务T1没有前驱任务,且此时核心P1最后进入空闲时间的时刻是0,因此EST1=0,更新结果PEN(P1)={(t11,eof)}。
完成后增加一次任务计数,然后对执行循序列表中的下一个子任务进行相同的计算处理直到任务计数到达子任务总数14,即所有子任务均已调度完成时,子任务计数重置为0,并进入步骤5。
步骤5,局部信息素更新,统计临时任务调度方案的时间和能耗。
记录经过步骤4得出的临时任务调度方案temp,根据temp更新方案中被选择路径上的信息素,更新结果的计算方法由权利要求书中的公式(6)给出,在实例中对于temp={1,1,2,...},更新子任务T1放置于核心P1上执行所对应路径上的信息素含量ρ11=ρ11*(1-0.02)+0.8=0.98ρ11+0.8,同理更新子任务T2 放置于核心P1上执行所对应路径的信息素含量ρ21=0.98ρ21+0.8,更新子任务 T3放置于核心P2上执行所对应路径的信息素含量ρ32=0.98ρ32+0.8,类似的,更新temp中所有剩余被选择路径上的信息素含量,而在该任务调度方案未被选择的路径上的信息素含量不变。
完成信息素含量的更新之后计算临时任务调度方案temp所对应的任务完成时间TL和能耗E,其中任务完成时间TL可以通过查询各个核心的空闲时间列表PEN记录,并取其最大值得出,在实例中PEN(P1),PEN(P2),PEN(P3)和 PEN(P4)的最后一个元素分别为(tp1,eof),(tp2,eof),(tp3,eof),(tp4,eof),其中 tp1,tp2,tp3和tp4满足关系tp1<tp2<tp3<tp4,那么对于该任务调度方案,任务完成时间TL=tp4。能耗E的计算方式由权利要求书中的公式(7)-(9)给出,对于实例中的经过步骤4得出的临时任务调度方案temp={1,1,2,...}, E=Pstatic*TL+E1temp[1]+E2temp[2]+E3temp[3]+...=Pstatic*tp4+E11+E21+E32+...,其中Pstatic为步骤1中输入的常数,E11为子任务T1在核心P1上的能耗,其计算方法由权利要求书中的公式(1)给出,同理可计算E21,E32等各个任务在所选核心上的能耗。信息素含量的更新和任务调度方案的记录完成之后,重置核心空闲时间列表PEN和临时调度方案列表temp至步骤2中的初始状态;
步骤6,完成一次算法的迭代过程,根据蚂蚁数量n=50,共循环迭代50次,获得50种任务调度方案,取能耗最低的任务调度方案记为A1,并进行全局信息素更新。
经过步骤4和步骤5已经完成了一种任务调度方案的构造,将这种任务调度方案的构造过程重复蚂蚁次数n=50次,此时记录50次种任务调度方案中能耗最低的任务调度方案为A1,更新全局信息素,全局信息素的更新方法由权利要求书中公示(10)-(11)给出,对于实例,步骤6中的任务调度方案为 {1,1,2,..},对于子任务T1,该方案所选择的路径,也即T1放置于核心P1上执行所对应路径的信息素含量更新结果为ρ11=ρ11*(1-0.2)+5*0.8=0.8ρ11+4,在未被选择的路径中,将任务T1放置于核心P2上执行所对应路径上信息素含量更新结果ρ12=ρ12*(1-0.2)=0.8ρ12,而ρ13,ρ14与ρ12同属未被选择的路径,计算方式相同,此时子任务T1相关路径上的信息素更新完成,剩余子任务 T2~T14相关路径的信息素含量更新结果同理可得,完成所有路径的信息素更新后进入步骤7。
步骤7、完成一次算法的迭代过程,获得50种任务调度方案,记录本次迭代过程中能耗最低的任务调度方案为A2,并进行全局信息素更新。
重复步骤4和步骤5,重复次数为蚂蚁数量n=50,再次搜索并记录总能耗最低的调度方案A2,根据调度方案A2更新所有路径的信息素,更新后的信息素作为下一次信息素更新的初值,信息素更新公式与步骤6中的相同;
步骤8、比较任务调度方案A1和A2,若A1的能耗高于A2,否则将任务调度方案A2的内容复制给A1完成方案更新,对更新后的任务调度方案A1中各路径信息素含量进行翻倍,然后返回步骤7继续迭代,直到达到步骤3中基础参数初始化得到的迭代次数N=100后,所得总能耗最低的调度方案A1即为最优调度方案,任务按照该方案进行执行。
Claims (1)
1.一种面向CPU-GPU异构的低能耗任务调度策略,其特征在于包括以下步骤:
步骤1、处理器模型的初始化,所述的处理器模型包括核心状态和核心性能;
核心状态包括:处理器中N个核心的集合P={P1,P2,P3,...,PN},各个核心的空闲时间列表PEN,在处理多个子任务构成的任务集合时,每当一个子任务调度完成,更新该列表;
核心性能包括:每个核心与任务类型有关的处理能力α,每个核心的动态功耗β,处理器的静态功耗Pstatic,任意两核间的单位数据通信能耗W;
步骤2、任务的初始化处理,
包括得到DAG任务图G={T,Ed,m,d,D},其中,T为子任务集合,Ed为子任务依赖关系集合,m为子任务的计算量,d为子任务间的通信量,D为对应实时约束的子任务组截止期限;
根据子任务依赖关系集合Ed对所有子任务节点建立前驱任务列表Pre,建立子任务执行顺序列表que和临时调度方案列表temp,其中temp的第i个元素temp[i]表示子任务Ti的执行核心编号;
步骤3、完成蚁群算法中子任务执行顺序、基础参数和初始信息素的初始化;
其中,所述的子任务执行顺序通过对子任务集合T使用HEFT算法求解得到;
所述的基础参数包括:各路径上的初始信息素含量ρ,每只蚂蚁经过留下的信息素m,每只蚂蚁遍历完成之后的局部衰减因子Pl,每次迭代开始时信息素的全局衰减因子Pg,信息素影响因子g,蚂蚁数量n和迭代次数N;其中,一个子任务放置到一个核心上执行视作一条路径,子任务或核心有所不同则视为不同路径;
所述的初始信息素的初始化具体为:按子任务执行顺序选择每个子任务的最优执行核心,所述的最优执行核心为所有核心中执行该子任务的能耗最小的核心,所述的能耗为两部分之和,其中,第一部分是当前子任务在所选处理核心上的计算能耗c,第二部分是所有前驱任务最优处理核心与当前子任务所选处理核心之间的通信能耗之和,其中,Eix表示第i个子任务在核心x上的能耗,具体计算公式如下:
其中,cix=tix*βx,
tix=mi/αx,tix表示第i个子任务在第x个核心上的预估执行时间;
mi表示第i个子任务的计算量,
αx表示第x个核心与任务类型有关的处理能力,
βx表示第x个核心的动态功耗,
|Pre[i]|表示第i个子任务的前驱任务数量,
Pre[i][j]表示第i个子任务的第j个前驱任务,
ePr e[i][j]i表示执行第i个子任务的第j个前驱任务和第i个子任务的核心之间的通信能耗,
ePr e[i][j]i=dPr e[i][j]i*Wtemp[Pr e[i][j]]temp[i],
dPr e[i][j]i表示第i个子任务的第j个前驱任务和第i个子任务之间的通信量,Wtemp[Pr e[i][j]]temp[i]表示临时调度方案temp中第i个子任务的第j个前驱任务所在的处理核心与第i个子任务所在的处理核心间的单位数据通信能耗;
所有子任务及其对应的最优执行核心构成的路径的初始信息素含量翻倍,即完成初始信息素的初始化;
步骤4、选取可行路径:根据步骤3中得到的子任务执行顺序取出待调度子任务,通过EFT算法判断在各个核心上执行时任务最早完成时间是否小于截止期限D,
如果该子任务放置在一个核心上执行时的任务最早完成时间不大于截止期限D,则该子任务放置到该核心上即为可行路径,
其中,|P|为处理核心集合的容量,即核心数目,tix为步骤3中提到的第i个子任务在第x个核心上的预估执行时间;
计算各可选路径的选择概率,第i个子任务在第x个核心上执行的选择概率pix计算过程如下:
其中,g为信息素影响因子,由步骤3的基础参数初始化得到,pgix为根据信息素确定的选择概率,peix为根据能耗确定的选择概率
其中,ρix表示第i个子任务在第x个核心上执行所对应路径上的信息素含量,路径上信息素含量初始值由步骤3得到,ρix即为ρ的第i行第x列的元素,
|P|为处理核心集合的容量,即核心数目,
Eix表示第i个子任务在核心x上的能耗,
之后通过伪随机的方式根据上述可行路径的选择概率进行选择,对每个子任务都随机筛选出一个执行核心,即随机得到一个调度方案;
步骤5、更新步骤4得出的调度方案中各路径对应的信息素,更新公式如下:
ρi+1=ρi*(1-Pl)+m (6)
其中,ρi表示更新前的信息素含量,ρi+1表示更新后的信息素含量,Pl表示每只蚂蚁遍历完成之后的局部衰减因子、m表示每只蚂蚁经过留下的信息素,Pl和m由步骤3中的基础参数初始化得到;
计算步骤四随机选择出的调度方案所对应的总能耗E,其中总能耗包括处理器静态能耗Ep和任务执行的能耗Et,具体计算公式如下:
E=Ep+Et (7)
其中,
Ep=Pstatic*TL (8)
Pstatic为固定功耗常数,TL为调度方案对应的任务完成时间;
其中,|T|表示子任务的总数,temp[i]表示临时调度方案中子任务Ti的执行核心编号,Eitemp[i]表示将子任务Ti放置到临时调度方案所选择的核心中进行执行时的能耗;
步骤6、返回步骤4进行循环,当循环次数达到蚂蚁数量n时,记录总能耗最低的调度方案A1,根据调度方案A1更新所有路径的信息素,更新后的信息素作为下一次信息素更新的初值,其中,调度方案A1中各路径对应的信息素的更新公式如下:
ρi+1=ρi*(1-Pg)+5m (10)
除去A1中的路径外,剩余路径对应的信息素更新公式如下:
ρi+1=ρi*(1-Pg) (11)
其中,ρi表示更新前的信息素含量,ρi+1表示更新后的信息素含量,Pg表示每次迭代开始时信息素的全局衰减因子、m表示每只蚂蚁经过留下的信息素,两者均由步骤3中的基础参数初始化得到;
然后执行步骤7;
步骤7、重复步骤4和步骤5,重复次数为蚂蚁数量n,再次搜索并记录总能耗最低的调度方案A2,根据调度方案A2更新所有路径的信息素,更新后的信息素作为下一次信息素更新的初值,信息素更新公式与步骤6中的相同;
步骤8、将A1中的记录的调度方案更新为A1、A2中能耗最小的调度方案,对更新后的调度方案A1中各路径信息素含量进行翻倍,然后返回步骤7继续迭代,直到达到迭代次数N后,所得总能耗最低的调度方案即为最优调度方案,任务按照该方案进行执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910247244.2A CN109960576B (zh) | 2019-03-29 | 2019-03-29 | 一种面向cpu-gpu异构的低能耗任务调度策略 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910247244.2A CN109960576B (zh) | 2019-03-29 | 2019-03-29 | 一种面向cpu-gpu异构的低能耗任务调度策略 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109960576A CN109960576A (zh) | 2019-07-02 |
CN109960576B true CN109960576B (zh) | 2021-04-16 |
Family
ID=67025331
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910247244.2A Active CN109960576B (zh) | 2019-03-29 | 2019-03-29 | 一种面向cpu-gpu异构的低能耗任务调度策略 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109960576B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110941263A (zh) * | 2019-10-25 | 2020-03-31 | 华南理工大学 | 一种自主水下航行器路径规划方法和装置 |
CN111240818B (zh) * | 2020-01-09 | 2023-08-08 | 黔南民族师范学院 | 一种多相同gpu异构系统环境下的任务调度节能方法 |
CN111338649A (zh) * | 2020-02-14 | 2020-06-26 | 浪潮商用机器有限公司 | 一种异构系统及其加速方法、装置及可读存储介质 |
CN111399911B (zh) * | 2020-03-24 | 2021-11-02 | 杭州博雅鸿图视频技术有限公司 | 一种基于多核异构计算的人工智能开发方法及装置 |
CN111897648B (zh) * | 2020-06-04 | 2022-06-14 | 华南理工大学 | 一种温度约束下的暗核感知众核系统处理器资源分配方法 |
CN111679897A (zh) * | 2020-06-05 | 2020-09-18 | 重庆邮电大学 | 异构多核片上系统任务分配方法和装置 |
CN114253701A (zh) * | 2020-09-25 | 2022-03-29 | 超聚变数字技术有限公司 | 任务调度方法、装置以及计算机系统 |
CN112328380A (zh) * | 2020-11-10 | 2021-02-05 | 武汉理工大学 | 一种基于异构计算的任务调度方法及装置 |
CN113485818A (zh) * | 2021-08-03 | 2021-10-08 | 北京八分量信息科技有限公司 | 异构任务的调度方法、装置及相关产品 |
CN114398166B (zh) * | 2022-01-27 | 2024-05-28 | 重庆大学 | 基于二分法的分布式计算任务调度方法及设备 |
CN114461370B (zh) * | 2022-04-13 | 2022-07-01 | 暨南大学 | 一种面向物联网的安全关键任务调度方法及系统 |
CN115373860B (zh) * | 2022-10-26 | 2023-01-10 | 小米汽车科技有限公司 | Gpu任务的调度方法、装置、设备和存储介质 |
CN117349029A (zh) * | 2023-12-04 | 2024-01-05 | 浪潮电子信息产业股份有限公司 | 异构计算系统、能耗确定方法、装置、电子设备及介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007077516A1 (en) * | 2006-01-06 | 2007-07-12 | Koninklijke Philips Electronics, N.V. | Power aware dynamic scheduling in multiprocessor system employing voltage islands |
CN101271407A (zh) * | 2008-05-13 | 2008-09-24 | 武汉理工大学 | 一种基于能量优化的网格调度方法 |
CN103257900A (zh) * | 2013-05-24 | 2013-08-21 | 杭州电子科技大学 | 减少cpu占用的多处理器上实时任务集资源预留方法 |
CN106095555A (zh) * | 2016-06-17 | 2016-11-09 | 河海大学常州校区 | 基于蚁群算法的wsan中执行器任务调度方法 |
CN107133088A (zh) * | 2017-04-19 | 2017-09-05 | 武汉科技大学 | 一种基于粒子群算法的多核系统任务调度方法 |
CN109189205A (zh) * | 2018-09-30 | 2019-01-11 | 武汉理工大学 | 一种异构多核嵌入式实时系统能耗优化调度方法 |
CN109254846A (zh) * | 2018-08-01 | 2019-01-22 | 国电南瑞科技股份有限公司 | 基于两级调度的cpu与gpu协同计算的动态调度方法及系统 |
-
2019
- 2019-03-29 CN CN201910247244.2A patent/CN109960576B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007077516A1 (en) * | 2006-01-06 | 2007-07-12 | Koninklijke Philips Electronics, N.V. | Power aware dynamic scheduling in multiprocessor system employing voltage islands |
CN101271407A (zh) * | 2008-05-13 | 2008-09-24 | 武汉理工大学 | 一种基于能量优化的网格调度方法 |
CN103257900A (zh) * | 2013-05-24 | 2013-08-21 | 杭州电子科技大学 | 减少cpu占用的多处理器上实时任务集资源预留方法 |
CN106095555A (zh) * | 2016-06-17 | 2016-11-09 | 河海大学常州校区 | 基于蚁群算法的wsan中执行器任务调度方法 |
CN107133088A (zh) * | 2017-04-19 | 2017-09-05 | 武汉科技大学 | 一种基于粒子群算法的多核系统任务调度方法 |
CN109254846A (zh) * | 2018-08-01 | 2019-01-22 | 国电南瑞科技股份有限公司 | 基于两级调度的cpu与gpu协同计算的动态调度方法及系统 |
CN109189205A (zh) * | 2018-09-30 | 2019-01-11 | 武汉理工大学 | 一种异构多核嵌入式实时系统能耗优化调度方法 |
Non-Patent Citations (2)
Title |
---|
一种基于蚁群算法的异构多核周期多帧任务调度算法研究;王培磊;《中国优秀硕士学位论文全文数据库 信息科技辑》;20130615;第I140-102页 * |
云计算中任务调度优化策略的研究;全力 等;《计算机工程》;20181129;第44卷(第8期);第14-18页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109960576A (zh) | 2019-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109960576B (zh) | 一种面向cpu-gpu异构的低能耗任务调度策略 | |
Hu et al. | Spear: Optimized dependency-aware task scheduling with deep reinforcement learning | |
US9183058B2 (en) | Heuristics-based scheduling for data analytics | |
CN111738434B (zh) | 在异构处理单元上执行深度神经网络的方法 | |
CN110321222B (zh) | 基于决策树预测的数据并行作业资源分配方法 | |
Sulaiman et al. | An evolutionary computing-based efficient hybrid task scheduling approach for heterogeneous computing environment | |
US20110209153A1 (en) | Schedule decision device, parallel execution device, schedule decision method, and program | |
Shetti et al. | Optimization of the HEFT algorithm for a CPU-GPU environment | |
Zheng et al. | Fusionstitching: boosting memory intensive computations for deep learning workloads | |
CN112711478A (zh) | 基于神经网络的任务处理方法、装置、服务器和存储介质 | |
Canon et al. | Online scheduling of task graphs on heterogeneous platforms | |
CN113037800A (zh) | 作业调度方法以及作业调度装置 | |
Feljan et al. | Task allocation optimization for multicore embedded systems | |
CN116501505B (zh) | 负载任务的数据流生成方法、装置、设备及介质 | |
Huang et al. | Communication-aware task scheduling algorithm for heterogeneous computing | |
Duan et al. | Reducing makespans of dag scheduling through interleaving overlapping resource utilization | |
Vianna et al. | Modeling the performance of the Hadoop online prototype | |
CN110415162B (zh) | 大数据中面向异构融合处理器的自适应图划分方法 | |
Jiang et al. | A genetic algorithm for scheduling in heterogeneous multicore system integrated with FPGA | |
CN112817708A (zh) | 一种异构多核处理器系统中有向无环图任务的调度方法 | |
Okamura et al. | DAG scheduling considering parallel execution for high-load processing on clustered many-core processors | |
Miryani et al. | Hard real-time multiobjective scheduling in heterogeneous systems using genetic algorithms | |
Shi et al. | An efficient scheduling algorithm for distributed heterogeneous systems with task duplication allowed | |
Yuan et al. | Efficient scheduling of DAG tasks on multi-core processor based parallel systems | |
CN117519941A (zh) | 基于改进蚁群的异构平台负载均衡调度方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |