CN113900808A - 一种基于任意多面体非结构网格的mpi并行数据结构 - Google Patents

一种基于任意多面体非结构网格的mpi并行数据结构 Download PDF

Info

Publication number
CN113900808A
CN113900808A CN202111176696.XA CN202111176696A CN113900808A CN 113900808 A CN113900808 A CN 113900808A CN 202111176696 A CN202111176696 A CN 202111176696A CN 113900808 A CN113900808 A CN 113900808A
Authority
CN
China
Prior art keywords
grid
connection relation
mpi
data structure
global
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
Application number
CN202111176696.XA
Other languages
English (en)
Inventor
张兵
周汉生
马培勇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hefei University of Technology
Original Assignee
Hefei University of Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hefei University of Technology filed Critical Hefei University of Technology
Priority to CN202111176696.XA priority Critical patent/CN113900808A/zh
Publication of CN113900808A publication Critical patent/CN113900808A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • G06F30/28Design optimisation, verification or simulation using fluid dynamics, e.g. using Navier-Stokes equations or computational fluid dynamics [CFD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2113/00Details relating to the application field
    • G06F2113/08Fluids
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2119/00Details relating to the type or aim of the analysis or the optimisation
    • G06F2119/14Force analysis or force optimisation, e.g. static or dynamic forces

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Fluid Mechanics (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及一种基于任意多面体非结构网格的MPI并行数据结构,使用多面体非结构网格对流场区域进行网格划分,按照划分网格的网格元素进行全局编号,并记录不同网格元素之间的连接关系,其中,网格元素包括点、线、面、单元,通过自定义分区程序对网格进行分区生成若干网格块,并将网格块分配至不同的进程且每个进程分配至少一个网格块,创建并存储进程内不同网格元素的分布式列表,将网格元素的分布式列表结合全局的网格连接关系生成当前进程中的网格连接关系,并使用稀疏矩阵CSR方式存储当前进程内的网格连接关系;本发明的MPI并行数据结构,能够降低单CPU存储负荷保证CFD程序求解规模,同时可以保持较高的并行效率。

Description

一种基于任意多面体非结构网格的MPI并行数据结构
技术领域
本发明属于算流体力学计算领域,尤其是MPI并行数据结构领域。
背景技术
随着飞行器外形日益复杂,网格规模日益扩大,同时高精度格式需要巨大的计算开销,传统单处理器的串行求解将很难满足实际需求,因此流体力学CFD的实际应用需要借助高性能的并行计算方法,CFD中常用的并行编程模型主要包括OpenMP、CUDA等共享存储模型和MPI等分布式存储模型;由于CFD数值求解中,网格单元之间的求解是耦合的,因此直接使用OpenMP等共享存储模型其并行效率很低,同时对于大规模网格,单机内存可能无法存储所有网格数据;MPI等分布式存储模型配合自定义分区工具(如Metis)的使用,将整体网格的求解划分到多个进程中,通过MPI函数实现进程之间的通信。这种分布式存储的方式很适合CFD的并行计算;尽管MPI并行编程模型很适合CFD的并行计算,但是程序的结构设计比较复杂,具体的对于网格元素如何分布式表示,网格元素之间的连接关系如何分布式存储,是实现并行的难点,尤其对于任意多面体非结构网格,其网格信息较于结构网格更难处理。
发明内容
为了解决上述的问题,本发明通过以下技术方案来实现上述目的:
一种基于任意多面体非结构网格的MPI并行数据结构,包括以下步骤,
S1、使用多面体非结构网格对流场区域进行网格划分;
S2、按照划分网格的网格元素进行全局编号,并记录不同网格元素之间的连接关系,其中,网格元素包括点、线、面、单元;
S3、通过自定义分区程序对网格进行分区生成若干网格块,并将网格块分配至不同的进程且每个进程分配至少一个网格块,其中,进程数为m,m≥1;
S4、创建并存储第i进程内不同网格元素的分布式列表,其中,1≤i≤m;
S5、将网格元素的分布式列表结合全局的网格连接关系生成当前i进程中的网格连接关系,并使用稀疏矩阵CSR方式存储i进程内的网格连接关系,其中,1≤i≤m。
作为本发明的进一步优化方案,所述网格元素进行全局编号的步骤为:
S21、由网格元素的点坐标和点、线之间的连接关系,确定点和线的全局编号;
S22、采用网格拓扑结构依次确定网格元素中面的全局编号和单元的全局编号。
作为本发明的进一步优化方案,所述网格分区的方式包括多级递归二分法和多级k路划分,其中,若分区个数小于8时,采用多级递归二分法;若分区个数大于等于8时,采用多级k路划分。
作为本发明的进一步优化方案,所述创建i进程中分布式列表的步骤包括:
S41、在每个进程中生成单元局部编号和全局编号的映射数组;
S42、根据网格拓扑结构在编号映射数组中增加虚拟单元编号,其中,虚拟单元指的是与当前进程相邻的单元;
S43、创建单元的分布式列表,然后生成其他网格元素的分布式列表。
作为本发明的进一步优化方案,所述创建单元的分布式列表的内容包括用于进程之间通信的单元,该单元包括网格块内边界单元和虚拟单元。
作为本发明的进一步优化方案,所述存储第i进程内不同网格元素的分布式列表的内容包括网格元素的全局编号、当前进程中局部编号、在相邻进程中的局部编号。
作为本发明的进一步优化方案,所述进程之间的通信采用MPI并行通信方式,且每个进程均遍历所有网格块;当所遍历的网格块属于当前进程时,则向邻居网格块所在进程发送数据;当所遍历的网格块属于其邻居时,则从邻居网格块所在进程接收数据;其中,发送和接受数据使用MPI非阻塞式发送接受函数,实际计算部分在MPI后台进行。
作为本发明的进一步优化方案,所述进程内的网格连接关系包括进程内网格元素的分布式列表、CSR存储信息、连接关系局部编号对应的全局编号。
作为本发明的进一步优化方案,所述稀疏矩阵CSR方式存储i进程内的单元和面之间网格连接关系的实现方式包括记录单元周围面数量的一维数组及记录单元周围面进程内局部编号的一维数组。
本发明的有益效果在于:
1)本发明通过采用Metis分区和MPI并行通信的策略,等效于将任务分成多个子任务,可以有效降低单CPU存储负荷,保证CFD程序求解规模;
2)MPI通信模式使用非阻塞式通信,可以实现计算与通信的重叠,保持较高的并行效率;
3)分布式列表和网格连接关系分布式CSR存储方式,适应于任意多面体非结构网格,可以有效提高并行CFD程序的运行;并且按行压缩稀疏矩阵CSR方式可以减少网格连接关系所占存储空间。
附图说明
图1是本发明中多面体非结构网格的MPI并行数据结构实现的流程图;
图2为本发明中分布式数据的产生与存储示意图;
图3为本发明中进程内单元属性分类图;
具体实施方式
下面结合附图对本申请作进一步详细描述,有必要在此指出的是,以下具体实施方式只用于对本申请进行进一步的说明,不能理解为对本申请保护范围的限制,该领域的技术人员可以根据上述申请内容对本申请作出一些非本质的改进和调整。
如图1至图3所示的一种基于任意多面体非结构网格的MPI并行数据结构,通过网格信息的分布式存储,提高网格求解规模并且提升并行求解效率;
其中,如图1所示的并行数据结构实现步骤包括:
步骤1:使用任意多面体非结构网格对所研究的流场区域进行网格划分;
步骤2:创建点、线、面、单元等网格元素的编号信息,根据网格拓扑结构,记录网格元素之间连接关系;
步骤3:使用Metis分区程序包对网格进行分区,根据为当前求解任务设置的进程数,一个进程分配一个或多个网格块;
步骤4:运行CFD并行程序,为各进程创建网格元素的分布式列表;
步骤5:根据点、线、面、单元等网格元素的分布式列表数据以及全局网格连接关系,通过分布式CSR存储方式存储进程内网格连接关系;
具体的,步骤S1如图2所示包括:使用网格划分软件对所研究流场使用非结构网格进行网格划分,网格数据保持成自定义后缀.emesh的网格文件;网格文件内容主要包括:①网格点的坐标;②网格线与点的连接关系,即网格线两端的点编号;③边界的网格线编号;优选的可以选择发明人研究团队自主研发的CFD解算器EasyCFD求解流场;
步骤S2、将网格划分软件中生成的网格文件(后缀为.emesh)导入CFD解算器中,根据程序前处理模块功能,生成点、线、面、单元等网格元素的全局编号信息,并记录网格元素之间的连接关系;其中,该网格元素之间的连接关系包括:单元与单元、单元与面、单元与点、面与线、线与点等连接关系;
步骤S3、使用自定义分区程序包对网格进行分区,根据为当前求解任务设置的进程数,一个进程分配一个或多个网格块;例如、网格的分区可通过调用Metis程序库中的METIS_PartGraphRecursive或METIS_PartGraphKway来实现;其中,若分区个数小于8时,采用多级递归二分法,即METIS_PartGraphRecursive函数;若分区个数大于等于8时,采用多级k路划分,即METIS_PartGraphKway函数;
如图3所示具体的,进程内的网格单元为原始网格的部分网格块的网格单元的集合,进程内网格单元属性包括:内部单元、边界单元和虚拟单元三类,①内部单元:网格块内部,仅在当前进程中参与计算;②边界单元:网格块边界,参与当前进程和相邻进程的计算,在相邻进程中为虚拟单元;③虚拟单元:与边界单元相邻的其他进程单元,需要参与到当前进程计算,在相邻进程中为边界单元;
步骤S4、建并存储第i进程内不同网格元素的分布式列表,其中,创建i进程中分布式列表的步骤包括:
S41、在每个进程中生成单元局部编号和全局编号的映射数组;
S42、根据网格拓扑结构在编号映射数组中增加虚拟单元编号,其中,虚拟单元指的是与当前进程相邻的单元;
S43、创建单元的分布式列表,然后生成其他网格元素的分布式列表;
具体的,步骤S43中创建单元的分布式列表的内容,如表1所示;
①进程信息:当前MPI进程编号mpi_comm_rank_和参与MPI通信的总进程数mpi_comm_size_;
②网格元素数量信息:全局网格元素数量size_global、局部网格元素的数量size_local_和虚拟网格元素数量size_ghost_;
③全局和局部编号映射信息:网格块内网格元素和虚拟网格元素局部编号对应的全局编号item_list_、网格块内网格元素全局编号对应的局部编号item_idx_map_、虚拟网格元素全局编号对应的局部编号ghost_idx_map_;
④用于进程之间通信的网格元素信息:内部网格块边界网格元素编号ghosts_of_cur_和虚拟网格元素编号ghosts_of_adj_;
⑤进程内编号重新排序次数reordered_times_;
表1分布式列表存储内容(以单元为例)
Figure BDA0003295427180000071
其中,用于进程之间通信的网格元素信息(以单元为例),包括用于进程之间通信的单元,该单元包括网格块内边界单元和虚拟单元;存储第i进程内不同网格元素的分布式列表的存储信息包括(以边界单元为例):①全局编号。②当前进程中局部编号。③在相邻进程中的局部编号(在相邻进程中,该边界单元为虚拟单元);
进程内编号重新排序的方法为RCM算法,经过RCM排序后稀疏矩阵非零元素将集中在对角线附近,对于CFD线性化后的方程组,使用排序后的编号可以将雅克比矩阵非零元素集中在对角线附近;
此外,进程之间的通信采用MPI并行通信方式,且每个进程均遍历所有网格块;当所遍历的网格块属于当前进程时,则向邻居网格块所在进程发送数据;当所遍历的网格块属于其邻居时,则从邻居网格块所在进程接收数据;并且发送和接受数据使用MPI非阻塞式发送接受函数,实际计算部分在MPI后台进行;
步骤S5,将网格元素的分布式列表结合全局的网格连接关系生成当前i进程中的网格连接关系,并使用稀疏矩阵CSR方式存储i进程内的网格连接关系,其中,1≤i≤m;
具体的,进程内的网格连接关系分布式存储内容主要包括(以单元面连接关系为例):以表2为例;
①分布式列表信息:进程内单元的分布式列表dl_row_和面的分布式列表dl_col_;
②CSR存储信息:记录单元周围面数量的一维数组offset和单元周围面编号的一维数组data;
③连接关系局部编号对应的全局编号global_edge_idx。表2为分布式网格连接关系存储内容(以单元面连接关系为例);
表2分布式网格连接关系存储内容(以单元面连接关系为例)
Figure BDA0003295427180000081
稀疏矩阵CSR方式存储i进程内的单元和面之间网格连接关系的实现方式包括记录单元周围面数量的一维数组及记录单元周围面进程内局部编号的一维数组;
本发明中采用网格分区和MPI并行通信的策略,等效于将任务分成多个子任务,可以有效降低单CPU存储负荷,保证CFD程序求解规模;其中,MPI通信模式使用非阻塞式通信,可以实现计算与通信的重叠,保持较高的并行效率;
MPI并行数据结构主要表现为使用分布式列表的方式存储进程内网格元素,使用分布式CSR方式存储网格连接关系,按行压缩稀疏矩阵CSR方式可以减少网格连接关系所占存储空间,因此,这种分布式结构和CSR存储方式可以有效降低单CPU存储负荷,保证CFD程序求解规模,适应于任意多面体非结构网格,可以有效提高并行CFD程序;
同时采用MPI_WINDOWS技术实现虚拟元素数据的更新,可有效提高具备RDMA特性的计算机集群上的运行性能。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。

Claims (9)

1.一种基于任意多面体非结构网格的MPI并行数据结构,其特征在于:包括以下步骤,
S1、使用多面体非结构网格对流场区域进行网格划分;
S2、按照划分网格的网格元素进行全局编号,并记录不同网格元素之间的连接关系,其中,网格元素包括点、线、面、单元;
S3、通过自定义分区程序对网格进行分区生成若干网格块,并将网格块分配至不同的进程且每个进程分配至少一个网格块,其中,进程数为m,m≥1;
S4、创建并存储第i进程内不同网格元素的分布式列表,其中,1≤i≤m;
S5、将网格元素的分布式列表结合全局的网格连接关系生成当前i进程中的网格连接关系,并使用稀疏矩阵CSR方式存储i进程内的网格连接关系,其中,1≤i≤m。
2.根据权利要求1所述的一种基于任意多面体非结构网格的MPI并行数据结构,其特征在于:所述网格元素进行全局编号的步骤为:
S21、由网格元素的点坐标和点、线之间的连接关系,确定点和线的全局编号;
S22、采用网格拓扑结构依次确定网格元素中面的全局编号和单元的全局编号。
3.根据权利要求2所述的一种基于任意多面体非结构网格的MPI并行数据结构,其特征在于:所述网格分区的方式包括多级递归二分法和多级k路划分,其中,若分区个数小于8时,采用多级递归二分法;若分区个数大于等于8时,采用多级k路划分。
4.根据权利要求3所述的一种基于任意多面体非结构网格的MPI并行数据结构,其特征在于:所述创建的第i进程中分布式列表的步骤包括:
S41、在每个进程中生成单元局部编号和全局编号的映射数组;
S42、根据网格拓扑结构在编号映射数组中增加虚拟单元编号,其中,虚拟单元指的是与当前进程相邻的单元;
S43、创建单元的分布式列表,然后生成其他网格元素的分布式列表。
5.根据权利要求4所述的一种基于任意多面体非结构网格的MPI并行数据结构,其特征在于:所述创建单元的分布式列表的内容包括用于进程之间通信的单元,该单元包括网格块内边界单元和虚拟单元。
6.根据权利要求5所述的一种基于任意多面体非结构网格的MPI并行数据结构,其特征在于:所述存储第i进程内不同网格元素的分布式列表的内容包括网格元素的全局编号、当前进程中局部编号、在相邻进程中的局部编号。
7.根据权利要求6所述的一种基于任意多面体非结构网格的MPI并行数据结构,其特征在于:所述进程之间的通信采用MPI并行通信方式,且每个进程均遍历所有网格块;当所遍历的网格块属于当前进程时,则向邻居网格块所在进程发送数据;当所遍历的网格块属于其邻居时,则从邻居网格块所在进程接收数据;其中,发送和接受数据使用MPI非阻塞式发送接受函数,实际计算部分在MPI后台进行。
8.根据权利要求7所述的一种基于任意多面体非结构网格的MPI并行数据结构,其特征在于:所述进程内的网格连接关系包括进程内网格元素的分布式列表、CSR存储信息、连接关系局部编号对应的全局编号。
9.根据权利要求8所述的一种基于任意多面体非结构网格的MPI并行数据结构,其特征在于:所述稀疏矩阵CSR方式存储i进程内的单元和面之间网格连接关系的实现方式包括记录单元周围面数量的一维数组及记录单元周围面进程内局部编号的一维数组。
CN202111176696.XA 2021-10-09 2021-10-09 一种基于任意多面体非结构网格的mpi并行数据结构 Pending CN113900808A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111176696.XA CN113900808A (zh) 2021-10-09 2021-10-09 一种基于任意多面体非结构网格的mpi并行数据结构

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111176696.XA CN113900808A (zh) 2021-10-09 2021-10-09 一种基于任意多面体非结构网格的mpi并行数据结构

Publications (1)

Publication Number Publication Date
CN113900808A true CN113900808A (zh) 2022-01-07

Family

ID=79190803

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111176696.XA Pending CN113900808A (zh) 2021-10-09 2021-10-09 一种基于任意多面体非结构网格的mpi并行数据结构

Country Status (1)

Country Link
CN (1) CN113900808A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116225722A (zh) * 2023-05-08 2023-06-06 中国空气动力研究与发展中心计算空气动力研究所 流场变量的通信方法、装置、终端设备及存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116225722A (zh) * 2023-05-08 2023-06-06 中国空气动力研究与发展中心计算空气动力研究所 流场变量的通信方法、装置、终端设备及存储介质

Similar Documents

Publication Publication Date Title
Shen et al. Escher: A CNN accelerator with flexible buffering to minimize off-chip transfer
JP5271699B2 (ja) 粒子の相互作用の計算のためのゾーン法
Peterka et al. A configurable algorithm for parallel image-compositing applications
WO2022037257A1 (zh) 卷积计算引擎、人工智能芯片以及数据处理方法
CN110516316B (zh) 一种间断伽辽金法求解欧拉方程的gpu加速方法
CN111124675A (zh) 一种面向图计算的异构存内计算设备及其运行方法
CN108491924B (zh) 一种面向人工智能计算的神经网络数据串行流水处理装置
JP4778558B2 (ja) 有限要素法と境界要素法による結合方程式の高速演算処理方法
CN113900808A (zh) 一种基于任意多面体非结构网格的mpi并行数据结构
Maqsood et al. Energy and communication aware task mapping for MPSoCs
CN113901746A (zh) 一种用于向量代数的硬件加速器的设计方法
CN113239591A (zh) 面向dcu集群的大规模有限元网格并行分区的方法及装置
CN116303219A (zh) 一种网格文件的获取方法、装置及电子设备
JP2009505299A (ja) 粒子相互作用を計算するための並行計算アーキテクチャ
CN113297537B (zh) 一种稀疏结构化三角方程组求解的高性能实现方法和装置
CN106846457B (zh) 一种ct切片数据可视化重构的八叉树并行构造方法
Yang et al. A parallel method for matrix inversion based on gauss-jordan algorithm
CN104484404A (zh) 一种改善分布式文件系统中地理栅格数据文件处理方法
Zheng et al. Parallel matrix multiplication algorithm based on vector linear combination using MapReduce
CN115034360A (zh) 三维卷积神经网络卷积层的处理方法和处理装置
CN116185378A (zh) 计算图的优化方法、数据处理方法及相关产品
Sharma et al. A Heterogeneous Chiplet Architecture for Accelerating End-to-End Transformer Models
Owczarz et al. Parallel matrix computations in air pollution modelling
CN107529638B (zh) 线性求解器的加速方法、存储数据库及gpu系统
CN217821651U (zh) 三维卷积神经网络卷积层的处理装置和处理器

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