[发明专利]均衡非结构网格单元计算量的并行负载均衡方法有效

专利信息
申请号: 201910853409.0 申请日: 2019-09-10
公开(公告)号: CN110633149B 公开(公告)日: 2021-06-04
发明(设计)人: 熊敏;徐传福;刘雍;高翔;李大力;车永刚;吴诚堃;郭晓威;张翔;李超;蓝龙;王思齐;王正华 申请(专利权)人: 中国人民解放军国防科技大学
主分类号: G06F9/50 分类号: G06F9/50
代理公司: 长沙中科启明知识产权代理事务所(普通合伙) 43226 代理人: 任合明
地址: 410003 湖*** 国省代码: 湖南;43
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 均衡 结构 网格 单元 计算 并行 负载 方法
【权利要求书】:

1.一种均衡非结构网格单元计算量的并行负载均衡方法,其特征在于包括以下步骤:

第一步,生成二维非结构网格,方法是:

1.1将非结构网格工程应用需要计算的二维空间进行网格化处理,生成非结构网格并输出二维非结构网格相关文件;二维非结构网格相关文件包括网格单元文件、网格点文件、网格边文件、网格单元的邻接单元文件、网格点的邻接单元文件、网格边的邻接单元文件;

1.2根据非结构网格相关文件初始化相关数据结构,方法是:

1.2.1令网格单元文件为网格单元数组cs,其中Nc为网格单元总数,Ckc为第kc个网格单元;网格单元采用网格点编号数组表示,Ckc={kp1,...,kpw,...,kpW}表示第kc个网格单元由第kp1,...,kpw,...,kpW个网格点构成,是一个W边形网格单元,W为正整数,1≤w≤W;

1.2.2令网格点文件为网格点数组pts,其中Npt为网格点总数,Ptkp为第kp个网格点;网格点采用笛卡尔坐标数组表示,Ptkp=(x,y)表示第kp个网格点的坐标为(x,y),x,y为实数;

1.2.3令网格单元的邻接单元文件为数组cCells,其中CCkc表示网格单元Ckc的邻接网格单元编号组成的数组;

1.2.4令网格点的邻接单元文件为数组pCells,其中PCkp表示网格点Ptkp的邻接网格单元编号组成的数组;

第二步,使用非结构网格结构化处理方法对非结构网格相关文件进行局部化,生成非结构网格局部方向数组和关键元素数组,方法是:

2.1根据非结构网格相关数据结构,定义并初始化非结构网格单元的关键元素数组和非结构网格局部方向数组,方法是:

2.1.1定义关键元素数组其中Elkc为Ckc的关键元素编号组成的数组;三角形网格单元的关键元素为3条网格边和1个网格点,四边形网格单元的关键元素为4条网格边,初始化均为{0,0,0,0};

2.1.2根据keyEl定义非结构网格局部方向数组locDir,其中LDkc表示网格单元Ckc的局部方向向量组成的数组,LDkc包含4个数据项,分别表示Ckc的4个局部方向向量,由Elkc确定:

LDkc[1]为Elkc[3]边中点指向Elkc[1]边中点构成的向量;

若Ckc为四边形,LDkc[2]为Elkc[4]边中点指向Elkc[2]边中点构成的向量;若Ckc为三角形,LDkc[2]为Elkc[4]网格点指向Elkc[2]边中点构成的向量;

LDkc[3]为Elkc[1]边中点指向Elkc[3]边中点构成的向量;

若Ckc为四边形,LDkc[4]为Elkc[2]边中点指向Elkc[4]边中点构成的向量;若Ckc为三角形,LDkc[4]为Elkc[2]边中点指向Elkc[4]网格点构成的向量;

将的每一项都初始化为零向量;

2.2采用阵面推进确定非结构网格的关键元素和局部方向,即进行非结构网格结构化处理,方法是:

2.2.1定义并初始化阵面推进相关数据结构,方法是:

2.2.1.1定义并初始化阵面数组fronts,fronts为动态数组,数据项个数记为Nf,每一项表示已进行访问的网格点的编号;fronts初始化为位于壁面边界即物体表面的网格点的编号数组,Nf初始化为位于壁面边界的网格点的总数;

2.2.1.2定义并初始化下一阵面数组nextFronts,nextFronts为动态数组,表示需要加入fronts的网格点的编号,nextFronts的数据项个数记为Nnf;nextFronts初始化为空集,Nnf初始化为0;

2.2.1.3初始化阵面层数组frontsLevel,其中Flkp表示网格点Ptkp的阵面层值;若kp在数组fronts中,初始化Flkp=0,否则令Flkp=-1;

2.2.1.4定义阵面层变量n,表示frontsLevel中所有数据项的最大值,n初始化为0;

2.2.1.5初始化fronts的三个索引:令头索引head=0、令尾索引tail=Nf、令最终尾索引finalTail=Nf

2.2.2以head为fronts索引,获取网格点的编号front[head],记front[head]=j,1≤j≤Npt

2.2.3以j为网格点的邻接单元数组pCells的索引,获取所有与网格点Ptj相邻的网格单元编号组成的数组PCj,记PCj的数据项总数为PCnum;

2.2.4初始化网格单元索引i=1;

2.2.5以i为PCj的索引,获取第i个与Ptj相邻的网格单元编号PCj[i],令o=PCj[i],1≤o≤Nc;若Elo[1]=0,则Co的关键元素和局部方向还没有确定,转2.2.6;若Elo[1]≠0,转2.2.9;

2.2.6根据网格单元数组cs判断Co的形状,若Co包含三个数据项,说明Co为三角形,转2.2.7;否则Co包含四个数据项,转2.2.8;

2.2.7确定三角形网格单元Co的关键元素,得到Elo,根据Elo计算得到局部向量LDo,并更新nextFronts,转2.2.9;

2.2.8确定四边形网格单元Co的关键元素,得到Elo,根据Elo计算得到局部向量LDo,并更新nextFronts,转2.2.9;

2.2.9令i=i+1,若iPCnum+1,转2.2.5;否则转2.2.10;

2.2.10令head=head+1,若headtail+1,转2.2.2;否则转2.2.11;

2.2.11根据nextFronts更新fronts、frontsLevel、n、tail及finalTail,具体步骤为:

2.2.11.1将nextFronts的数据项加入到fronts中,更新Nf=Nf+Nnf

2.2.11.2更新frontsLevel中数据项Flkp=n+1,其中kp为nextFronts的数据项;

2.2.11.3更新n=n+1;

2.2.11.4更新nextFronts为空集,令Nnf=0;

2.2.11.5更新tail=finalTail=Nf

2.2.12若headfinalTail+1,转2.2.2;否则所有网格单元的关键元素和局部方向都已确定,得到关键元素数组keyEl和局部方向数组locDir,转第三步;

第三步,基于非结构网格局部方向数组,采用递归选择模板的方式进行网格单元之间计算量层面的负载均衡,方法是:

3.1根据第一步生成的非结构网格相关文件初始化网格边数组,令网格边文件为网格边数组eds,其中Ne为网格边总数,Eke为第ke条网格边;网格边采用顶点即网格边两端的网格点编号数组表示,Eke={kp1,kp2}表示第ke条网格边的两个顶点分别为第kp1,kp2个网格点;

3.2根据第一步生成的非结构网格相关文件初始化网格边的邻接单元数组,令网格边的邻接单元文件为数组eCells,其中ECke表示网格边Eke的邻接网格单元数组;

3.3定义并初始化模板单元个数N,N为正整数,表示需要为每个网格单元选择的模板单元个数,也为4个方向的总模板单元个数,N与网格单元的计算量成正比;

3.4定义并初始化模板单元数组stencil,其中Skc是Ckc的模板单元编号组成的数组,Skc有N个数据项;将Skc的每个数据项都初始化为0;

3.5初始化网格单元递归的单元索引kc=1;

3.6以kc为局部方向数组locDir和关键元素数组keyEl的索引,分别获取Ckc的4个局部方向向量:LDkc[1]、LDkc[2]、LDkc[3]、LDkc[4],以及4个局部方向对应的4个关键元素:Elkc[1]、Elkc[2]、Elkc[3]、Elkc[4];

3.7初始化局部方向索引j=1;

3.8若Ckc为三角形网格且j=4,LDkc[j]对应的关键元素Elkc[4]为网格点,转3.9进行按点模板选择;若Ckc不为三角形网格或j≠4,LDkc[j]对应的关键元素Elkc[j]为网格边,转3.10进入按边模板选择;

3.9沿局部方向LDkc[j]进行按点模板选择,具体步骤为:

3.9.1初始化递归次数n=N/4;

3.9.2定义并初始化递归相关参数,对按点选择的递归参数进行初始化:令方向向量参数dirA=LDkc[j],单元参数cellA=kc,点参数poiA=Elkc[j];

3.9.3根据递归相关参数dirA,cellA,poiA以及网格点的邻接单元数组pCells进行模板单元选择,具体步骤如下:

3.9.3.1以poiA为pCells的索引,获取与网格点PtpoiA邻接的单元的编号数组pCells[poiA];

3.9.3.2从数组pCells[poiA]的网格单元中,选出Ckc的模板单元Ctmp,其中tmp是pCells[poiA]的数据项,使得向量与dirA的夹角最小,指以CcellA中心为起点,Ctmp中心为终点的向量;

3.9.3.3根据Ctmp更新模板单元数组stencil,方法是将数组Skc中第一个为0的数据项更新为Ctmp

3.9.4令n=n-1,若n0,转3.9.5;若n≤0,转3.11;

3.9.5根据递归相关参数dirA,cellA,poiA和选出的模板单元Ctmp更新下一次递归的相关参数,并确定下一次递归的模板选择方式,dirA,cellA,poiA更新方法是:

3.9.5.1令cellA=tmp,即将CcellA更新为Ctmp以保证递归沿局部方向LDkc[j]进行;

3.9.5.2若poiA=Eltmp[4],转3.9.5.3;若poiA≠Eltmp[4],转3.9.5.4;

3.9.5.3优先按Ctmp的局部方向更新dirA,并确定下一次递归的模板选择方式,方法是令dirA=LDtmp[2];令边参数edgA=Eltmp[2],转3.10.3;

3.9.5.4按网格拓扑信息更新dirA,并确定下一次递归的模板选择方式:以tmp为网格单元数组cs的索引,获取Ctmp的三个顶点,三个顶点分别为PtpoiA、Ptkp1和Ptkp2,其中1≤kp1≤Npt,1≤kp2≤Npt;从Ptkp1、Ptkp2以及它们构成的网格边Eke的中点midPt这三个点中选出点selPt,使得向量与dirA的夹角最小,是以PtpoiA为起点,以selPt为终点的向量;基于这样的网格拓扑信息,令若selPt=Ptkp1或Ptkp2,则令poiA=kp1或kp2,转3.9.3按点选择;否则selPt=midPt,指向的关键元素为网格边Eke的中点,则初始化新的递归相关参数:令边参数edgA=ke,转3.10.3按边选择;

3.10沿局部方向LDkc[j]进行按边模板选择,方法为:

3.10.1初始化递归次数n=N/4;

3.10.2定义并初始化递归相关参数,对按边选择的递归参数进行初始化:令方向向量参数dirA=LDkc[j],单元参数cellA=kc,边参数edgA=Elkc[j];

3.10.3根据递归相关参数dirA,cellA,edgA以及网格边的邻接单元数组eCells进行模板单元选择,具体方法为:

3.10.3.1以edgA为eCells的索引,获取网格边EedgA的邻接单元数组eCells[edgA];

3.10.3.2根据eCells[edgA]选择按边选择的模板单元:选择Ctmp为本次按边选择的Ckc的模板;

3.10.3.3根据Ctmp更新模板单元数组stencil,方法是将数组Skc中第一个为0的数据项更新为Ctmp

3.10.4令n=n-1,若n0,转3.10.5;若n≤0,转3.11;

3.10.5根据递归相关参数dirA,cellA,poiA和选出的模板单元Ctmp更新下一次递归的相关参数并确定其模板选择方式,dirA,cellA,poiA更新方法如下:

3.10.5.1令cellA=tmp;

3.10.5.2按Ctmp的局部方向更新dirA,并确定下一次递归的模板选择方式:

若edgA=Eltmp[1]则更新dirA=LDtmp[3],更新边参数edgA=Eltmp[3],转3.10.3按边选择;

若edgA=Eltmp[3]则更新dirA=LDtmp[1],更新边参数edgA=Eltmp[1],转3.10.3按边选择;

若edgA=Eltmp[2]则更新dirA=LDtmp[4],点参数poiA=Eltmp[4],转3.9.3按点选择;

3.11令j=j+1,若j4,则Ckc的4个局部方向都已进行模板选择,转3.12;若j≤4,转3.8;

3.12令kc=kc+1,若kcNc,则所有网格单元都已选择N个模板单元,即模板单元数组stencil中每个数据项都已生成完毕,转3.13;若kc≤Nc,转3.6;

3.13将模板单元数组stencil输出到模板单元文件,通过为每个非结构网格单元分配相同个数模板单元的方式,为每个非结构网格单元分配相同的计算量;模板单元数组其中数组Skc中包含N个数据项,即每个网格单元都具有N个模板单元;

第四步,根据处理器信息、模板单元文件、网格相关数据结构以及网格邻接关系数据结构,采用网格剖分方法进行处理器之间网格量层面的负载均衡,生成子网格区域的非结构网格相关文件和子网格区域的模板单元文件,采用子网格区域分配的方式将计算量分配给处理器,方法是:

4.1根据处理器总数及各处理器计算能力,初始化处理器计算能力数组Ps,其中Np为处理器总数,Pi为第i个处理器的计算能力;

4.2根据处理器计算能力数组Ps及Np,Nc,计算各处理器的最优网格量:第i个处理器的最优网格量其中1≤k≤Np且k为整数;

4.3剖分非结构网格:按照Mi将第一步生成的非结构网格剖分成Np个子网格区域,第i个子网格区域的网格量等于最优网格量Mi,其中1≤i≤Np;剖分后生成子网格区域的非结构网格相关文件,剖分后还生成子网格区域的模板单元文件,子网格区域的模板单元文件是第3.13步生成的模板单元文件的子集;子网格区域的模板单元文件中每个网格单元的计算量仍然相等,记为Ncom

4.4采用子网格区域分配的方式将计算量分配给处理器:将第i个子网格区域的网格量及模板单元文件分配给第i个处理器,其中1≤i≤Np,第i个处理器获得Mi个网格单元,即获得的计算量为Ncom·Mi

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科技大学,未经中国人民解放军国防科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201910853409.0/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top