本发明属于计算机体系结构领域,具体涉及一种改进烟花算法的cmp任务调度方法。
背景技术:
受内核间的硬件资源共享和任务间的依赖关系影响,有依赖的cmp任务调度容易产生资源争用,使得多核处理器吞吐率下降,并行性、高效性得不到有效发挥。
cmp任务调度问题是一类np完全的组合优化问题。目前,在任务调度问题上应用较多的组合优化算法是遗传算法(geneticalgorithm,ga),但遗传算法容易“早熟”,并且由于其复杂的交叉变异操作,算法的时间复杂度和执行效率容易受到任务数量影响,导致任务调度结果不能满足实际需求。
烟花算法(fireworksalgorithm,fwa)是在2010年由谭营提出的一种新型群体智能优化算法。烟花算法在求解复杂问题全局最优解上展现出良好的性能特点,且对求解的问题限定较低,适用于组合优化问题。
由于烟花算法在产生爆炸火花时会受到爆炸数量和爆炸幅度的限制,并且适应度值最好烟花的爆炸火花数量多但幅度过小,产生的火花与烟花距离过近甚至重叠,导致火花失效,浪费了计算资源,使算法的运行效率受限。
技术实现要素:
本发明的目的在于提供提高cmp架构下任务调度的高效性,保证该烟花产生的火花的有效性的改进烟花算法的cmp任务调度方法。
本发明的目的通过以下技术方案来实现:
改进烟花算法的cmp任务调度方法,包括如下步骤:
(1)设定烟花个数n、基本爆炸火花数、基本爆炸半径、排斥操作界定距离、排斥操作作用维数的初始值、最大迭代次数、初始dag图;
(2)根据本发明所述的编码方案随机生成n个烟花的位置向量;
(3)计算烟花的爆炸火花数量、爆炸幅度和适应度值;
(4)进行爆炸操作和高斯变异操作,产生爆炸火花和高斯变异火花,并将超出可行域范围的火花映射回可行域内;
(5)判断适应度值最优的烟花产生的火花是否需要进行排斥操作,若需要,转至步骤⑥,若不需要,转至步骤(7);
(6)随机选择火花的维进行排斥操作,若排斥后有火花超出可行域范围则将其映射回可行域内;
(7)计算爆炸火花和高斯变异火花的适应度值;
(8)将适应度值最好的烟花或火花保留到下一代,根据基于欧式距离的轮盘赌规则选择其余n-1个烟花;
(9)是否满足算法终止条件,达到最大迭代次数,若满足,输出最优任务调度序列,算法停止;若不满足,转至步骤(3)。
特别地,
所述的编码方式为:编码保留每个烟花的位置是多维向量的特点,只对每一维表示的含义重新定义。用xi表示烟花i的位置向量,即:xi=[x1,x2,…,xj,…,xm],其中xj=rand(1,n),n表示处理器核的数量,rand(1,n)表示在1到n之间随机取整数值;m表示任务的数量,xj表示第j个任务被分配到xj处理器核上执行。这种编码方式保证一个任务只能被分配到一个处理器核上执行,每个处理器核可以处理多个任务。
所述的排斥操作方法为:当适应度值最好的烟花与其产生的火花之间距离小于可接受范围时进行排斥操作:
所述的排斥操作作用维数z的迭代方法为:z(t)=w*z(t-1),其中z(t)表示第t次迭代排斥操作作用维数的取值,z(t-1)表示第t-1次迭代排斥操作作用维数的取值,w是一个随迭代次数t增加而递减的非线性惯性权重值,满足:w(t)=(1/2)t,其中w(t)是第t次迭代w的取值。
本发明的有益效果在于:
充分利用了基本烟花算法收敛速度快、求解精度高的特点,并在基本烟花算法中引入排斥算子,对适应度值最好的烟花进行排斥操作,避免由于产生的火花与烟花距离过近或重叠而无实际意义造成的计算资源浪费;并在排斥算子作用的维数上添加非线性惯性权重因子,增强算法在迭代初期的全局性探索能力,同时加强算法迭代后期的细致性寻优能力。
附图说明
图1是所述的实例一的dag图;
图2是所述的实例一的调度过程示意图;
图3是所述的实例一经过优化后的调度过程示意图;
图4是本发明的流程图;
具体实施方式
下面结合附图对本发明的具体实施方式作进一步说明:
本发明将烟花算法进行改进,并将改进后的烟花算法应用于cmp架构下的任务调度问题上。本发明首先对烟花算法中每代适应度值最优的烟花进行排斥操作,保证其产生的火花有效,避免由于火花失效造成计算资源浪费;同时,在排斥操作的维数上应用非线性惯性权重因子,使算法在迭代初期有更强的全局探索能力,在迭代后期能进行细致性的寻优。
下面结合附图1-图4对本发明进行详细的说明。
1、cmp任务调度定义
cmp任务调度问题是根据某一算法将任务调度到不同的内核上,并使得执行完全部任务所用时间最短。
cmp任务调度问题可以用三元组π=(p,g,pt)表示。其中,p是处理器核构成的集合。g是图论中的有向无环图(directacyclicgraph,dag),表示任务及任务间的依赖关系。pt是一个矩阵,表示不同的任务在不同的处理器核上的计算开销,ptip即为任务ti在处理器核p上计算开销。
表示任务及任务间依赖关系的dag图可用一个三元组g=(v,s,w)表示,其中每个变量的含义为:
(1)v代表dag图的顶点集合,由该处理器需要处理完的全部任务组成。第i个任务ti对应dag图中的顶点vi;
(2)s代表dag图的边集合,由任务间的通信关系组成,若任务ti与tj间存在通信关系,并且ti为tj的前驱任务,则对应的dag图中存在边sij,边上箭头的方向由vi指向vj;
(3)w是dag图的边上的权重值组成的集合,w={wi1,wi2,…,wij,…,win},其中m表示带调度的任务数量,wij表示任务ti与其前驱任务tj之间的通信开销。当任务i与任务j被分配到同一个核上执行时,通信开销为0。
本发明适用的cmp任务调度问题要求采用标准dag图表示任务及任务间依赖关系,即要求所述的dag图有唯一的入口节点和唯一的出口节点。附图1是本发明的一个任务调度模型实例,t1为唯一的入口节点,t9为唯一的出口节点,该实例中的4个任务在3个处理器核上的计算开销矩阵pt为:
有依赖的任务调度问题要求任务ti的全部前驱任务执行完成后才能开始执行ti,则在一组任务调度中,任务ti执行完所需时间为exe[ti],计算方法为:
exe[ti]=wij+ptip+max{exe[tj]}
tj∈pre(ti)
其中pre(ti)表示任务ti的前驱任务集合,wij表示任务ti与任务tj的通信开销,ptip为任务ti在处理器核p上的计算开销,max{exe[tj]}是任务ti的前驱任务全部执行完所用时间。
则有依赖的cmp任务调度问题的数学定义为:ts=min{exe[tlast]}
其中exe[tlast]是最后一个任务执行完所用时间,ts为任务调度长度,即全部任务执行完所用时间。
2、适应度值
本发明所述的任务调度方法保留烟花算法通过适应度值的大小评价烟花或火花优劣的特点。质量好的烟花适应度值小;质量差的烟花适应度值大。
定义任务调度长度ts的大小为适应度值的大小。当ts越大、全部任务执行完成的时间越长时,烟花的质量越差;反之,当ts越小、全部任务执行完的时间越短时,烟花的质量越优。
适应度值函数为:
f(xi)=ts(xi)
其中
3、引入排斥算子的位置更新方案
基本烟花算法在各类组合优化问题中表现出良好的寻优能力,但适应度值最好的烟花的爆炸半径很小,甚至为0,导致产生的火花失去实际价值,浪费算法的计算资源,也容易使算法陷入局部最优解。
为了避免烟花算法这一特点产生的不良影响,本发明引入排斥算子,对火花位置进行修正,当烟花i与它产生的火花之间的距离达不到可接受范围时,排斥作用生效。
烟花与其产生的火花的间距以欧氏距离来衡量,进行排斥操作的条件为:
其中xi表示烟花i的位置向量,xh表示烟花i产生的火花h的位置向量,δr表示烟花i与其产生的火花h的最小可接受距离。
排斥操作方法为:
其中
考虑到cmp任务调度的特点,排斥算子取值为:δs=rand(0,n-1)
其中n表示处理器内核的数量,rand(0,n-1)是在0到n-1之间随机取整数的函数。
排斥算子不对烟花的所有维度进行排斥作用,只随机选择其中的z个维度进行排斥操作,z满足:z(t)=w*z(t-1)
其中z(t)表示第t次迭代排斥操作作用维数z的取值,z(t-1)表示第t-1次迭代排斥操作作用维数z的取值,w是一个随迭代次数t增加而递减的非线性惯性权重值,满足:w(t)=(1/2)t,其中w(t)是第t次迭代w的取值。
所述的非线性惯性权重值w在迭代初期的取值相对大,有利于烟花算法在较大的空间内进行全局性的搜索;在迭代后期的取值相对小,有利于算法在当前最优值附近进行更加细致的寻优。
4、编码策略
为使具有连续解空间的烟花算法适用于离散的cmp任务调度问题,本发明对烟花进行编码。
所述的编码方案使种群中每个烟花或火花代表一种可能的任务调度序列。
所述的编码方案对处理器核进行编号:1,2,...,n;并对要处理的任务进行编号1,2,...,m。
则烟花或火花i的位置向量xi可表示为:
xi=[x1,x2,…,xj,…,xm]
xj=rand(1,n)
其中n表示处理器核的数量,rand(1,n)表示在1到n之间随机取整数值;m表示任务的数量,xj表示第j个任务被分配到xj处理器核上执行。
本发明采用的编码方案具有四个特点:
(1)编码方式简单清晰,易于理解与实现;
(2)满足任务调度问题的要求;
(3)包含所有可能的任务调度方案;
(4)实现烟花或火花的位置向量与任务调度序列的唯一映射。
则本发明实现的cmp任务调度方法的位移操作为:xj=xj+rand(0,ri)
其中xj表示第j个线程被分配到xj处理器核上执行,rand(1,ri)表示在1到ri之间随机取整数值,ri是烟花i的爆炸半径。
本发明实现的cmp任务调度方法的映射规则为:xj=1+xj%(n-1),其中xj表示第j个线程被分配到xj处理器核上执行,n表示处理器核数量。
本发明实现的cmp任务调度方法的排斥操作方法为:xj=xj+δs,其中xj表示第j个线程被分配到xj处理器核上执行,δs是排斥算子。
实例一:
根据本发明所述的编码方式,实例一的一种可能的调度方案为:x=[1,2,3,1],如附图2所示,结合实例一的计算开销矩阵可计算出该调度序列的全部任务执行完成时间为33。
实例一经过本发明所述的cmp任务调度方法循环迭代后得到的唯一最优调度序列可能为x=[3,1,1,2],根据实例一的计算开销矩阵可得该调度序列的全部线程执行完成时间为10,比图2所示的调度序列执行完全部线程所用时间减少23个单位。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。