基于LPT局部优化的结构化网格负载平衡方法技术

技术编号:21377829 阅读:30 留言:0更新日期:2019-06-15 13:26
本发明专利技术公开了一种基于LPT局部优化的结构化网格负载平衡方法,目的是解决现有负载平衡方法的缺点,提高负载平衡率和计算速度。技术方案是总体基于遗传算法,包括参数配置、初始化种群、适应度计算、采用LPT方法对每条染色体中片段值最大的LPTSize/2个染色体片段和最小的LPTSize/2个染色体片段进行局部优化、条件判断、更新判断、种群更新、选择算子、交叉算子、变异算子、输出最好的负载平衡模式共十一步。本发明专利技术对每条染色体中染色体片段值最大和最小的若干染色体片段进行了局部优化,提升了整个染色体的适应度,且由于进行了种群更新,使得种群不容易早熟导致程序过早终止,而能得到全局较优解,使得整个结构化网格并行计算负载平衡率得以提升。

【技术实现步骤摘要】
基于LPT局部优化的结构化网格负载平衡方法
本专利技术涉及提高结构化网格并行计算时的负载平衡方法,尤指基于遗传算法和LPT(LargestProcessingTime,最大处理时间)局部优化的并行负载平衡方法。
技术介绍
计算已经与理论和实验相并列成为人类认识世界三种主要研究手段,主要用来解决不可能进行实验的问题或者进行实验代价太大的问题。近几十年以来,随着对物理规律认识的深入和工程应用的需要,工程计算已发展成为一门专门学科,在航空航天、汽车、环境工程、材料、物理学和船舶等方面得到广泛应用。工程计算过程主要是对网格上的特征量进行迭代计算,网格数目与计算量直接相关。当网格数目多时整个计算量非常大,往往需要在高性能计算机进行大规模并行计算。良好的负载平衡是达到高并行效率的基础。结构化网格工程常用的并行计算技术一般基于分区并行,分区并行的数学基础是区域分解算法。区域分解算法将问题的求解区域划分成多个子区域,这些子区域相互包含相邻区域的拟边界信息,相互迭代共同求解同一问题。并行计算与区域分解算法相结合,将各个网格块分配给多个处理器核完成,迭代过程中一般采用MPI(MessagePassingInterface)消息传递接口在不同处理器核之间进行通信。由于分区并行的网格块一般比较大,计算通信比高,影响并行效率的决定性因素是负载平衡。由于数值离散迭代求解的特点,一次迭代的计算量与网格量成正比。实际工程设计中外形各异,根据计算模型几何上的特性进行分区,整个网格会事先分割成大小不同的很多个网格块。负载平衡的核心思想是把全部网格块映射到各个进程上,在进程数确定的情况下尽可能使总计算时间少。结构化网格并行计算时,可以近似认为迭代求解过程中的计算量正比于网格量。在高性能计算机系统进行并行计算时,实际应用中一般采用同构系统,即各个计算节点/核的计算能力是一样的。各个进程的每次迭代的计算时间由其所负责的网格数目总和决定是合理的。在不考虑通信的前提下,结构化网格并行计算时间由网格数目总和最大的进程决定。结构化网格工程并行计算负载平衡主要可以分成不带剖分和带剖分两种方式。带剖分方法指通过在其他方法的基础上,对生成的网格块进行进一步剖分来达到负载平衡。带剖分方法存在三个缺点:(1)过细的分块会导致额外的通讯开销大量增加而降低并行计算效率。(2)过多的子区域(分块)会增加迭代求解次数,影响计算效率,这是由区域分解算法本身的特性决定的。(3)工程计算不仅是一门科学,也是一门艺术,不但与数值计算方法相关,也与网格相关,不适当的分块有可能导致计算发散。不带剖分方法指网格分块确定的情况下,采用确定性或者智能优化算法来达到负载平衡。不带剖分方法能够避免带剖分方法存在的缺点,但是有时候会存在负载平衡率低和计算效率低的缺点。对于结构化网格并行计算不带剖分方法的负载平衡算法研究主要集中在以下三个方面:(1)确定性方法,主要指基于组合优化排和排序理论设计了LPT(LargestProcessingTime)近似负载平衡算法。(2)智能优化算法,主要指基于全局优化的遗传算法等算法设计的智能优化负载平衡算法。(3)混合算法,主要指结合确定性方法和智能优化算法的负载平衡算法,包括二步。第一步使用确定性方法得到初步解,第二步在此基础上使用智能优化算法力图得到负载平衡率更高的网格块分配方法。基于遗传算法的结构化网格负载平衡方法是智能优化算法的一种。结构化网格并行负载平衡问题模型可以定义如下:结构化网格包含若干个网格块,每个网格块包含一定数目的网格。网格块集合E={E1,...,En,...EN},E中有N个元素,第n个元素为网格数目为En的网格块,1≤n≤N且N为正整数。En为正整数,表示网格数目为En的第n个网格块。网格数目越多,计算量越大,计算时间越长。网格块用一个正整数来表示,这个正整数表示该网格块中的网格数目。如E={200,500,1234,200,1008,4000}表示一个包含6个网格块的网格块集合,这6个网格块的网格数目分别为200、500、1234、200、1008、4000。进程集合为P={P1,...,Pm,...,PM},P中有M个进程,1≤m≤M且M为正整数。Pm表示第m个进程,每个进程处理若干个网格块的计算任务。设Pm要处理G(0≤G≤N)个网格块的计算任务,Pm={Ei1,Ei2,…,EiG},Ei1,Ei2,…,Eim,…,EiG均∈E,且Pi∩Pj=Φ,i≠j,且1≤i,j≤M,P1∪P2∪…∪PM=E。表示P中的每个进程处理不同的网格块,且M个进程应处理完集合E。|Pm|表示进程Pm处理的网格数目总和,|Pm|=Ei1+Ei2+…+Eim+…+EiG,即把进程中所处理的网格块的网格数目相加得到。平均负载表示绝对平均情况下每个进程处理的网格数。组合优化排序理论中的LPT(LargestProcessingTime)近似算法用于负载平衡问题设计算法如下:(1)将N块网格按网格数量不增,则得到链表(A1,...,Ai,...,AN),其中1<=i<=N。(2)由n=1开始,将第n个网格划分给当前网格总数为Bj最小的进程,更新其网格总数。若存在多个相同最小总数的数组,则任意分配给某个进程即可。依次处理直到所有网格块被分配完毕。LPT属于确定性贪婪算法的一种,唐逸豪等设计并实现了基于LPT近似算法的CFD并行计算网格分配算法,但是目前没有将LPT与遗传算法相结合的负载平衡方法。遗传算法是一种模拟自然界优胜劣汰的进化算法,具有较高的全局搜索能力。结构化网格并行负载平衡中的遗传算法中染色体采用二级编码。基因定义为E中一个网格块。基因值为该网格块的网格数目,为正整数,为E1到EN中的一个值。所以共有N个基因。染色体片段定义为P中单个进程处理的所有网格块的集合,所以共有M个染色体片段。染色体片段值定义为染色体片段中对应基因代表的网格块的网格数目之和,为非负整数。如染色体片段{E1,E2,E3}的染色体片段值为E1+E2+E3。染色体定义为染色体片段的集合,每一条染色体代表一种负载平衡分配方案,即为网格块分配到进程的一种分配方案。每一条染色体包含M个染色体片段,每个染色体片段包含若干个网格块(基因)。染色体片段的长度即为所包含的基因的个数。如10个网格块{E1,E2,…,E10}、3个进程,进程序号为第1、第2、第3,一条染色体可以表示为{{E1,E2,E3},{E4,E5,E6,E7},{E8,E9,E10}},就表示一种负载平衡模式。{E1,E2,E3}为一个染色体片段,长度为3。E1,E2,…,E10为基因。1-3个网格块分配给第1个进程,4-7个网格块分配给第2个进程,8-10个网格块分配给第3个进程。种群定义为染色体的集合,即一个种群包含正整数条染色体。种群大小popNum为种群中染色体的数目。种群大小popNum为种群中染色体的数目,表示有popNum个负载平衡策略。一个染色体中有N个基因,M个染色体片段,表示有N个网格块,M个进程。一个染色体代表一个把N个网格块分配给M个进程的策略。适应度函数F定义如下:F=1/max{|P1|,...,|Pm|,...,|PM|}(1)max{|P1|,...,|Pm|,本文档来自技高网...

【技术保护点】
1.一种基于LPT局部优化的结构化网格负载平衡方法,其特征在于包括以下步骤:第一步,参数配置:1.1 从配置文件获得输入文件位置、种群大小popNum、最大迭代次数IteMax、平衡率阀值ε、交叉概率Pcross、变异概率Pvari、最大重复次数SameMax、处理的染色体片段的个数LPTSize;LPT为最大处理时间;1.2 令最优适应度值重复次数nSame=0,令旧最优适应度值

【技术特征摘要】
1.一种基于LPT局部优化的结构化网格负载平衡方法,其特征在于包括以下步骤:第一步,参数配置:1.1从配置文件获得输入文件位置、种群大小popNum、最大迭代次数IteMax、平衡率阀值ε、交叉概率Pcross、变异概率Pvari、最大重复次数SameMax、处理的染色体片段的个数LPTSize;LPT为最大处理时间;1.2令最优适应度值重复次数nSame=0,令旧最优适应度值第二步,初始化种群:2.1从输入文件中读取所有网格块,把所有网格块随机分配到M个进程,一个网格块对应一个基因,网格块中网格数目为基因的值;生成含popNum条染色体的种群PopA,PopA={R1,..,Rn...,RpopNum},popNum为PopA中染色体条数,1≤n≤popNum且n为正整数,Rn表示第n条染色体,所有染色体均有M个染色体片段,对应M个进程;2.2令迭代次数变量iteNum=0;第三步,适应度计算:3.1根据式(1)对PopA中的R1,..,Rn...,RpopNum分别进行适应度计算,得到popNum个适应度值,表示为F1,...,Fn,...FpopNum;适应度函数F定义如下:F=1/max{|P1|,...,|Pm|,...,|PM|}(1)max{|P1|,...,|Pm|,...,|PM|}表示对|P1|,...,|Pm|,...,|PM|取最大值;进程集合为P={P1,...,Pm,...,PM},P中有M个进程,1≤m≤M且M为正整数,Pm表示第m个进程;|Pm|表示进程Pm处理的网格数目总和,|Pm|=Ei1+Ei2+…+Eim+…+EiG,即把进程中所处理的网格块的网格数目相加得到;G为Pm要处理的网格块的个数,0≤G≤N,Pm={Ei1,Ei2,…,EiG},Ei1,Ei2,…,Eim,…,EiG均∈E;E为网格块集合,E={E1,...,En,...EN},E中有N个元素,第n个元素为网格数目为En的网格块,1≤n≤N且N为正整数;En为正整数,表示网格数目为En的第n个网格块;3.2找出F1,...,Fn,...FpopNum中的最大值,表示为全局最优染色体的适应度值Fopt,并将Fopt对应的全局最优染色体记录为bestPop;3.3iteNum=iteNum+1;第四步,LPT局部优化。采用LPT方法对每条染色体中片段值最大的LPTSize/2个染色体片段和最小的LPTSize/2个染色体片段进行局部优化,得到适应度更好的染色体:4.1令n=1;4.2对种群PopA中第n条染色体中的M个染色体片段中的基因进行累加,得到M个染色体片段值sum1,sum2,…,sumM-1,sumM;4.3根据sum1,sum2,…,sumM-1,sumM,找出第n条染色体中染色体片段值最大的LPTSize/2个染色体片段,记为SegA1、SegA2、…、SegALPTSize/2,再找出染色体片段值最小的LPTSize/2个染色体片段,记为SegB1、SegB2、…、SegBLPTSize/2;4.3将SegA1、SegA2、…、SegALPTSize/2、SegB1、SegB2、…、SegBLPTSize/2中的基因组合成基因集合X,假设X中有H基因,将X中H个基因从大到小依次排列得到链表(F1,F2,…,Fh,…,FH),1≤h≤H;4.4建立LPTSIZE个空集合V1,V2,…,VLPTSize,建立大小为LPTSIZE的整型数组[D1,D2,…,Dk,…,DLPTSize],D1,D2,…,Dk,…,DLPTSize均赋初值0,1≤k≤LPTSize;4.5令s=1;4.6找到数组[D1,D2,…,DLPTSize]中的最小值,假设为Dk,k表示第k个,执行如下操作:4.6.1Dk=Dk+SegAs;4.6.2将Fs插入到Vk中;4.7s=s+1;4.8若s≤LPTSize,转第4.6步,否则执行4.9步;4.9将V1,V2,…,VLPTSize中基因分别赋予SegA1、SegA2、…、SegALPTSize/2、SegB1、SegB2、…、SegBLPTSize/2,更新LPTSIZE个染色体片段,得到新的染色体;4.10令n=n+1;4.11若n≤N,转4.2步;否则执行第五步;第五步,条件判断:5.1若iteNum大于IteMax,转第十一步;若iteNum小于等于IteMax,iteNum=iteNum+1,执行5.2;5.2若Fopt满足式(2)的条件,转第十一步;若Fopt不满足式(2)的条件,执行5.3;abs(κ-1/Fopt)/κ<ε(2)其中abs(κ-1/Fopt)表示对κ-1/Fopt取绝对值;5.3若Fopt满足式(3)的条件,式(3)表示Fopt的倒数等于最大基因,转第十一步;若Fopt不满足式(3)的条件,转第六步;1/Fopt=max{E1,E2,…,EN}(3)第六步,更新判断,方法是:6.1若令nSame=0;否则令nSame=nSame+1;6.2若nSame>SameMax,令nSame=0,转第七步;否则转第八步;第七步,种群更新,方法是:7.1从输入文件...

【专利技术属性】
技术研发人员:龚春叶刘杰杨博甘新标李胜国徐海坤李润华穆利安吕书邻穆雨桐
申请(专利权)人:中国人民解放军国防科技大学
类型:发明
国别省市:湖南,43

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1