CN116562066B - 一种针对多面体网格的多层区域分解并行计算方法和装置 - Google Patents
一种针对多面体网格的多层区域分解并行计算方法和装置 Download PDFInfo
- Publication number
- CN116562066B CN116562066B CN202310849610.8A CN202310849610A CN116562066B CN 116562066 B CN116562066 B CN 116562066B CN 202310849610 A CN202310849610 A CN 202310849610A CN 116562066 B CN116562066 B CN 116562066B
- Authority
- CN
- China
- Prior art keywords
- grid
- data
- processor
- target
- adjacent
- 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
- 238000000354 decomposition reaction Methods 0.000 title claims abstract description 60
- 238000004364 calculation method Methods 0.000 title claims abstract description 49
- 238000000034 method Methods 0.000 claims abstract description 49
- 238000013507 mapping Methods 0.000 claims abstract description 27
- 238000000547 structure data Methods 0.000 claims description 53
- 230000006870 function Effects 0.000 claims description 29
- 239000000872 buffer Substances 0.000 claims description 12
- 230000001351 cycling effect Effects 0.000 claims description 9
- 238000004590 computer program Methods 0.000 claims description 7
- 210000000746 body region Anatomy 0.000 claims description 3
- 230000006854 communication Effects 0.000 abstract description 25
- 238000004891 communication Methods 0.000 abstract description 24
- 238000004088 simulation Methods 0.000 abstract description 16
- 230000008878 coupling Effects 0.000 abstract description 3
- 238000010168 coupling process Methods 0.000 abstract description 3
- 238000005859 coupling reaction Methods 0.000 abstract description 3
- 238000010276 construction Methods 0.000 abstract 1
- 239000010410 layer Substances 0.000 description 36
- 230000008569 process Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 13
- 238000004422 calculation algorithm Methods 0.000 description 12
- 230000000903 blocking effect Effects 0.000 description 7
- 238000006243 chemical reaction Methods 0.000 description 5
- 238000011161 development Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000008676 import Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 239000002356 single layer Substances 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 239000012530 fluid Substances 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000011166 aliquoting Methods 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 210000001503 joint Anatomy 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012806 monitoring device Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/10—Geometric CAD
- G06F30/15—Vehicle, aircraft or watercraft design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
- G06F30/28—Design optimisation, verification or simulation using fluid dynamics, e.g. using Navier-Stokes equations or computational fluid dynamics [CFD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2111/00—Details relating to CAD techniques
- G06F2111/10—Numerical modelling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2113/00—Details relating to the application field
- G06F2113/08—Fluids
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2113/00—Details relating to the application field
- G06F2113/28—Fuselage, exterior or interior
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2119/00—Details relating to the type or aim of the analysis or the optimisation
- G06F2119/14—Force analysis or force optimisation, e.g. static or dynamic forces
-
- 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)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Geometry (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- Fluid Mechanics (AREA)
- Algebra (AREA)
- Mathematical Physics (AREA)
- Automation & Control Theory (AREA)
- Aviation & Aerospace Engineering (AREA)
- Computational Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种针对多面体网格的多层区域分解并行计算方法和装置,涉及多物理场数值模拟工程应用的技术领域,该方法可生成多层相互重叠的区域分解数据,为物理场数值模拟器提供高层次的分布式并行计算通信数据结构,并且能够有效实现计算通信重叠以及高阶算法的并行计算。本发明通过逐层并行重构的方法,降低了多层区域分解拓扑构造难度以及通信映射关系的复杂度,解决了现有技术存在的数值模拟基础架构与物理场数值模拟器不匹配、计算通信强耦合等问题,提高模拟的精度和计算效率。
Description
技术领域
本发明涉及多物理场数值模拟工程应用的技术领域,尤其是涉及一种针对多面体网格的多层区域分解并行计算方法和装置。
背景技术
随着计算机的快速发展,数值模拟水平得到迅速提高,从安全性、经济性及时效性等方面考虑,许多工程设计问题开始借助数值模拟的手段进行解决。以飞行器设计为例,随着计算机硬件和计算流体力学技术(Computational fluid dynamics,下文简称CFD)的发展,采用CFD数值模拟的手段,即可获得飞行器在一定状态下的流场数值解,进一步得到飞行器的气动特性。全面的气动特性数据可以更好的辅助飞行器设计,CFD显著地提升了飞行器的设计水平和迭代速度。
当前CFD技术主流是基于网格进行仿真计算的,通过区域分解技术将网格分割到多个处理器中进行并行计算,随后合并计算结果获得仿真流动特性。现有的基于非结构网格的区域分解技术,受多种条件的制约通常只进行一层网格的信息交换,即便如此,由于任意网格单元类型的使用,网格的拓扑上产生一对多或多对一的对接关系,导致跨处理器通信交换变得异常复杂,单层的网格信息交换过程也并不完善。更进一步,对于许多高级别的算法,单层邻接关系是不足的,将导致数值求解器发生额外的全局规约或算法降级,这种数值模拟基础架构与数值求解器之间的不匹配制约了算法的应用和转化。
发明内容
本发明的目的在于提供一种针对多面体网格的多层区域分解并行计算方法和装置,以缓解现有技术中区域分解边界信息层级不足、计算与通信耦合、跨处理器通信交换异常复杂的技术问题。
第一方面,本发明提供了一种针对多面体网格的多层区域分解并行计算方法,包括:
从每个处理器导入的网格结构数据中,确定目标处理器对应的目标网格结构数据,并将所述目标网格结构数据归集于所述目标处理器;其中,所述网格结构数据包括网格点坐标数据、网格面拓扑数据和网格体单元与处理器的映射关系;所述网格面拓扑数据包括网格面-网格体单元邻接关系和网格面-网格点邻接关系;所述目标网格结构数据为存储于所述目标处理器,但与其他处理器存在映射关系的网格结构数据;
基于所述网格面-网格体单元邻接关系,确定多面体网格中跨处理器区域分解的人工边界,并存储于数据向量中;
根据所述人工边界对应的网格面信息,确定每个处理器的待归并数据容器表和待发送邻接指针表,并对所述目标处理器的网格结构进行更新,直至到达目标层级的网格重叠区域分解;
基于所述目标层级的网格重叠区域分解对应的待归并数据容器表和待发送邻接指针表,确定用于多面体网格结构逐层交换的函数调用接口,并根据所述函数调用接口进行并行计算。
结合第一方面,本发明提供了第一方面的第一种可能的实施方式,其中,从每个处理器导入的网格结构数据中,确定目标处理器对应的目标网格结构数据,并将所述目标网格结构数据归集于所述目标处理器的步骤,包括:
初始化并行计算环境,对网格面进行线性等分和二次剖分,将每个处理器导入相应的网格点坐标数据、网格面拓扑数据和网格体单元与处理器的映射关系;
从每个处理器导入的网格点坐标数据、网格面拓扑数据和网格体单元与处理器的映射关系中,确定当前处理器对应的目标网格结构数据,并将所述目标网格结构数据归集于所述当前处理器。
结合第一方面,本发明提供了第一方面的第二种可能的实施方式,其中,基于所述网格面-网格体单元邻接关系,确定多面体网格中跨处理器区域分解的人工边界,并存储于数据向量中的步骤,包括:
基于每个网格体所存在于的处理器,确定每个网格体区域的边界类型;其中,所述边界类型包括实际边界及所述网格体跨处理器区域分解导致的人工边界;
根据所述边界类型,将所述网格面-网格体单元邻接关系转换成携带处理器编号的数据关系,并将所述数据关系存储于数据向量中。
结合第一方面,本发明提供了第一方面的第三种可能的实施方式,其中,根据所述人工边界对应的网格面信息,确定每个处理器的待归并数据容器表和待发送邻接指针表,并对所述目标处理器的网格结构进行更新,直至到达目标层级的网格重叠区域分解的步骤,包括:
重复执行以下步骤,直至所述目标处理器更新后的网格结构,到达目标层级的网格重叠区域分解:
根据所述人工边界对应的网格面信息,形成数据交换界面并存储于待发送邻接指针表中;其中,所述数据交换界面包括与所述人工边界对应的网格面邻接的网格体单元以及体单元关联的所有子单元数据;
将每个处理器存储的所述待发送邻接指针表发送至其他处理器,并将接收的信息存储于待归并数据容器表;
基于所述待归并数据容器表和所述待发送邻接指针表更新每个所述处理器的网格结构数据,确定每个处理器对应的网格重叠区域分解。
结合第一方面,本发明提供了第一方面的第四种可能的实施方式,其中,基于所述目标层级的网格重叠区域分解对应的待归并数据容器表和待发送邻接指针表,确定用于多面体网格结构逐层交换的函数调用接口,并根据所述函数调用接口进行并行计算的步骤,包括:
基于当前层级的网格重叠区域分解对应的发送邻接指针表和待归并数据容器表,分别确定所述当前层级对应的缓冲区域和所述目标处理器的网格结构之间的对应关系;
若所述当前层级未达到目标层级,则将所述当前层级的下一层级作为新的当前层级,并循环执行上述步骤;
若所述当前层级达到目标层级,则构建回调函数对多面体网格结构的数据进行并行计算。
结合第一方面,本发明提供了第一方面的第五种可能的实施方式,其中,基于每个网格体所存在于的处理器,确定每个网格体区域的边界类型的步骤,包括:
基于所述网格面-网格体单元邻接关系,判断每个网格体是否存在于当前处理器中;
若当前网格面的相邻网格体标记为全局不存在,则所述当前网格面位于计算区域边界处;
若当前网格面的相邻网格体存在于当前处理器的全局编号中,则所述当前网格面的相邻网格体存在于当前处理器中;
若当前网格面的相邻网格体不存在于当前处理器的全局编号中,则所述当前网格面的相邻网格体存在于其他处理器中。
结合第一方面,本发明提供了第一方面的第六种可能的实施方式,其中,基于所述待归并数据容器表和所述待发送邻接指针表更新每个所述处理器的网格结构数据的步骤,包括:
对所述待归并数据容器表中的网格点进行循环,判断所述网格点是否存在于当前处理器中;若存在,则获取所述网格点对应的网格点元素地址;若不存在,则将所述网格点插入当地数据列表中;
遍历所述待归并数据容器表中的网格面和网格体,分别判断所述网格面或所述网格体是否存在于当地数据列表中;若存在,则获取所述网格面或所述网格体对应的网格面元素地址;若不存在,则将所述网格面或所述网格体插入当地数据列表中;
遍历新插入当地数据列表中的网格体,提取与所述网格体相关联的网格面,根据当前处理器的局部编号更新所述网格面对应的网格面-网格体单元邻接关系;
基于更新后的网格面-网格体单元邻接关系确定所述网格面的邻接网格体的分类。
第二方面,本发明还提供一种针对多面体网格的多层区域分解并行计算装置,包括:
第一确定模块,从每个处理器导入的网格结构数据中,确定目标处理器对应的目标网格结构数据,并将所述目标网格结构数据归集于所述目标处理器;其中,所述网格结构数据包括网格点坐标数据、网格面拓扑数据和网格体单元与处理器的映射关系;所述网格面拓扑数据包括网格面-网格体单元邻接关系和网格面-网格点邻接关系;所述目标网格结构数据为存储于所述目标处理器,但与其他处理器存在映射关系的网格结构数据;
第二确定模块,基于所述网格面-网格体单元邻接关系,确定多面体网格中跨处理器区域分解的人工边界,并存储于数据向量中;
更新模块,根据所述人工边界对应的网格面信息,确定每个处理器的待归并数据容器表和待发送邻接指针表,并对所述目标处理器的网格结构进行更新,直至到达目标层级的网格重叠区域分解;
计算模块,基于所述目标层级的网格重叠区域分解对应的待归并数据容器表和待发送邻接指针表,确定用于多面体网格结构逐层交换的函数调用接口,并根据所述函数调用接口进行并行计算。
第三方面,本发明提供一种电子设备,包括存储器、处理器,所述存储器中存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现前述实施方式任一项所述的方法的步骤。
第四方面,本发明提供一种机器可读存储介质,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,机器可执行指令促使处理器实现前述实施方式任一项所述的方法的步骤。
本发明带来了一种针对多面体网格的多层区域分解并行计算方法和装置,本发明与现有技术相比至少具有以下有益效果:
1 .通过本方法可将区域分解的单层边界网格扩展至多层重叠边界,满足各种算法对单元邻接关系的需求。本方法采用了分布式多面体网格多层区域分解拓扑结构的并行构造,有效促进了数值模拟基础架构与求解器的契合,提升了求解器复杂算法的移植成功率。
2 .在多面体网格多层区域分解转化过程中,通过数据交换界面元素分解机制及逐层推进机制,避免了大量、复杂的通信动态映射处理,有效提高了复杂通信的完成性与正确性。
3 .在多层区域分解的基础上,本方法的自动异步通信机制解耦通信与计算过程,通过通用接口实现计算与通信的重叠,解耦物理场数值模拟求解器。这些因素使多面体网格的并行计算效率充分满足了数值模拟器在超大规模网格上的应用需求。
本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书以及附图中所特别指出的结构来实现和获得。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为是本发明所述的针对多面体网格的多层区域分解并行计算方法的步骤示意图;
图2为本发明的输入接口对应的二维多面体网格计算区域示意图;
图3为本发明所对应的图剖分无重叠区域分解及人工边界示意图;
图4为本发明所对应的待发送邻接指针表C(ilevel)示意图;
图5为本发明所对应的归并后网格R(ilevel)示意图;
图6为本发明所对应的待发送邻接指针表C(ilevel+1)示意图;
图7为本发明所对应的归并后网格R(ilevel+1)示意图;
图8为本发明提供的一种针对多面体网格的多层区域分解并行计算装置的功能模块示意图;
图9为本发明提供的电子设备的硬件架构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
目前通过CFD数值模拟的方式,能够获得飞行器在一定状态下的流场数值解,进一步得到飞行器的气动特性;其中,CFD具体可分为前处理,流场计算及后处理过程。前处理输入所要研究的物体几何外形,选定包含所要研究物体的待计算流动区域。对计算区域进行网格离散,即将计算区域离散成一个个的连通任意网格单元,并给出边界条件、初始条件和流动条件。流场计算步骤是在离散的网格上,使用数值算法求解离散方程,获得网格上的物理量。后处理主要对物理量进行处理,得到所关心的计算结果。CFD的发展经历了逐步求解更复杂的方程、使用更大规模的网格,以及使用更复杂的物理模型等阶段。CFD中网格的大小可以反映求解问题的规模,随着计算机的发展,网格规模是逐年扩大的。网格规模的扩大反映了工程应用领域对模拟精细化无止境的需求,同时也对处理大规模问题的并行计算方法及系统提出了更高的要求。大规模的网格意味着需要分布式并行计算系统的支持,事实上CFD的并行高性能计算是其发展最快的领域之一。
例如,2012年第五届阻力预测会议(Drag Prediction Workshop V,简称DPW V)组委会提供的(CommonResearchModel,简称CRM)通用翼身组合体构型的典型网格规模为570万,2016年DPW VI组委会提供的CRM翼身组合体构型典型网格规模为2470万,但同时2016年报道的模拟CRM翼身组合体构型的最大的网格规模为124亿,并行计算规模约为6000核。
实际工程应用中,CFD的并行计算过程通常需要对计算网格进行区域分解求解,即对网格进行二次分组,同组的网格块被分布映射到某计算核心进行数值求解。由于区域被人为分割,在分解的边界处需通过信息交换来获得相邻区域的更新解,并通过不断的“计算迭代-信息交换”过程,逐步获得整个计算域的物理解。这个过程通常使用消息传递接口(MessagePassingInterface,MPI)技术进行大量数据的计算通信,计算功能和通信相互影响和制约,在系统层面表现为物理场数值模拟求解器与并行通信处理相互交织嵌入。
实际应用过程中,上述多层区域分解并行计算易出现区域分解边界信息层级不足、计算与通信耦合、跨处理器通信交换异常复杂的技术问题。
此外,在现有的求解体系中,计算和通信往往紧密耦合在一起,每个并行数值算法均需要同时考虑通信和计算的交互过程,算法开发难度增大。随着并行规模的扩大,通信越来越成为昂贵的操作,需要更多的通信和计算重叠过程,获得高线性的并行扩展性。
基于此,本发明实施例提供的一种针对多面体网格的多层区域分解并行计算、装置、电子设备和计算机可读存储介质,可应用于CFD应用领域中,能够提高模拟的精度和计算效率,降低软件研发的难度。
为便于对本实施例进行理解,首先对本发明实施例所公开的一种针对多面体网格的多层区域分解并行计算方法进行详细介绍,该方法可应用于服务器、上位机等智能控制设备中。
图1为本发明实施例提供的一种针对多面体网格的多层区域分解并行计算方法流程示意图。
参照图1所示,该方法主要包括以下步骤:
步骤S110,从每个处理器导入的网格结构数据中,确定目标处理器对应的目标网格结构数据,并将目标网格结构数据归集于目标处理器。
其中,网格结构数据包括网格点坐标数据、网格面拓扑数据和网格体单元与处理器的映射关系;网格面拓扑数据包括网格面-网格体单元邻接关系和网格面-网格点邻接关系;目标网格结构数据为存储于目标处理器,但与其他处理器存在映射关系的网格结构数据。
该步骤S110在实际应用中,可理解为初始化后可用于并行计算的消息传递接口MPI环境,各处理器导入分布式多面体非结构网格数据,使用启发式图剖分程序进行网格区域分解剖分,移动剖分后的坐标以及拓扑信息数据到目标处理器。图2展示了一个二维的多面体非结构网格计算区域Ω的示意图。多面体网格的构成元素由网格体(图2中所示的多边形),网格面(图2中所示的边),网格点(图2中所有的交点)及其坐标等构成。图3为该二维多面体网格计算域的区域分解简图,其中的虚线为区域分解的处理器界面,它们分割了计算域,并且各计算域之间没有网格体元素的重叠。
示例性地,先初始化并行计算环境,对网格面进行线性等分和二次剖分,将每个处理器导入相应的网格点坐标数据、网格面拓扑数据和网格体单元与处理器的映射关系;再从每个处理器导入的网格点坐标数据、网格面拓扑数据和网格体单元与处理器的映射关系中,确定当前处理器对应的目标网格结构数据,并将目标网格结构数据归集于当前处理器。
进一步地,步骤S110的具体操作步骤还可以分解为:
S101:对网格点进行线性等分,各处理器依次导入等分后的网格点坐标数据。具体的算法是先计算网格点的平均数average_vertexes = total_vertexes(网格点总数)/N_PE(处理器数)并取整,每个处理器读入average_vertexes数量的网格点,剩余的网格点last_vertexes数量为last_vertexes=total_vertexes -average_vertexes*N_PE,由最后一个处理器全部读入,存储于向量容器vertexContainer中;
S102:对网格面进行线性等分,各处理器依次导入等分后的网格面-网格体单元邻接关系,网格面-网格点邻接关系;具体来说,等分方法与步骤S101类似;网格面-网格体单元邻接关系由网格面的左网格体单元face_owner[fi],右网格体单元face_neighbour[fi]构成;网格面-网格点邻接关系表示网格面包括了哪些网格点,表示为网格面-网格点信息face_to_vertex[fi][cj](fi为网格面单元全局编号,cj为网格点全局序号)。
S103:利用图剖分算法进行网格的二次剖分,获得网格体单元-处理器的映射关系;具体来说,本例使用了K路递归图剖分算法,获得了数据结构cell_rank[ci],表示第ci个网格体单元归属于哪个处理器(PE);
S104:归集当地处理器中存储的但被映射到其他处理器的所有网格点坐标及编号、网格面-网格体单元拓扑信息、网格面-网格点拓扑信息等,使用邻接指针表示这些关系,并存储于通信关系列表中;
S105:使用非阻塞通信发送接收数据,将属于当地处理器的所有网格信息收集到本地数据结构中,通信所使用的消息传递接口MPI函数汇总如下表1所示:
表1
步骤S120,基于网格面-网格体单元邻接关系,确定多面体网格中跨处理器区域分解的人工边界,并存储于数据向量中。
在一些实施例中,各处理器重构单元的当地邻接关系,确定区域的实际边界及区域分解导致的人工边界,对跨处理器区域分解人工边界处的几何信息进行规约处理,并存储于相应的数据向量MPI_INTERFACE中。图3所示的虚线界面是区域分解的人工数据交换界面,它们由于人工的区域分解切割,使得面的一侧网格体被分割到其他处理器中,形成了分割面。图3中的f1,f2,f3,f4为处理器1、处理器2之间的数据交换界面。图3中的f5,f6,f7,f8,f9,f10为处理器0、处理器1之间的数据交换界面。这些面在逻辑上为同一个网格面,但在实际处理中被分布到不同的处理器,进行数据共享,不同处理器之间通过这些面作为媒介进行数据的交换。
示例性地,该步骤S120可细化为,基于网格面-网格体单元邻接关系,判断每个网格体是否存在于当前处理器中;若当前网格面的相邻网格体标记为全局不存在,则当前网格面位于计算区域边界处;若当前网格面的相邻网格体存在于当前处理器的全局编号中,则当前网格面的相邻网格体存在于当前处理器中;若当前网格面的相邻网格体不存在于当前处理器的全局编号中,则当前网格面的相邻网格体存在于其他处理器中,即确定每个网格体区域的边界类型;其中,边界类型包括实际边界及网格体跨处理器区域分解导致的人工边界;再根据边界类型,将网格面-网格体单元邻接关系转换成携带处理器编号的数据关系,并将数据关系存储于数据向量中。
需要说明的是,上述步骤S102还可通过如下步骤实现:
S201:将face_owner,face_neighbour构成的网格面-网格体单元邻接关系转换为局部处理器编号的数据关系。具体通过查找face_owner/face_neighbour中记录的网格体数据(取值范围为[-1,NCell-1],NCell为网格体总数量)是否存在当前处理器来进行转换。具体查询方法为当地处理器记录属于本地的网格体全局编号cell_gid,通过二分查找定位当前网格体是否在全局编号cell_gid中,该数据的查询结果有三种情况:①相邻网格体的标记为全局不存在(-1),表示该网格面位于整体计算区域边界处;②全局编号cell_gid有数据,该网格面的相邻网格体存在于当前处理器中;③全局编号cell_gid无该数据,该网格面的相邻网格体存在于其它处理器中。转换过程中,如果是第③,则标记为区域分解的人工边界,存储于数据交换界面F(ilevel)中,ilevel为分解的层次,数据交换界面F(ilevel)包括元素向量容器Interface Front Container;具体来说,图3所示处理器2中的f1,f2,f3,f4即为数据交换界面;如果是①种情况,标记这些网格面为计算区域的物理边界;如果是第②中情况,则正常记录处理器当地编号,将数据填入到当地网格面face_owner_local,当地邻接网格面face_neighbour_local数据结构中;
S202:根据步骤S201中转换的网格面-网格体单元邻接关系,重构网格体-网格面邻接关系,并将网格体-网格面邻接关系转换为基于局部处理器编号的数据关系;具体来说,图3所示的处理器0上的T0单元,它是由当地网格面LF0-LF4构成的。这个信息是通过步骤S201中的face_owner_local,face_neighbour_local邻接关系,依次填入网格体-网格面邻接关系cell_to_face[cl_i][fl_j]数据结构中形成的;其中,cl_i为网格体单元在当前处理器的局部编号,fl_j为子面序号;
步骤S130,根据人工边界对应的网格面信息,确定每个处理器的待归并数据容器表和待发送邻接指针表,并对目标处理器的网格结构进行更新,直至到达目标层级的网格重叠区域分解。
作为一种可选的实施例,步骤S130可通过以下步骤实现:
重复执行以下步骤,直至目标处理器更新后的网格结构,到达目标层级的网格重叠区域分解:
步骤1.1),根据人工边界对应的网格面信息,形成数据交换界面并存储于待发送邻接指针表中;
其中,数据交换界面包括与人工边界对应的网格面邻接的网格体单元以及体单元关联的所有子单元数据;此时,各处理器根据分解的人工边界处的网格面信息,形成数据交换界面F(ilevel),收集数据交换界面邻接的网格体单元以及体单元关联的所有子单元数据,存储于相应的待发送邻接指针表C(ilevel)中;
具体地,步骤1.1)可以分解为如下步骤:
S301:对数据交换界面F(ilevel)中的网格面进行循环,获取该网格面的相邻网格体单元,并存储于数据列表中;具体来说,图4所示的处理器1中的T1-1,T1-2,T1-3,T1-4即为数据交换界面F(ilevel)中的数据交互界面的相邻网格体单元;
S302:对S301获取的网格体单元列表,通过网格体-网格面邻接关系、网格面-网格点关系以及网格点全局编号等,获取单元列表的所有关联网格面、网格点,使用C++标准模板库中集合容器set查询已有的关联网格面、网格点且存储新开辟的关联网格面、网格点,以保证其唯一性。
S303:整理S302中的数据,构造网格体单元及其关联信息的待发送邻接指针表C(ilevel)。该指针表包括三个基本向量容器:待发送的网格体存储容器Sent CellContainer(包含cell_to_face邻接关系)、待发送的网格面存储容器Sent Face Container(包含face_owner,face_neighbour邻接关系,face_to_vertex邻接关系)、待发送的网格节点存储容器Sent Vertex Container(包含网格点编号信息vertex_gid及网格点坐标信息vertex_coordinates);
作为一种优选的技术方案,S302中为保持唯一性可基于红黑树的集合数据结构进行判断去重。
步骤1.2),将每个处理器存储的待发送邻接指针表发送至其他处理器,并将接收的信息存储于待归并数据容器表;
示例性地,各处理器交换存储的所有的人工边界网格面关联的待发送邻接指针表C(ilevel),将新接收的信息存储于待归并数据容器表R(ilevel)中;其中,该待发送邻接指针表中包括待发送邻接网格信息;这里,可通过如下示例进行说明:
S401:将待发送邻接指针表C(ilevel)中网格点坐标信息vertex_coordinates使用非阻塞函数发送;
S402:将待发送邻接指针表C(ilevel)中的网格点编号信息vertex_gid按照非阻塞函数发送;
S403:将待发送邻接指针表C(ilevel)中的网格体-网格面邻接关系cell_to_face按照非阻塞函数发送;
S404:将待发送邻接指针表C(ilevel)中的网格面-网格点信息face_to_vertex按照非阻塞函数发送;
S405:将待发送邻接指针表C(ilevel)中的网格面-网格体单元邻接关系face_owner,face_neighbour按照非阻塞函数发送;
S406:各处理器接收网格点坐标信息,网格点编号信息,网格体-网格面邻接关系,网格面-网格点信息,网格面-网格体单元邻接关系;
S407:将接收的信息按照邻接表归集于数据容器表R(ilevel)中,该数据容器表R(ilevel)为指针表,还可称其为归并后网格R(ilevel);其中,该指针表包括三个基本向量容器:接收的网格体存储容器Recv Cell Container(包含cell_to_face邻接关系)、接收的网格面存储容器Recv Face Container(包含face_owner,face_neighbour邻接关系,face_to_vertex邻接关系)、接收的网格点存储容器Recv Vertex Container(包含网格点编号信息vertex_gid及网格点坐标信息vertex_coordinates);
步骤1.3),基于待归并数据容器表和待发送邻接指针表更新每个处理器的网格结构数据,确定每个处理器对应的网格重叠区域分解。
作为一种更新方式,各处理器将接收的网格拓扑信息合并到当地网格中,刷新当地网格的邻接拓扑数据结构,找出归并后新区域分解数据交换界面F(ilevel+1);具体地,该更新方式可包括以下步骤:
S501:对数据容器表R(ilevel)中的网格点进行循环,查找其在当地处理器中是否存在,若前序中已有元素,那么获取相应点元素地址,若否则插入到当地数据列表中,并赋予网格点当地编号;记录映射数据于M(ilevel)中的Merge Vertex Container,与当前空间位置指针链接起来;M(ilevel)是一个符号标识,代表第ilevel层操作所合并数据的整体,M(ilevel)中的Merge Vertex Container是存着接收的要合并到自身数据结构中的网格点;M(ilevel)中的Merge Cell Container存放着接收的合并到自身的所有单元,依次类推;
S502:对数据容器表R(ilevel)中的网格面进行循环,使用哈希算法确定当前网格面是否在当地数据列表中,若前序中已有元素,那么获取相应面元素地址,若不存在则插入到数据列表中,并赋予网格面当地编号,记录映射数据于M(ilevel)中的合并到当地网格数据结构中的网格面单元存储Merge Face Container,再与当前空间位置指针链接起来;
S503:对数据容器表R(ilevel)中的网格体进行循环,确定网格体是否在当地数据列表中存在,若前序中已有元素,那么获取相应面元素地址,若不存在则插入数据结构中,并赋予网格体当地编号,记录映射数据于M(ilevel)中的当地网格的网格体单元存储容器Merge Cell Container,再与当前空间位置指针链接起来。对插入的体单元进行循环,对每个网格体单元的网格体-网格面邻接关系cell_to_face修改为基于当地处理器的局部编号;
S504:对S503中新插入网格体进行循环,提取其关联的网格面,更新该网格面的网格面-网格体单元邻接关系为基于当地处理器的局部编号;按照邻接网格体的三种情况进行分类:①该网格面位于整体计算区域边界处,相邻网格体不存在;②该网格面的相邻网格体存在于当前处理器中;③该网格面的相邻网格体存在于其它处理器中。
S505:对当前处理器上的所有网格元素执行一次统一编号,使具有相同属性的网格面元素编号连续,然后按照编号值的大小对整体容器中的网格面元素地址进行排序,从而保证本发明中的网格元素地址的连续性,有利于提升并行计算的内存访问效率。图5所示的处理器1中的T2-1,T2-2,T2-3,T2-4即为合并后的数据示意图;本发明将新加入的网格元素与原网格元素融合,形成了新的整体网格计算区域,并与处理器1形成了第一层网格重叠区域分解。
S506:对当地所有网格面进行循环,若该网格面一侧网格体单元为待发送邻接指针表C(ilevel)中已发送单元,另一侧为未发送的非数据容器表R(ilevel)单元,则该界面确定为新的数据交换界面,存储到数据交换界面F(ilevel+1)的元素向量容器InterfaceFront Container中,如图5所示的处理器1中的虚线即为新的数据交换界面,该数据交换界面是向计算域内部逐层推进的,代表了数据重叠区域的内边界。
在前述实施例的基础上,再按照新区域分解数据数据交换界面,重复上述步骤1.1)-步骤1.3)过程,直到到达指定的区域分解层次。
作为一种优选的技术方案,具体包括以下步骤:
S601:判断当前的重叠层次是否满足预设的要求,若是则转S140;
S602:若否,则将当前数据交换界面指针指向数据交换界面F(ilevel+1),转向S130中的S1.1);图6所示为转向S3之后找出的待发送邻接指针表C(ilevel+1)数据内容,处理器1中的包括T1-6,T1-7,T1-8,T1-9网格体及其子网格元素;图7所示为经S130中的S1.1),S1.2),S1.3)处理后的具有二层重叠区域分解的计算域示意图,本发明成功将信息拓展至两层数据交换信息。
其中,上述步骤1.3)还可通过以下步骤实现,包括:对待归并数据容器表中的网格点进行循环,判断网格点是否存在于当前处理器中;若存在,则获取网格点对应的网格面元素地址;若不存在,则将网格点插入当地数据列表中;遍历待归并数据容器表中的网格面和网格体,分别判断网格面或网格体是否存在于当地数据列表中;若存在,则获取网格面或网格体对应的网格面元素地址;若不存在,则将网格面或网格体插入当地数据列表中;遍历新插入当地数据列表中的网格体,提取与网格体相关联的网格面,根据当前处理器的局部编号更新网格面对应的网格面-网格体单元邻接关系;基于更新后的网格面-网格体单元邻接关系确定网格面的邻接网格体的分类。
步骤S140,基于目标层级的网格重叠区域分解对应的待归并数据容器表和待发送邻接指针表,确定用于多面体网格结构逐层交换的函数调用接口,并根据函数调用接口进行并行计算。
其中,根据产生目标层级的网格重叠区域分解情况下,当前所有的待发送邻接指针表C(ilevel),数据容器表R(ilevel)信息,形成用于逐层交换的分区对接数据信息组,开辟逐层交换的缓冲区,并提供信息交换的函数调用接口。
作为一种优选的技术方案,该步骤S140,包括以下步骤:
S701,按照待发送邻接指针表C(ilevel)中的待发送的网格体存储容器Sent CellContainer列表,开辟第ilevel层发送的缓冲区,缓冲区包括encoding和content字段,其中encoding记录了数据类型,content为字节数组,并建立缓冲区域与当地数据之间的对应关系;
S702,按照数据容器表R(ilevel)中的接收的网格体存储容器Recv CellContainer列表,开辟第ilevel层接收的缓冲区,同时根据M(ilevel)中的网格体单元存储容器Merge Cell Container建立缓冲区域与当地数据之间的对应关系;
S703,按照待发送邻接指针表C(ilevel+1),数据容器表R(ilevel+1)列表,如S701,S702所示方法开辟第ilevel+1层的对应缓冲区,直到到达指定的区域分解层次;
S704,构造回调函数,该函数将使用非阻塞函数逐层发送接收缓冲区,并自动将数据从计算区域移动、回收到缓冲区;图7所示箭头即为交换数据的发送接收对应关系。
作为一种优选的技术方案,S701-S704中的缓冲区是无数据类型的字节数组。
如图8所示,本发明实施例提供一种针对多面体网格的多层区域分解并行计算装置,包括:
第一确定模块,从每个处理器导入的网格结构数据中,确定目标处理器对应的目标网格结构数据,并将所述目标网格结构数据归集于所述目标处理器;其中,所述网格结构数据包括网格点坐标数据、网格面拓扑数据和网格体单元与处理器的映射关系;所述网格面拓扑数据包括网格面-网格体单元邻接关系和网格面-网格点邻接关系;所述目标网格结构数据为存储于所述目标处理器,但与其他处理器存在映射关系的网格结构数据;
第二确定模块,基于所述网格面-网格体单元邻接关系,确定多面体网格中跨处理器区域分解的人工边界,并存储于数据向量中;
更新模块,根据所述人工边界对应的网格面信息,确定每个处理器的待归并数据容器表和待发送邻接指针表,并对所述目标处理器的网格结构进行更新,直至到达目标层级的网格重叠区域分解;
计算模块,基于所述目标层级的网格重叠区域分解对应的待归并数据容器表和待发送邻接指针表,确定用于多面体网格结构逐层交换的函数调用接口,并根据所述函数调用接口进行并行计算。
在一些实施例中,第一确定模块,还具体用于,初始化并行计算环境,对网格面进行线性等分和二次剖分,将每个处理器导入相应的网格点坐标数据、网格面拓扑数据和网格体单元与处理器的映射关系;从每个处理器导入的网格点坐标数据、网格面拓扑数据和网格体单元与处理器的映射关系中,确定当前处理器对应的目标网格结构数据,并将所述目标网格结构数据归集于所述当前处理器。
在一些实施例中,第二确定模块,还具体用于,基于每个网格体所存在于的处理器,确定每个网格体区域的边界类型;其中,所述边界类型包括实际边界及所述网格体跨处理器区域分解导致的人工边界;根据所述边界类型,将所述网格面-网格体单元邻接关系转换成携带处理器编号的数据关系,并将所述数据关系存储于数据向量中。
在一些实施例中,更新模块,还具体用于,重复执行以下步骤,直至所述目标处理器更新后的网格结构,到达目标层级的网格重叠区域分解:根据所述人工边界对应的网格面信息,形成数据交换界面并存储于待发送邻接指针表中;其中,所述数据交换界面包括与所述人工边界对应的网格面邻接的网格体单元以及体单元关联的所有子单元数据;将每个处理器存储的所述待发送邻接指针表发送至其他处理器,并将接收的信息存储于待归并数据容器表;基于所述待归并数据容器表和所述待发送邻接指针表更新每个所述处理器的网格结构数据,确定每个处理器对应的网格重叠区域分解。
在一些实施例中,计算模块,还具体用于,基于当前层级的网格重叠区域分解对应的发送邻接指针表和待归并数据容器表,分别确定所述当前层级对应的缓冲区域和所述目标处理器的网格结构之间的对应关系;若所述当前层级未达到目标层级,则将所述当前层级的下一层级作为新的当前层级,并循环执行上述步骤;若所述当前层级达到目标层级,则构建回调函数对多面体网格结构的数据进行并行计算。
在一些实施例中,第二确定模块,还具体用于,基于所述网格面-网格体单元邻接关系,判断每个网格体是否存在于当前处理器中;若当前网格面的相邻网格体标记为全局不存在,则所述当前网格面位于计算区域边界处;若当前网格面的相邻网格体存在于当前处理器的全局编号中,则所述当前网格面的相邻网格体存在于当前处理器中;若当前网格面的相邻网格体不存在于当前处理器的全局编号中,则所述当前网格面的相邻网格体存在于其他处理器中。
在一些实施例中,更新模块,还具体用于,对所述待归并数据容器表中的网格点进行循环,判断所述网格点是否存在于当前处理器中;若存在,则获取所述网格点对应的网格面元素地址;若不存在,则将所述网格点插入当地数据列表中;遍历所述待归并数据容器表中的网格面和网格体,分别判断所述网格面或所述网格体是否存在于当地数据列表中;若存在,则获取所述网格面或所述网格体对应的网格面元素地址;若不存在,则将所述网格面或所述网格体插入当地数据列表中;遍历新插入当地数据列表中的网格体,提取与所述网格体相关联的网格面,根据当前处理器的局部编号更新所述网格面对应的网格面-网格体单元邻接关系;基于更新后的网格面-网格体单元邻接关系确定所述网格面的邻接网格体的分类。
本发明实施例提供一种用于实现针对多面体网格的多层区域分解并行计算方法的电子设备,本实施例中,所述电子设备可以是,但不限于,个人电脑(Personal Computer,PC)、笔记本电脑、监控设备、服务器等具备分析及处理能力的计算机设备。
作为一种示范性实施例,可参见图9,电子设备110,包括通信接口111、处理器112、存储器113以及总线114,处理器112、通信接口111和存储器113通过总线114连接;上述存储器113用于存储支持处理器112执行上述方法的计算机程序,上述处理器112被配置为用于执行该存储器113中存储的程序。
本文中提到的机器可读存储介质可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
非易失性介质可以是非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、任何类型的存储盘(如光盘、dvd等),或者类似的非易失性存储介质,或者它们的组合。
可以理解的是,本实施例中的各功能模块的具体操作方法可参照上述方法实施例中相应步骤的详细描述,在此不再重复赘述。
本发明实施例提供一种计算机可读存储介质,所述可读存储介质中存储有计算机程序,所述计算机程序代码被执行时可实现上述任一实施例所述的方法,具体实现可参见方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。
Claims (8)
1.一种针对多面体网格的多层区域分解并行计算方法,其特征在于,包括:
从每个处理器导入的网格结构数据中,确定目标处理器对应的目标网格结构数据,并将所述目标网格结构数据归集于所述目标处理器;其中,所述网格结构数据包括网格点坐标数据、网格面拓扑数据和网格体单元与处理器的映射关系;所述网格面拓扑数据包括网格面-网格体单元邻接关系和网格面-网格点邻接关系;所述目标网格结构数据为存储于所述目标处理器,但与其他处理器存在映射关系的网格结构数据;
基于所述网格面-网格体单元邻接关系,确定多面体网格中跨处理器区域分解的人工边界,并存储于数据向量中;
根据所述人工边界对应的网格面信息,确定每个处理器的待归并数据容器表和待发送邻接指针表,并对所述目标处理器的网格结构进行更新,直至到达目标层级的网格重叠区域分解;
基于所述目标层级的网格重叠区域分解对应的待归并数据容器表和待发送邻接指针表,确定用于多面体网格结构逐层交换的函数调用接口,并根据所述函数调用接口进行并行计算;
其中,人工边界处的网格面信息,形成数据交换界面,所述数据交换界面包括与人工边界对应的网格面临接的网格体单元以及网格体单元关联的所有子单元数据;通过收集数据交换界面临接的网格体单元以及网格体单元关联的所有子单元数据,存储于相应的待发送临接指针表中;
其中,根据所述人工边界对应的网格面信息,确定每个处理器的待归并数据容器表和待发送邻接指针表,包括以下步骤:
S301:对数据交换界面中的网格面进行循环,获取该网格面的相邻网格体单元,并存储于数据列表中;
S302:通过网格体-网格面邻接关系、网格面-网格点关系以及网格点全局编号,获取单元列表的所有关联网格面、网格点,使用C++标准模板库中集合容器set查询已有的关联网格面、网格点且存储新开辟的关联网格面、网格点,以保证其唯一性;
S303:构造网格体单元及其关联信息的待发送邻接指针表;所述临接指针表包括三个基本向量容器:待发送的网格体存储容器、待发送的网格面存储容器、待发送的网格节点存储容器;
其中,根据所述人工边界对应的网格面信息,确定每个处理器的待归并数据容器表和待发送邻接指针表,并对所述目标处理器的网格结构进行更新,直至到达目标层级的网格重叠区域分解的步骤,包括:
重复执行以下步骤,直至所述目标处理器更新后的网格结构,到达目标层级的网格重叠区域分解:
根据所述人工边界对应的网格面信息,形成数据交换界面并存储于待发送邻接指针表中;其中,所述数据交换界面包括与所述人工边界对应的网格面邻接的网格体单元以及体单元关联的所有子单元数据;
将每个处理器存储的所述待发送邻接指针表发送至其他处理器,并将接收的信息存储于待归并数据容器表;
基于所述待归并数据容器表和所述待发送邻接指针表更新每个所述处理器的网格结构数据,确定每个处理器对应的网格重叠区域分解;
其中,基于所述待归并数据容器表和所述待发送邻接指针表更新每个所述处理器的网格结构数据的步骤,包括:
对所述待归并数据容器表中的网格点进行循环,判断所述网格点是否存在于当前处理器中;若存在,则获取所述网格点对应的网格点元素地址;若不存在,则将所述网格点插入当地数据列表中;
遍历所述待归并数据容器表中的网格面和网格体,分别判断所述网格面或所述网格体是否存在于当地数据列表中;若存在,则获取所述网格面或所述网格体对应的网格面元素地址;若不存在,则将所述网格面或所述网格体插入当地数据列表中;
遍历新插入当地数据列表中的网格体,提取与所述网格体相关联的网格面,根据当前处理器的局部编号更新所述网格面对应的网格面-网格体单元邻接关系;
基于更新后的网格面-网格体单元邻接关系确定所述网格面的邻接网格体的分类。
2.根据权利要求1所述的方法,其特征在于,从每个处理器导入的网格结构数据中,确定目标处理器对应的目标网格结构数据,并将所述目标网格结构数据归集于所述目标处理器的步骤,包括:
初始化并行计算环境,对网格面进行线性等分和二次剖分,将每个处理器导入相应的网格点坐标数据、网格面拓扑数据和网格体单元与处理器的映射关系;
从每个处理器导入的网格点坐标数据、网格面拓扑数据和网格体单元与处理器的映射关系中,确定当前处理器对应的目标网格结构数据,并将所述目标网格结构数据归集于所述当前处理器。
3.根据权利要求1所述的方法,其特征在于,基于所述网格面-网格体单元邻接关系,确定多面体网格中跨处理器区域分解的人工边界,并存储于数据向量中的步骤,包括:
基于每个网格体所存在于的处理器,确定每个网格体区域的边界类型;其中,所述边界类型包括实际边界及所述网格体跨处理器区域分解导致的人工边界;
根据所述边界类型,将所述网格面-网格体单元邻接关系转换成携带处理器编号的数据关系,并将所述数据关系存储于数据向量中。
4.根据权利要求1所述的方法,其特征在于,基于所述目标层级的网格重叠区域分解对应的待归并数据容器表和待发送邻接指针表,确定用于多面体网格结构逐层交换的函数调用接口,并根据所述函数调用接口进行并行计算的步骤,包括:
基于当前层级的网格重叠区域分解对应的发送邻接指针表和待归并数据容器表,分别确定所述当前层级对应的缓冲区域和所述目标处理器的网格结构之间的对应关系;
若所述当前层级未达到目标层级,则将所述当前层级的下一层级作为新的当前层级,并循环执行上述步骤;
若所述当前层级达到目标层级,则构建回调函数对多面体网格结构的数据进行并行计算。
5.根据权利要求3所述的方法,其特征在于,基于每个网格体所存在于的处理器,确定每个网格体区域的边界类型的步骤,包括:
基于所述网格面-网格体单元邻接关系,判断每个网格体是否存在于当前处理器中;
若当前网格面的相邻网格体标记为全局不存在,则所述当前网格面位于计算区域边界处;
若当前网格面的相邻网格体存在于当前处理器的全局编号中,则所述当前网格面的相邻网格体存在于当前处理器中;
若当前网格面的相邻网格体不存在于当前处理器的全局编号中,则所述当前网格面的相邻网格体存在于其他处理器中。
6.一种针对多面体网格的多层区域分解并行计算装置,其特征在于,包括:
第一确定模块,从每个处理器导入的网格结构数据中,确定目标处理器对应的目标网格结构数据,并将所述目标网格结构数据归集于所述目标处理器;其中,所述网格结构数据包括网格点坐标数据、网格面拓扑数据和网格体单元与处理器的映射关系;所述网格面拓扑数据包括网格面-网格体单元邻接关系和网格面-网格点邻接关系;所述目标网格结构数据为存储于所述目标处理器,但与其他处理器存在映射关系的网格结构数据;
第二确定模块,基于所述网格面-网格体单元邻接关系,确定多面体网格中跨处理器区域分解的人工边界,并存储于数据向量中;
更新模块,根据所述人工边界对应的网格面信息,确定每个处理器的待归并数据容器表和待发送邻接指针表,并对所述目标处理器的网格结构进行更新,直至到达目标层级的网格重叠区域分解;
计算模块,基于所述目标层级的网格重叠区域分解对应的待归并数据容器表和待发送邻接指针表,确定用于多面体网格结构逐层交换的函数调用接口,并根据所述函数调用接口进行并行计算;
其中,人工边界处的网格面信息,形成数据交换界面,所述数据交换界面包括与人工边界对应的网格面临接的网格体单元以及网格体单元关联的所有子单元数据;通过收集数据交换界面临接的网格体单元以及网格体单元关联的所有子单元数据,存储于相应的待发送临接指针表中;
其中,根据所述人工边界对应的网格面信息,确定每个处理器的待归并数据容器表和待发送邻接指针表,并对所述目标处理器的网格结构进行更新,直至到达目标层级的网格重叠区域分解的步骤,包括:
重复执行以下步骤,直至所述目标处理器更新后的网格结构,到达目标层级的网格重叠区域分解:
根据所述人工边界对应的网格面信息,形成数据交换界面并存储于待发送邻接指针表中;其中,所述数据交换界面包括与所述人工边界对应的网格面邻接的网格体单元以及体单元关联的所有子单元数据;
将每个处理器存储的所述待发送邻接指针表发送至其他处理器,并将接收的信息存储于待归并数据容器表;
基于所述待归并数据容器表和所述待发送邻接指针表更新每个所述处理器的网格结构数据,确定每个处理器对应的网格重叠区域分解;
其中,基于所述待归并数据容器表和所述待发送邻接指针表更新每个所述处理器的网格结构数据的步骤,包括:
对所述待归并数据容器表中的网格点进行循环,判断所述网格点是否存在于当前处理器中;若存在,则获取所述网格点对应的网格点元素地址;若不存在,则将所述网格点插入当地数据列表中;
遍历所述待归并数据容器表中的网格面和网格体,分别判断所述网格面或所述网格体是否存在于当地数据列表中;若存在,则获取所述网格面或所述网格体对应的网格面元素地址;若不存在,则将所述网格面或所述网格体插入当地数据列表中;
遍历新插入当地数据列表中的网格体,提取与所述网格体相关联的网格面,根据当前处理器的局部编号更新所述网格面对应的网格面-网格体单元邻接关系;
基于更新后的网格面-网格体单元邻接关系确定所述网格面的邻接网格体的分类。
7.一种电子设备,其特征在于,包括存储器、处理器及存储在所述存储器上并且能够在所述处理器上运行的程序,所述处理器执行所述程序时实现如权利要求1至5中任一项所述的方法。
8.一种计算机可读存储介质,其特征在于,所述可读存储介质中存储有计算机程序,所述计算机程序被执行时实现权利要求1-5中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310849610.8A CN116562066B (zh) | 2023-07-12 | 2023-07-12 | 一种针对多面体网格的多层区域分解并行计算方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310849610.8A CN116562066B (zh) | 2023-07-12 | 2023-07-12 | 一种针对多面体网格的多层区域分解并行计算方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116562066A CN116562066A (zh) | 2023-08-08 |
CN116562066B true CN116562066B (zh) | 2023-09-26 |
Family
ID=87493331
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310849610.8A Active CN116562066B (zh) | 2023-07-12 | 2023-07-12 | 一种针对多面体网格的多层区域分解并行计算方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116562066B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110188424A (zh) * | 2019-05-16 | 2019-08-30 | 浙江大学 | 一种面向动边界流场数值模拟的局部区域网格重构并行方法 |
CN113689556A (zh) * | 2021-10-25 | 2021-11-23 | 中国空气动力研究与发展中心计算空气动力研究所 | 一种块自适应型笛卡尔网格快速图映射方法及系统 |
CN114494650A (zh) * | 2022-04-06 | 2022-05-13 | 中国空气动力研究与发展中心计算空气动力研究所 | 一种分布式非结构网格跨处理器面对接方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140365186A1 (en) * | 2013-06-11 | 2014-12-11 | Airbus India Operations Pvt. Ltd. | System and method for load balancing for parallel computations on structured multi-block meshes in cfd |
-
2023
- 2023-07-12 CN CN202310849610.8A patent/CN116562066B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110188424A (zh) * | 2019-05-16 | 2019-08-30 | 浙江大学 | 一种面向动边界流场数值模拟的局部区域网格重构并行方法 |
CN113689556A (zh) * | 2021-10-25 | 2021-11-23 | 中国空气动力研究与发展中心计算空气动力研究所 | 一种块自适应型笛卡尔网格快速图映射方法及系统 |
CN114494650A (zh) * | 2022-04-06 | 2022-05-13 | 中国空气动力研究与发展中心计算空气动力研究所 | 一种分布式非结构网格跨处理器面对接方法及系统 |
Non-Patent Citations (1)
Title |
---|
并行多块结构重叠网格装配算法及应用;马文鹏 等;计算机应用研究;第33卷(第3期);788-793, 809 * |
Also Published As
Publication number | Publication date |
---|---|
CN116562066A (zh) | 2023-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100468418C (zh) | 由边界表示数据生成体数据的方法及其程序 | |
CN102799679B (zh) | 基于Hadoop的海量空间数据索引更新系统及方法 | |
CN105138560A (zh) | 基于多级空间索引技术的分布式空间矢量数据管理方法 | |
CN112231961A (zh) | 大规模有限元网格数据存储索引方法 | |
CN106951643A (zh) | 一种船体复杂外板三维点云数据精简方法及装置 | |
CN115129795A (zh) | 一种基于地球空间网格的数据空时存储方法 | |
CN111489447B (zh) | 一种适用于格子Boltzmann方法的直角网格自适应建模方法 | |
CN114494648B (zh) | 基于有限元网格划分的网格调整方法、设备和存储介质 | |
CN117078048A (zh) | 基于数字孪生的智慧城市资源管理方法及系统 | |
CN111523004B (zh) | 一种边缘计算网关数据的存储方法及系统 | |
Cancela et al. | Rare event analysis by Monte Carlo techniques in static models | |
CN114239363A (zh) | 一种基于ABAQUS二次开发Python语言的变密度拓扑优化的方法 | |
CN117453937B (zh) | 一种电网图数据模型自动生成方法及装置 | |
CN116562066B (zh) | 一种针对多面体网格的多层区域分解并行计算方法和装置 | |
Cabiddu et al. | Large mesh simplification for distributed environments | |
CN111144043A (zh) | 生物组织剪切仿真方法、终端设备及存储介质 | |
CN109684517A (zh) | 一种历史数据存储方法、读写方法、存储装置和设备 | |
CN115330971B (zh) | 一种面向渲染性能优化的几何模型轻量化方法 | |
Gold | Spatial data structures—the extension from one to two dimensions | |
CN115858498A (zh) | 五维时空分布式数据库构建方法及装置 | |
CN104850591A (zh) | 一种数据的转换存储方法及装置 | |
Cascón et al. | The meccano method for automatic tetrahedral mesh generation of complex genus-zero solids | |
CN110349265B (zh) | 一种四面体拓扑网格生成方法及电子设备 | |
CN109871592B (zh) | 一种面向机电产品电缆敷设布局优化的空间离散化模型的建模方法 | |
CN107529638B (zh) | 线性求解器的加速方法、存储数据库及gpu系统 |
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 |