CN116663369A - 非结构网格cfd共享存储并行处理方法和系统 - Google Patents
非结构网格cfd共享存储并行处理方法和系统 Download PDFInfo
- Publication number
- CN116663369A CN116663369A CN202310777952.3A CN202310777952A CN116663369A CN 116663369 A CN116663369 A CN 116663369A CN 202310777952 A CN202310777952 A CN 202310777952A CN 116663369 A CN116663369 A CN 116663369A
- Authority
- CN
- China
- Prior art keywords
- grid
- partition
- unstructured
- sub
- cfd
- 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.)
- Pending
Links
- 238000003860 storage Methods 0.000 title claims abstract description 35
- 238000003672 processing method Methods 0.000 title claims abstract description 16
- 238000005192 partition Methods 0.000 claims abstract description 140
- 238000000034 method Methods 0.000 claims abstract description 58
- 238000004364 calculation method Methods 0.000 claims abstract description 32
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 28
- 238000000638 solvent extraction Methods 0.000 claims description 50
- 238000012545 processing Methods 0.000 claims description 31
- 230000008569 process Effects 0.000 claims description 21
- 238000000354 decomposition reaction Methods 0.000 claims description 17
- 230000006870 function Effects 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 13
- 238000002224 dissection Methods 0.000 claims description 9
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 claims description 6
- 238000010276 construction Methods 0.000 claims description 5
- 210000004027 cell Anatomy 0.000 description 25
- 241001229889 Metis Species 0.000 description 18
- 238000004088 simulation Methods 0.000 description 11
- 239000012530 fluid Substances 0.000 description 9
- 238000004458 analytical method Methods 0.000 description 8
- 238000009826 distribution Methods 0.000 description 8
- 230000008901 benefit Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 230000004907 flux Effects 0.000 description 6
- 238000011161 development Methods 0.000 description 5
- 230000018109 developmental process Effects 0.000 description 5
- 230000003993 interaction Effects 0.000 description 5
- 238000005457 optimization Methods 0.000 description 5
- 230000011218 segmentation Effects 0.000 description 5
- 238000004040 coloring Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 3
- 238000007418 data mining Methods 0.000 description 3
- 230000004927 fusion Effects 0.000 description 3
- 235000019580 granularity Nutrition 0.000 description 3
- 239000012212 insulator Substances 0.000 description 3
- 230000001788 irregular Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000011960 computer-aided design Methods 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000007613 environmental effect Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000003012 network analysis Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000003595 spectral effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012800 visualization Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 238000002485 combustion reaction Methods 0.000 description 1
- 230000010485 coping Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 239000002828 fuel tank Substances 0.000 description 1
- 230000006698 induction Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 210000000352 storage cell Anatomy 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
- G06F30/23—Design optimisation, verification or simulation using finite element methods [FEM] or finite difference methods [FDM]
-
- 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
- G06F2113/00—Details relating to the application field
- G06F2113/08—Fluids
-
- 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
- Y02T—CLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO TRANSPORTATION
- Y02T90/00—Enabling technologies or technologies with a potential or indirect contribution to GHG emissions mitigation
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- Algebra (AREA)
- Computing Systems (AREA)
- Fluid Mechanics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Image Analysis (AREA)
Abstract
本申请涉及非结构网格CFD共享存储并行处理方法和系统,该方法包括调用网格剖分工具按照仅剖分物理分割区的剖分策略,对待求解的航行器非结构网格逐层进行递归剖分并对剖分后生成的各个子网格分区内的网格实体进行重排序;网格实体包括非结构网格单元、网格面和网格结点;将每次递归剖分和重排序后的各个子网格分区存储在树数据结构MeshTree中,直到非结构网格的分区网格数小于特定阈值;根据设计的基于MeshTree遍历的并行算法,对构建的树数据结构MeshTree进行递归遍历的并行计算,得到航行器的特性预测结果。大幅提高了非结构网格CFD计算的并行效率。
Description
技术领域
本发明属于非结构化网格CFD及高性能计算技术领域,涉及一种非结构网格CFD共享存储并行处理方法和系统。
背景技术
为了应对能源约束和满足高性能需求,越来越多地采用众核处理器或异构加速器来构建百万兆次级的顶级高性能计算(HPC)系统。目前,共享内存计算节点可能包含划分为多个非统一内存访问(NUMA)域的CPU,总共有数百个CPU内核或硬件线程。同时,当前硬件设计中的某些资源(如内存或每个内核的通信带宽)没有相应地扩展甚至减少。这种不平衡的硬件趋势将在可预见的未来盛行,对开发高效和可扩展的HPC应用程序提出严峻挑战。除了从程序中挤出足够的并行度来使用海量内核之外,还应该谨慎处理由于缓存、内存、通信或连贯链路等受限资源的争用而可能导致的性能瓶颈。根据Amdahl定律,任何瓶颈都会随着多核处理器计算能力的提高而被放大;并行算法和编译器、运行时等工具都在努力和发展以克服前述不平衡的趋势。
随着高性能计算技术的发展,以计算流体力学(CFD)为代表的数值模拟软件已经在众多应用领域成为一种强大的计算工具,典型的应用领域包括飞机和车辆气动力学、船舶的流体动力学、内燃发动机、燃气轮机、环境工程和生物医学工程等。非结构网格能够适应复杂外形需求,在计算精度方面也比结构网格高很多,是目前CFD工程应用中最为广泛采用的一类网格。与结构网格CFD相比,基于非结构网格的CFD软件工具通常需要显式存储网格的拓扑信息,数据结构较为复杂,计算过程中需要间接索引,导致访存效率很低,同时由于循环内部的数据竞争,难以实现共享存储结点内高效的细粒度(如线程并行和向量化并行等)并行计算。例如在非结构网格CFD软件工具中,求解器的计算过程涉及到通量的计算,在计算面(face)的通量时会带入面所接触的两个单元(cell)的数据,由单元编号间接访问存储单元数据,在直接使用共享内存并行化策略时,会出现多个面对同个单元进行访存,形成数据冲突,故传统非结构网格CFD仍存在计算效率不高的技术问题。
发明内容
针对上述传统方法中存在的问题,本发明提出了一种非结构网格CFD共享存储并行处理方法以及一种非结构网格CFD共享存储并行处理系统,能够提高非结构网格CFD的并行计算效率,实现非结构网格的大型仿真系统大规模并行。
为了实现上述目的,本发明实施例采用以下技术方案:
一方面,提供一种非结构网格CFD共享存储并行处理方法,包括步骤:
调用网格剖分工具按照仅剖分物理分割区的剖分策略,对待求解的航行器非结构网格逐层进行递归剖分并对剖分后生成的各个子网格分区内的网格实体进行重排序;网格实体包括非结构网格单元、网格面和网格结点;
将每次递归剖分和重排序后的各个子网格分区存储在树数据结构MeshTree中,直到非结构网格的分区网格数小于特定阈值;
根据设计的基于MeshTree遍历的并行算法,对构建的树数据结构MeshTree进行递归遍历的并行计算,得到航行器的特性预测结果。
另一方面,还提供一种非结构网格CFD共享存储并行处理系统,包括:
剖分排序模块,用于调用网格剖分工具按照仅剖分物理分割区的剖分策略,对待求解的航行器非结构网格逐层进行递归剖分并对剖分后生成的各个子网格分区内的网格实体进行重排序;网格实体包括非结构网格单元、网格面和网格结点;
树构建模块,用于将每次递归剖分和重排序后的各个子网格分区存储在树数据结构MeshTree中,直到非结构网格的分区网格数小于特定阈值;
树执行模块,用于根据设计的基于MeshTree遍历的并行算法,对构建的树数据结构MeshTree进行递归遍历的并行计算,得到航行器的特性预测结果。
又一方面,还提供一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现上述的非结构网格CFD共享存储并行处理方法的步骤。
再一方面,还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述的非结构网格CFD共享存储并行处理方法的步骤。
上述技术方案中的一个技术方案具有如下优点和有益效果:
上述非结构网格CFD共享存储并行处理方法和系统,通过调用网格剖分工具按照仅剖分物理分割区的剖分策略,对待求解的航行器非结构网格逐层进行递归剖分并对剖分后生成的各个子网格分区内的网格实体进行重排序,并将每次递归剖分和重排序后的各个子网格分区存储在树数据结构MeshTree中,在该仅剖分物理分割区的剖分策略下,普通分区不再分解,仅对物理分割区不断进行递归分解,直到非结构网格的分区网格数小于特定阈值,然后根据设计的基于MeshTree遍历的并行算法,对构建的树数据结构MeshTree进行递归遍历的并行计算,从而高效实现非结构网格CFD的并行计算,高效输出航行器的特性预测结果。
相比较于现如今的网格剖分方法,上述方案通过设置物理分割区,使得各个分区之间的数据不存在冲突,可以实现同时消除多种循环的数据依赖,实现代码大面积的并行加速,大幅提高了非结构网格CFD的并行计算效率,从而实现非结构网格的大型仿真系统大规模并行。此外,在通用性上,一方面上述方案可集成封装为一个通用的并行代码库,能够很好地兼容空气动力学、水动力学、反应堆热工水力、发动机内流仿真以及结构力学和电磁学等多种应用领域软件的开发;另一方面这种高层次抽象增加了方法对应的软件代码的可读性和可维护性,开发人员不需要深入理解具体的应用领域计算方法就能很容易找到各个层次需要维护和开发的接口。
附图说明
为了更清楚地说明本申请实施例或传统技术中的技术方案,下面将对实施例或传统技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为传统非结构网格CFD软件中的数据依赖关系示意图;
图2为一个实施例中非结构网格CFD共享存储并行处理方法的流程示意图;
图3为一个实施例中原始网格与递归剖分重排序后的网格对比示意图,其中,(a)为原始网格,(b)为剖分和重排序后的网格;
图4为一个实施例中递归剖分和重排序处理的流程示意图;
图5为一个实施例中构建的树数据结构MeshTree示意图;
图6为一个实施例中非结构网格CFD共享存储并行处理系统的模块结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。在本申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请。
需要说明的是,在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置展示该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。
本领域技术人员可以理解,本文所描述的实施例可以与其它实施例相结合。在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
基于传统技术的局限,需要设计针对非结构网格特点的CFD并行求解框架,以实现非结构网格CFD的细粒度并行计算,提升CFD软件工具的求解效率,节约系统资源。
为了解决数据冲突,传统的共享内存并行化策略通常采用基于OpenMP parallelfor线程模型实现的网格着色法(Coloring),即通过对网格面(face)进行着色保证相同颜色的网格面之间不存在数据竞争,以实现循环级并行性。其中,OpenMP parallel for线程模型是一种并行计算模型,用于用于生成一个并行域,并将计算任务在多个线程之间分配,从而加快计算运行的速度;OpenMP即Open Multi-Processing,是一种并行计算编程模型,用于编写多线程和多核共享内存并行程序,它提供了一套指令集和库函数,允许开发者在C、C++和Fortran等编程语言中利用并行计算的优势。
尽管这些策略在以前的对称多处理(SMP)系统或多核处理器上实现了一定程度的可扩展性,但它们越来越多地受到负载不平衡、数据局部性差以及新兴众核处理器上频繁的全局同步等问题的困扰。除此之外,对面着色可以消除通量计算时的数据依赖但无法避免时间推进时(例如LU-SGS方法)循环的大面积数据依赖。LU-SGS方法是一种利用LU分解和逐次高斯-赛德尔迭代相结合的迭代方法,用于求解线性方程组的数值解。LU代表矩阵的LU分解,SGS代表逐次高斯-赛德尔迭代(Successive Gauss-Seidel Iteration)。
因此,针对非结构网格计算对高性能方面的需求,本发明提出了一个新的非结构网格CFD共享存储并行处理方案来替代传统的循环级别共享策略,提高非结构网格的并行计算效率,实现非结构网格的大型仿真系统大规模并行。
为了更清楚简洁地说明本申请的实施例,以下是一些名词解释:
MeshTree(网格树):在计算机科学中,MeshTree是一种树状数据结构,常用于表示和处理三维网格或多维网格数据。网格是由离散的节点(顶点)和连接这些节点的边或面组成的数据结构,用于表示复杂的几何形状和物理域。在科学计算、计算机图形学和计算机辅助设计等领域,网格广泛应用于模拟、可视化、分析和处理各种对象。
MeshTree提供了一种层次化的组织结构,它通过递归地将网格划分为更小的子网格,并以树的形式连接起来。每个节点代表一个子网格,它可以包含顶点、边、面以及与该子网格相关的属性和数据。MeshTree的构建过程通常涉及以下几个步骤:
网格划分:根据特定的划分策略,将原始网格逐级划分为更小的子网格。划分的方法可以是规则的(如二分划分)或根据特定的几何特征(如自适应划分)进行。
节点连接:将划分得到的子网格以树的形式连接起来,形成MeshTree。每个节点包含对应子网格的几何信息、属性数据和与父节点、子节点的连接关系。
MeshTree的优势在于它提供了一种高效的并行执行方式。通过逐级划分网格,MeshTree可以消除非结构网格之间的数据依赖,在兄弟节点之间实现不同粒度的并行。这使得在大规模网格中的计算和更新变得更加高效和方便。
MeshTree在许多领域有广泛的应用,如计算机图形学中的碰撞检测、体积渲染和光线追踪,科学计算中的有限元分析和计算流体力学等。通过合理的网格划分和组织,MeshTree可以加速复杂几何对象的处理和分析,提高计算效率和可视化性能。
METIS(MeTiS):是一个常用的网格剖分工具,用于将大型的有限元网格或图形分割为更小的部分,以便进行并行计算、优化和可视化等任务。METIS提供了一系列的算法和工具,用于解决图和网格的划分问题。它采用多种划分算法,包括谱划分(SpectralPartitioning)、递归划分(Recursive Partitioning)、多层划分(MultilevelPartitioning)和k-way划分(k-way Partitioning)等。METIS的主要功能包括:
图划分:METIS可以将给定的图划分为多个部分,使得每个部分包含相似数量的节点,并且尽量减少跨划分边的数量。图划分可以用于任务调度、负载均衡、并行计算等领域。
网格划分:METIS可以将三维网格或二维网格划分为多个部分,以实现并行计算的目的。网格划分可以用于有限元分析、计算流体力学、结构优化等领域。
优化:METIS提供了一些优化算法,用于改进划分结果的质量。这些算法可以通过重新调整节点或网格的位置,减少划分的边界面积或最小化划分内部的通信开销。
METIS是一个开源项目,可以在多个平台上使用,包括Windows、Linux和macOS等。它提供了C语言和Fortran语言的接口,使得开发者可以方便地集成和使用METIS的功能。METIS的应用领域广泛,包括科学计算、计算机图形学、网络分析、数据挖掘等。通过合理的网格或图划分,METIS可以提高并行计算的效率、减少通信开销并改善算法的质量和可扩展性。
非结构网格CFD包含大量由非结构网格数据结构导致的非规则计算内核。发明人首先对非结构网格CFD软件计算内核特点进行了深入分析与归纳总结,主要涉及图1所示的数据依赖:
1.面更新单元(Faces-to-Cells)依赖:例如,在通量计算过程中,不同的面可能更新相同的邻居单元,例如图1中的面f11和f9会同时对单元c5进行更新,因此二者无法并行执行。
2.面更新结点(Faces-to-Nodes)依赖:例如,在边界面梯度重构的时候,不同的面可能更新相同的网格结点,例如图1中的面f18和f17会同时对网格点n8进行更新,因此二者无法并行执行。
3.单元更新结点(Cells-to-Nodes)依赖:例如,在内部单元梯度重构的时候,不同单元可能需要更新相同的网格结点,例如图1中的单元c2和c1会同时对网格点n1更新,因此二者无法并行执行。
4.单元更新单元(Cells-to-Cells)依赖:例如,在隐式LU-SGS计算过程中,当前网格单元需要采用邻居网格单元的更新值,例如图1中的计算单元c8的更新值需要单元c3的更新值,而计算单元c9需要单元c8的更新值,因此三个单元不能同时执行。
上述依赖特点对非结构网格CFD共享存储并行、向量化并行等细粒度并行性开发带来了巨大挑战。这些依赖特点的存在使得无法仅仅通过添加OpenMP(一种并行编程模型,它可以用于在共享内存系统中编写多线程并行代码)编译指导语句自动实现基于OpenMP的共享存储线程并行。为了消除数据依赖,实现线程并行、向量化并行等细粒度并行处理,通常需要对非结构网格CFD计算内核代码和数据结构进行调整。因此,本发明提出了一种基于递归剖分和重排序的并行计算方案。
下面将结合本发明实施例图中的附图,对本发明实施方式进行详细说明。
请参阅图2,在一个实施例中,提供了一种非结构网格CFD共享存储并行处理方法,包括如下处理步骤S12至S16:
S12,调用网格剖分工具按照仅剖分物理分割区的剖分策略,对待求解的航行器非结构网格逐层进行递归剖分并对剖分后生成的各个子网格分区内的网格实体进行重排序;网格实体包括非结构网格单元、网格面和网格结点。
可以理解,网格剖分工具可以采用本领域已有的各类网格剖分工具,例如但不限于METIS(一种用于图分割和多级图分析的软件包),它是一种广泛使用的工具,用于将大规模图形或网络分割为较小的部分,以便在并行计算、优化和数据挖掘等领域中进行更高效的计算。METIS的主要功能包括以下几个方面:1、图分割,METIS可以将图形划分为更小的子图,使得划分后的子图在不同的计算节点上进行并行处理,从而实现高性能计算。2、多级图分析,METIS可以将大规模图形分解为多个层次结构,形成多级图模型。这种分层结构可以用于优化问题的求解和图形的压缩表示。3、加权图分割,METIS可以处理带有权重的图形,根据权重信息进行分割,以在分割后的子图中获得更平衡的负载分配。
METIS在许多领域中得到广泛应用,例如计算机网络分析、并行计算、数据挖掘、电路布局和优化等,提供了丰富的算法和工具,使得处理大规模图形和网络的分割和分析变得更加高效和可行。
此外,除了METIS,还可以采用其他的网格剖分工具作为替代选择,例如以下一些常见的替代工具:1、Zoltan,是一个并行计算库,提供了多种分布式和并行环境下的网格剖分功能。它支持多种剖分算法和策略,并且适用于高性能计算和大规模并行计算环境。2、Scotch,是一个开源的图形分割和图形映射工具。它可以用于图形分割、网格剖分和任务映射等领域,具有良好的性能和扩展性。3、Gmsh,除了作为有限元网格生成器,Gmsh也提供了一些网格剖分的功能。它支持自适应剖分和多种剖分算法,可以生成高质量的非结构化网格。4、Triangle,虽然Triangle主要用于二维三角形网格的生成,但它也可以用于简单的二维剖分任务。5、TetGen,除了生成四面体网格,它也提供了一些用于剖分的功能。它支持约束剖分和自适应剖分,可以适应不同的需求。上述这些剖分工具都具有不同的特点和适用范围,本领域技术人员可以根据实际应用的具体需求选择合适的工具。另外,还有一些商业软件也提供了强大的网格剖分功能,如Ansys Meshing(用于有限元分析(FEA)和计算流体力学(CFD)等数值模拟的网格生成工具)、HyperMesh(专业的有限元前处理软件)等,它们在某些特定领域或应用中可能更加适用,因此也可以跟实际应用需要来进行选择。
仅剖分物理分割区的剖分策略是指普通子网格分区submesh不再分解,仅对物理分割区isolator)进行递归分解,直到分区网格数小于系统设定的特定阈值。重排序则是将每个子网格分区内的非结构网格单元、网格面和网格结点等网格实体,按照其所在分区进行重新排序编号,以使这些网格实体在其分区内的编号连续。重排序能够确保物理上位于同一部分的网格实体逻辑编号接近,一方面能够提升非规则数据访问的局部性,另一方面可以保持LU-SGS原有的串行计算性质。通过上述剖分处理,使得每次剖分后,除了分割区之外的所有子网格分区可以进行并行处理。
待求解的航行器非结构网格是指预先利用现有的计算机辅助设计(如CAD)工具或者其他几何建模工具对需要预测分析的航行器的几何形状进行建模后,在建立的几何模型上生成的当前待求解处理的非结构网格。该航行器的非结构网格的生成方式使用专业的CFD软件工具和相应的网格生成工具,可以但不限于采用如下常用方法:Delaunay三角剖分法,即通过将几何形状表面上的点进行连线生成三角形网格;Advancing Front方法,即通过从几何边界开始,向内部扩展边界,以生成网格;基于泊松方程的方法,即通过求解泊松方程来生成非结构网格。然后,还可以根据航行器的流体力学特性模拟的实际需要,设置相应的边界条件,例如包括入流边界条件、出流边界条件和壁面边界条件。这些边界条件将在求解器中用于模拟航行器的气动特性或流体力学特性。
航行器可以是本领域各类飞行器,例如各类有人驾驶飞机或无人驾驶飞机,航行器也可以是本领域各类水上航行工具,例如各类船舶,还可以是环境工程或者生物医学工程上的飞行器、管道穿梭器或其他需要考虑流体力学特性的器具。通过使用非结构网格,航行器所处流体域可以被分割成一系列小的单元或元素。每个单元都具有一组相关属性和特性,例如位置、速度、压力和温度等。这些属性在每个单元内部是连续变化的,并通过与相邻单元之间的插值或近似方法进行计算和传递。非结构网格可以适应航行器复杂的几何形状,因此可以描述包括曲线、曲面和非规则形状在内的真实流体域。这样可以更准确地模拟实际的流动现象。非结构网格中的每个单元都包含流体参数(如速度、压力、温度等)的值。这些参数的分布在网格的不同单元中可能是不均匀的,从而反映了流场中的物理变化和梯度。通过对非结构网格进行求解,可以从模拟结果中获得关于流体流动行为的信息,例如流速分布、压力分布、湍流特性、流体的行为和相互作用等数据信息。
以飞机气动力学上的应用为例,飞机的非结构网格可用于模拟飞机的气动特性,如升力、阻力和气动力矩等,它可以用于预测飞机的气动力学效应,例如翼型和机翼的气动性能,翼身组合的相互作用,襟翼和襟翼缝隙效应等。非结构网格的灵活性使得其能够模拟复杂的几何形状,例如燃油箱、发动机进气道和气动附件等。以车辆气动力学上的应用为例,非结构网格可以应用于车辆的气动力学研究,例如汽车、火车和卡车等,它可以用于预测车辆的阻力系数、升力和气动流场分布等。非结构网格的适应性使得能够模拟车辆的复杂几何形状,例如车身、车窗和后视镜等。以船舶流体动力学上的应用为例,其非结构网格用于预测船舶的阻力、流场分布和波浪相互作用等,非结构网格的灵活性使得能够模拟船舶的复杂几何形状,例如船体、推进器、舵和螺旋桨等。非结构网格允许对关键区域进行网格细化,以更好地捕捉流动的细节和变化。同时,非结构网格还能够应对复杂流动现象,如边界层分离、湍流流动和多相流动等。
S14,将每次递归剖分和重排序后的各个子网格分区存储在树数据结构MeshTree中,直到非结构网格的分区网格数小于特定阈值。
可以理解,在每一层的非结构网格的每次递归分解处理中,将每次递归分解获得的各个子网格分区的信息存储在树数据结构MeshTree中并继续递归逐层分解处理,直到针对该非结构网格的分区网格数小于特定阈值,该特定阈值可以根据针对当前非结构网格的分解目标需求来设置。分解完成后,最终可以构建成一颗完整的树数据结构MeshTree,该树的每个叶子节点对应原始网格的一部分,分别包含一个连续区间的网格单元、网格面和网格结点。
S16,根据设计的基于MeshTree遍历的并行算法,对构建的树数据结构MeshTree进行递归遍历的并行计算,得到航行器的特性预测结果。
可以理解,基于MeshTree遍历的并行算法是指针对非结构网格所属体系结构平台的类型,预先设定的适用于按照仅剖分物理分割区的剖分策略构建的树数据结构MeshTree的并行计算方法,以实现共享存储并行。基于MeshTree遍历的并行算法可以采用本领域不支持递归的并行的编程模型来实现。航行器的特性预测结果例如但不限于是飞机的气动力学效应预测结果,例如翼型和机翼的气动性能参数,翼身组合的相互作用参数,襟翼和襟翼缝隙效应参数等,或者是预测的车辆阻力系数、升力和气动流场分布等数据,又或者是预测的船舶阻力、流场分布和波浪相互作用等数据。
具体的,在实际非结构网格CFD的运用过程中,其前处理过程读入非结构网格后可以通过上述的步骤S12和S14实现网格剖分、重排序以及树数据结构MeshTree构建,在求解迭代过程中,针对具体的计算内核kernel的函数执行上述的步骤S16来自动实现共享存储并行。MeshTree通过参数控制网格分区的大小,用户可以根据处理器缓存cache大小设置适当的分区大小,以提升访存局部性,同时控制任务并发度。此外,MeshTree支持不同粗细粒度代码封装以实现计算内核kernel融合。计算内核kernel融合一方面可以增加计算密度,减少任务task调度开销,另一方面有利于改善计算内核kernel数据访存的时间局部性。
如图3所示,展示按照本申请上述方法进行剖分和重排序后的网格与原始网格的对比结果,其中,图3(a)为原始网格,图3(b)为按照本申请上述方法进行剖分和重排序后的网格。可以看到,与MPI并行剖分类似,对非结构网格剖分可以采用METIS等网格剖分工具。但与其不同的是,这里仅在逻辑上进行剖分(网格单元仍然在原始区域内进行统一编号),不需要ghost影响区,不需要输出剖分结果到文件中。通过剖分,构建非结构网格各个子网格分区(submesh)间的物理上的分割区(isolator),使得各个分区之间没有公共的网格单元(cell)、网格面(face)和结点(node),子分区之间的数据依赖得以消除。
上述非结构网格CFD共享存储并行处理方法,通过调用网格剖分工具按照仅剖分物理分割区的剖分策略,对待求解的航行器非结构网格逐层进行递归剖分并对剖分后生成的各个子网格分区内的网格实体进行重排序,并将每次递归剖分和重排序后的各个子网格分区存储在树数据结构MeshTree中,在该仅剖分物理分割区的剖分策略下,普通分区不再分解,仅对物理分割区不断进行递归分解,直到非结构网格的分区网格数小于特定阈值,然后根据设计的基于MeshTree遍历的并行算法,对构建的树数据结构MeshTree进行递归遍历的并行计算,从而高效实现非结构网格CFD的并行计算,高效输出航行器的特性预测结果。
相比较于现如今的网格剖分方法,上述方案通过设置物理分割区,使得各个分区之间的数据不存在冲突,可以实现同时消除多种循环的数据依赖,实现代码大面积的并行加速,大幅提高了非结构网格CFD的并行计算效率,从而实现非结构网格的大型仿真系统大规模并行。此外,在通用性上,一方面上述方案可集成封装为一个通用的并行代码库,能够很好地兼容空气动力学、水动力学、反应堆热工水力、发动机内流仿真以及结构力学和电磁学等多种应用领域软件的开发;另一方面这种高层次抽象增加了方法对应的软件代码的可读性和可维护性,开发人员不需要深入理解具体的应用领域计算方法就能很容易找到各个层次需要维护和开发的接口。
上述并行计算方法的设计,也使得了用户代码与软件代码分离。用户代码通过接口与软件代码进行交互,只需调用相应接口函数就可以使用的并行代码块,将串行代码并行化。这种软件架构使得软件中具体算法或实现代码的修改和扩展完全不影响其它模块,从而实现了更大程度的可扩展性。
此外,还支持多个层次的可扩展性。由于可以通过接口与实现的分离,因此可以在并行代码库中不断扩充新的实现代码,例如,网格剖分的方式、重排序的方式以及数据依赖消除的方式都可以扩充使用新的方法,而这种代码扩展完全不影响其他模块的功能和代码。
在一个实施例中,如图4所示,关于上述的步骤S12,具体可以包括如下处理步骤S121至S129::
S121,对于待求解的航行器非结构网格的每层网格,在当前次分解中调用网格剖分工具把非结构网格分解多个子网格分区;多个子网格分区中包括物理分割区(isolator),也即通子网格分区(submesh)不再分解,仅对物理分割区进行递归分解;
S123,对于每个子网格分区,遍历子网格分区内所有的网格单元并检测网格单元是否与其他子网格分区内的网格单元存在数据依赖;
S125,将存在数据依赖的网格单元及相应的网格面和网格点划分到物理分割区中;
S127,将不存在依赖的网格单元及相应的网格面和网格结点划分到对应的普通子网格分区;
S129,将各子网格分区内的网格实体按照所在分区进行重排序,使分区内网格实体的编号连续;物理分割区参与下次递归分解。
按照仅剖分物理分割区的剖分策略,对物理分割区isolator不断进行递归分解,直到分区网格数小于特定阈值。最终可以构建成如图5所示的一棵MeshTree,树的每个叶子节点对应原始网格的一部分,分别包含一个连续区间的网格单元、网格面和网格结点,其中,root表示根结点,firstCell表示第一个网格单元,lastCell表示最后一个网格单元;firstFace表示第一个网格面,lastFace表示最后一个网格面;firstNode表示第一个网格结点,lastNode表示最后一个网格结点。
进一步的,设计的基于MeshTree遍历的并行算法为采用OpenMP parallel for或者CUDA等不支持递归的编程模型对树数据结构MeshTree的树结点进行遍历,调度执行各叶子结点。
可以理解,OpenMP parallel for编程模型是一种并行计算模型,它基于for循环,将for循环分成很多段分配给多个线程计算,从而加快计算运行的速度。可以让系统默认分配线程个数,也可以使用num_threads子句指定线程个数。计算任务划分为多个子任务并在最后将结果聚合起来。它适用于解决需要递归地划分问题、并行执行子任务,然后将结果组合起来的并行计算问题。在fork-join编程模型中,程序开始时执行一个主任务,该主任务负责将问题划分为更小的子任务。
(Compute Unified Device Architecture)是NVIDIA提供的用于并行计算的编程模型和平台。它允许开发人员利用NVIDIA GPU的强大并行计算能力来加速计算密集型任务。开发人员可以使用CUDA编程模型来利用GPU的并行计算能力。通过将计算任务划分为多个并行线程,并优化内存访问模式,可以实现高性能的并行计算。在CUDA编程中,还可以使用CUDA库来加速常见的数学、图形和信号处理等任务。通过前述设计这个遍历策略可以让上述方法在GPU上也能运行。
在一个实施例中,进一步的,对树数据结构MeshTree的树结点进行递归遍历的过程中,采用的遍历顺序包括forward遍历顺序。
可以理解,根据计算内核kernel实际的数据依赖的不同,上述并行算法可以选择不同的遍历顺序。在本实施例中,采用forward遍历顺序,即在遍历过程中先并行遍历各个普通子网格分区submesh,所有普通子网格分区submesh执行完毕后再遍历物理分割区isolator,如此,可以有效适用于大部分有数据依赖的计算内核kernel,例如CFD通量计算。
在一个实施例中,进一步的,对树数据结构MeshTree的树结点进行递归遍历的过程中,采用的遍历顺序包括backward遍历顺序。
可以理解,在本实施例中,采用backward遍历顺序,即在遍历过程中先遍历物理分割区isolator,待物理分割区isolator执行完毕之后再并行遍历各个普通子网格分区submesh,如此,适用于部分需要后向遍历的有数据依赖的计算内核kernel,例如CFD中的LU-SGS计算。
在一个实施例中,进一步的,对树数据结构MeshTree的树结点进行递归遍历的过程中,采用的遍历顺序包括noDependence顺序。
可以理解,在本实施例中,采用noDependence顺序,即可以同时并行执行所有的子分区(包括所有普通子网格分区submesh和物理分割区isolator),如此,适用于没有数据依赖的计算内核kernel。以上三种不同遍历方式,对应不同的任务并行方式和数据依赖情况,可以保证系统软件的运行效率和准确性。
进一步的,对树数据结构MeshTree的树结点进行递归遍历的过程中,输入参数为实际的计算内核的函数指针。可以理解,在并行计算的执行过程中,用户可以根据需求调用树数据结构MeshTree的执行功能,并将实际的计算内核kernel的函数指针作为参数输入该执行功能对应的模块,该模块即可实现共享存储并行。例如,以无粘通量计算过程(InviscidFlux)共享存储并行为例,这里InviscidFlux内部代码没有任何修改,只需要调用MeshTree接口便可实现InviscidFlux内部的kernel融合并自动实现共享存储并行。
应该理解的是,虽然图2和图4流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且图2和图4的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
请参阅图6,在一个实施例中,提供一种非结构网格CFD共享存储并行处理系统100,包括剖分排序模块11、树构建模块13和树执行模块15。其中,剖分排序模块11用于调用网格剖分工具按照仅剖分物理分割区的剖分策略,对待求解的航行器非结构网格逐层进行递归剖分并对剖分后生成的各个子网格分区内的网格实体进行重排序;网格实体包括非结构网格单元、网格面和网格结点。树构建模块13用于将每次递归剖分和重排序后的各个子网格分区存储在树数据结构MeshTree中,直到非结构网格的分区网格数小于特定阈值。树执行模块15用于根据设计的基于MeshTree遍历的并行算法,对构建的树数据结构MeshTree进行递归遍历的并行计算,得到航行器的特性预测结果。
上述非结构网格CFD共享存储并行处理系统100,通过调用网格剖分工具按照仅剖分物理分割区的剖分策略,对待求解的航行器非结构网格逐层进行递归剖分并对剖分后生成的各个子网格分区内的网格实体进行重排序,并将每次递归剖分和重排序后的各个子网格分区存储在树数据结构MeshTree中,在该仅剖分物理分割区的剖分策略下,普通分区不再分解,仅对物理分割区不断进行递归分解,直到非结构网格的分区网格数小于特定阈值,然后根据设计的基于MeshTree遍历的并行算法,对构建的树数据结构MeshTree进行递归遍历的并行计算,从而高效实现非结构网格CFD的并行计算,高效输出航行器的特性预测结果。
相比较于现如今的网格剖分方法,上述方案通过设置物理分割区,使得各个分区之间的数据不存在冲突,可以实现同时消除多种循环的数据依赖,实现代码大面积的并行加速,大幅提高了非结构网格CFD的并行计算效率,从而实现非结构网格的大型仿真系统大规模并行。此外,在通用性上,一方面上述方案可集成封装为一个通用的并行代码库,能够很好地兼容空气动力学、水动力学、反应堆热工水力、发动机内流仿真以及结构力学和电磁学等多种应用领域软件的开发;另一方面这种高层次抽象增加了方法对应的软件代码的可读性和可维护性,开发人员不需要深入理解具体的应用领域计算方法就能很容易找到各个层次需要维护和开发的接口。
在一个实施例中,上述剖分排序模块11具体还可以用于:对于待求解的航行器非结构网格的每层网格,在当前次分解中调用网格剖分工具把非结构网格分解多个子网格分区;多个子网格分区中包括物理分割区;对于每个子网格分区,遍历子网格分区内所有的网格单元并检测网格单元是否与其他子网格分区内的网格单元存在数据依赖;将存在数据依赖的网格单元及相应的网格面和网格点划分到物理分割区中;将不存在依赖的网格单元及相应的网格面和网格结点划分到对应的普通子网格分区;将各子网格分区内的网格实体按照所在分区进行重排序,使分区内网格实体的编号连续;物理分割区参与下次递归分解。
在一个实施例中,设计的基于MeshTree遍历的并行算法为采用OpenMP parallelfor或者CUDA编程模型对树数据结构MeshTree的树结点进行遍历,调度执行各叶子结点。
在一个实施例中,对树数据结构MeshTree的树结点进行递归遍历的过程中,采用的遍历顺序包括forward遍历顺序。
在一个实施例中,对树数据结构MeshTree的树结点进行递归遍历的过程中,采用的遍历顺序包括backward遍历顺序。
在一个实施例中,对树数据结构MeshTree的树结点进行递归遍历的过程中,采用的遍历顺序包括noDependence顺序。
在一个实施例中,对树数据结构MeshTree的树结点进行递归遍历的过程中,输入参数为实际的计算内核的函数指针。
关于非结构网格CFD共享存储并行处理系统100的具体限定,可以参见上文中非结构网格CFD共享存储并行处理方法的相应限定,在此不再赘述。上述非结构网格CFD共享存储并行处理系统100中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于具备数据处理功能的设备中,也可以软件形式存储于前述设备的存储器中,以便于处理器调用执行以上各个模块对应的操作,前述设备可以是但不限于本领域已有的各型数据计算与处理设备。
在一个实施例中,还提供一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现如下处理步骤:调用网格剖分工具按照仅剖分物理分割区的剖分策略,对待求解的航行器非结构网格逐层进行递归剖分并对剖分后生成的各个子网格分区内的网格实体进行重排序;网格实体包括非结构网格单元、网格面和网格结点;将每次递归剖分和重排序后的各个子网格分区存储在树数据结构MeshTree中,直到非结构网格的分区网格数小于特定阈值;根据设计的基于MeshTree遍历的并行算法,对构建的树数据结构MeshTree进行递归遍历的并行计算,得到航行器的特性预测结果。
可以理解,上述计算机设备除上述述及的存储器和处理器外,还包括其他本说明书未列出的软硬件组成部分,具体可以根据不同应用场景下的具体计算机设备的型号确定,本说明书不再一一列出详述。
在一个实施例中,处理器执行计算机程序时还可以实现上述非结构网格CFD共享存储并行处理方法各实施例中增加的步骤或者子步骤。
在一个实施例中,还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现如下处理步骤:调用网格剖分工具按照仅剖分物理分割区的剖分策略,对待求解的航行器非结构网格逐层进行递归剖分并对剖分后生成的各个子网格分区内的网格实体进行重排序;网格实体包括非结构网格单元、网格面和网格结点;将每次递归剖分和重排序后的各个子网格分区存储在树数据结构MeshTree中,直到非结构网格的分区网格数小于特定阈值;根据设计的基于MeshTree遍历的并行算法,对构建的树数据结构MeshTree进行递归遍历的并行计算,得到航行器的特性预测结果。
在一个实施例中,计算机程序被处理器执行时,还可以实现上述非结构网格CFD共享存储并行处理方法各实施例中增加的步骤或者子步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线式动态随机存储器(RambusDRAM,简称RDRAM)以及接口动态随机存储器(DRDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可做出若干变形和改进,都属于本申请保护范围。因此本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种非结构网格CFD共享存储并行处理方法,其特征在于,包括步骤:
调用网格剖分工具按照仅剖分物理分割区的剖分策略,对待求解的航行器非结构网格逐层进行递归剖分并对剖分后生成的各个子网格分区内的网格实体进行重排序;所述网格实体包括非结构网格单元、网格面和网格结点;
将每次递归剖分和重排序后的各个子网格分区存储在树数据结构MeshTree中,直到所述非结构网格的分区网格数小于特定阈值;
根据设计的基于MeshTree遍历的并行算法,对构建的所述树数据结构MeshTree进行递归遍历的并行计算,得到航行器的特性预测结果。
2.根据权利要求1所述的非结构网格CFD共享存储并行处理方法,其特征在于,调用网格剖分工具按照仅剖分物理分割区的剖分策略,对待求解的航行器非结构网格逐层进行递归剖分并对剖分后生成的各个子网格分区内的网格实体进行重排序的步骤,包括:
对于待求解的所述航行器非结构网格的每层网格,在当前次分解中调用所述网格剖分工具把非结构网格分解多个子网格分区;多个所述子网格分区中包括物理分割区;
对于每个所述子网格分区,遍历所述子网格分区内所有的网格单元并检测所述网格单元是否与其他子网格分区内的网格单元存在数据依赖;
将存在数据依赖的所述网格单元及相应的网格面和网格点划分到所述物理分割区中;
将不存在依赖的所述网格单元及相应的网格面和网格结点划分到对应的普通子网格分区;
将各所述子网格分区内的所述网格实体按照所在分区进行重排序,使分区内所述网格实体的编号连续;所述物理分割区参与下次递归分解。
3.根据权利要求2所述的非结构网格CFD共享存储并行处理方法,其特征在于,设计的基于MeshTree遍历的并行算法为采用OpenMP parallel for或者CUDA编程模型对所述树数据结构MeshTree的树结点进行遍历,调度执行各叶子结点。
4.根据权利要求3所述的非结构网格CFD共享存储并行处理方法,其特征在于,对所述树数据结构MeshTree的树结点进行递归遍历的过程中,采用的遍历顺序包括forward遍历顺序。
5.根据权利要求3所述的非结构网格CFD共享存储并行处理方法,其特征在于,对所述树数据结构MeshTree的树结点进行递归遍历的过程中,采用的遍历顺序包括backward遍历顺序。
6.根据权利要求3所述的非结构网格CFD共享存储并行处理方法,其特征在于,对所述树数据结构MeshTree的树结点进行递归遍历的过程中,采用的遍历顺序包括noDependence顺序。
7.根据权利要求4至6任一项所述的非结构网格CFD共享存储并行处理方法,其特征在于,对所述树数据结构MeshTree的树结点进行递归遍历的过程中,输入参数为实际的计算内核的函数指针。
8.一种非结构网格CFD共享存储并行处理系统,其特征在于,包括:
剖分排序模块,用于调用网格剖分工具按照仅剖分物理分割区的剖分策略,对待求解的航行器非结构网格逐层进行递归剖分并对剖分后生成的各个子网格分区内的网格实体进行重排序;所述网格实体包括非结构网格单元、网格面和网格结点;
树构建模块,用于将每次递归剖分和重排序后的各个子网格分区存储在树数据结构MeshTree中,直到所述非结构网格的分区网格数小于特定阈值;
树执行模块,用于根据设计的基于MeshTree遍历的并行算法,对构建的所述树数据结构MeshTree进行递归遍历的并行计算,得到航行器的特性预测结果。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7任一项所述的非结构网格CFD共享存储并行处理方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7任一项所述的非结构网格CFD共享存储并行处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310777952.3A CN116663369A (zh) | 2023-06-28 | 2023-06-28 | 非结构网格cfd共享存储并行处理方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310777952.3A CN116663369A (zh) | 2023-06-28 | 2023-06-28 | 非结构网格cfd共享存储并行处理方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116663369A true CN116663369A (zh) | 2023-08-29 |
Family
ID=87719124
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310777952.3A Pending CN116663369A (zh) | 2023-06-28 | 2023-06-28 | 非结构网格cfd共享存储并行处理方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116663369A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117056090A (zh) * | 2023-10-13 | 2023-11-14 | 中国空气动力研究与发展中心计算空气动力研究所 | 非结构隐式lusgs线程并行方法、设备、介质及系统 |
-
2023
- 2023-06-28 CN CN202310777952.3A patent/CN116663369A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117056090A (zh) * | 2023-10-13 | 2023-11-14 | 中国空气动力研究与发展中心计算空气动力研究所 | 非结构隐式lusgs线程并行方法、设备、介质及系统 |
CN117056090B (zh) * | 2023-10-13 | 2023-12-26 | 中国空气动力研究与发展中心计算空气动力研究所 | 非结构隐式lusgs线程并行方法、设备、介质及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220300673A1 (en) | Computing Techniques for Three-Dimensional Modeling and Design Analysis | |
Gerhold | Overview of the hybrid RANS code TAU | |
Xu et al. | Collaborating CPU and GPU for large-scale high-order CFD simulations with complex grids on the TianHe-1A supercomputer | |
Li et al. | GPU-accelerated preconditioned iterative linear solvers | |
Secco et al. | Component-based geometry manipulation for aerodynamic shape optimization with overset meshes | |
Economon et al. | Towards high-performance optimizations of the unstructured open-source SU2 suite | |
JP6372119B2 (ja) | マルチコンポーネントコンピュータ流体力学シミュレーション | |
Capizzano | Automatic generation of locally refined Cartesian meshes: Data management and algorithms | |
CN116663369A (zh) | 非结构网格cfd共享存储并行处理方法和系统 | |
Zhang et al. | A GPU-accelerated implicit meshless method for compressible flows | |
CN116720410A (zh) | 基于递归剖分和重排序的非结构网格并行处理方法和装置 | |
Mostafazadeh Davani et al. | Unsteady Navier-Stokes computations on GPU architectures | |
Ma et al. | A parallel meshless dynamic cloud method on graphic processing units for unsteady compressible flows past moving boundaries | |
Tsiakas | Development of shape parameterization techniques, a flow solver and its adjoint, for optimization on GPUs. Turbomachinery and external aerodynamics applications | |
Sanchez-Roman et al. | An euler solver accelerator in FPGA for computational fluid dynamics applications | |
Backhaus et al. | Modularization of high-fidelity static aeroelastic MDO enabling a framework-based optimization approach for HPC | |
Gao et al. | A multi-level parallel tie-dye algorithm for auto-CFD | |
Xu et al. | Parallelizing a high-order CFD software for 3D, multi-block, structural grids on the TianHe-1A supercomputer | |
Parikh | Application of a scalable, parallel, unstructured-grid-based Navier-Stokes solver | |
Zehner et al. | Acceleration of the data-parallel lower-upper relaxation time-integration method on GPU for an unstructured CFD solver | |
Il’in | The integrated computational environment for optimization of complex systems | |
Kumar et al. | Mass Conservation in Sharp Interface Immersed Boundary Method—A GPGPU Accelerated Implementation | |
Zhang et al. | Numerical optimization algorithm for unsteady flows of rotor based on web service. | |
Alhubail et al. | Improving the strong parallel scalability of CFD schemes via the swept domain decomposition rule | |
Schönfeld et al. | COUPL and its use within hybrid mesh CFD applications |
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 |