CN116820772B - 网格并行读取方法、装置、终端设备和可读存储介质 - Google Patents
网格并行读取方法、装置、终端设备和可读存储介质 Download PDFInfo
- Publication number
- CN116820772B CN116820772B CN202310808080.2A CN202310808080A CN116820772B CN 116820772 B CN116820772 B CN 116820772B CN 202310808080 A CN202310808080 A CN 202310808080A CN 116820772 B CN116820772 B CN 116820772B
- Authority
- CN
- China
- Prior art keywords
- grid
- topology
- partition
- array
- information
- 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
- 238000000034 method Methods 0.000 title claims abstract description 383
- 238000005192 partition Methods 0.000 claims abstract description 235
- 238000004364 calculation method Methods 0.000 claims abstract description 64
- 238000000638 solvent extraction Methods 0.000 claims abstract description 60
- 238000003491 array Methods 0.000 claims abstract description 35
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 34
- 241001229889 Metis Species 0.000 claims description 19
- 230000006870 function Effects 0.000 claims description 14
- 238000009795 derivation Methods 0.000 claims 2
- 238000010586 diagram Methods 0.000 description 18
- 238000012545 processing Methods 0.000 description 12
- 230000011218 segmentation Effects 0.000 description 12
- 238000004891 communication Methods 0.000 description 11
- 230000000694 effects Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 238000004088 simulation Methods 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 3
- 238000007781 pre-processing Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 238000002485 combustion reaction Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 108091026890 Coding region Proteins 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000002910 structure generation Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Multi Processors (AREA)
Abstract
本申请提供了一种网格并行读取方法、装置、终端设备和可读存储介质。获取设置的分区进程数和计算进程数,在相应的步骤中启动分区进程、计算进程;各分区进程分别读取输入网格的信息,来确定该进程处理的网格节点、网格面和网格单元的几何数组,以及拓扑数组;基于网格分区算法对输入网格进行分区,以形成与计算进程数相同数量的分区;每一个计算进程分别读取分区编号对应的网格单元,根据对应的网格单元的信息生成网格拓扑。上述流程通过分区进程和计算进程并行执行,实现了内存的分布式占用。该方法采用多进程方式来对输入网格进行读取、切分并生成并行计算用的数据结构,大大减少了对网格节点性能的要求,并且提高了效率。
Description
技术领域
本申请涉及网格处理技术领域,具体涉及一种网格并行读取方法、装置、终端设备和可读存储介质。
背景技术
网格是多物理场仿真软件中不可或缺的组成部分,在数值计算和有限元分析中扮演着至关重要的角色。网格读取是仿真计算必要的前处理步骤之一,一般指将基于硬盘载体的网格文件中的数据读取到内存中,并根据已有的几何和拓扑,推导出仿真计算需要的、未定义的几何和拓扑。
在现有商用/开源软件进行大规模计算时,网格读取在编程实现中可以细分为如下几步:网格扫描(从文件中读取数据)、网格分区(将网格整体结构划分为不同子区域)、拓扑生成(生成点、线、面等实体的拓扑关系)、几何计算(计算网格体积、网格面面积、面法矢等)。在现有仿真软件中,目前最常采用的方法是网格串行读取方法,将上述任务在一个进程上完成,然后通过进程通信将子分区信息发送到其他进程。然而,网格读取的多个子步骤都是IO密集且计算密集的任务,串行读取对服务器的单节点内存占用巨大,且计算缓慢,尤其是对于亿级别以上的大规模网格读取基本上难以完成。
发明内容
有鉴于此,本申请实施例中提供了一种网格并行读取方法、装置、终端设备和可读存储介质,以克服现有技术的网格串行读取对服务器的单节点内存占用巨大,且计算缓慢的问题。
第一方面,本申请实施例提供了一种网格并行读取方法,该方法包括:
获取设置的分区进程数和计算进程数,根据所述分区进程数启动相应的分区进程;
各分区进程分别读取网格划分的计算进程数和输入网格的信息,并根据所述输入网格的信息来确定相应的网格节点、网格面和网格单元的几何数组,以及拓扑数组;
各分区进程根据所述网格节点、网格面和网格单元的几何数组,以及所述拓扑数组,并基于网格分区算法对输入网格进行分区,以形成与所述计算进程数相同数量的分区;在分区完成后每一个网格单元都对应一个分区编号;
根据所述计算进程数启动相应的计算进程,各计算进程分别读取相应的分区编号对应的网格单元,并根据对应的网格单元的信息生成网格拓扑;
其中,每个分区进程和计算进程中的步骤并行执行。
第二方面,本申请实施例提供了一种网格并行读取装置,该装置包括:
信息获取模块,用于获取设置的分区进程数和计算进程数,根据所述分区进程数启动相应的分区进程;
网格信息读取模块,用于各分区进程分别读取网格划分的计算进程数和输入网格的信息,并根据所述输入网格的信息来确定相应的网格节点、网格面和网格单元的几何数组,以及拓扑数组;
网格分区模块,用于各分区进程根据所述网格节点、网格面和网格单元的几何数组,以及所述拓扑数组,并基于网格分区算法对输入网格进行分区,以形成与所述计算进程数相同数量的分区;在分区完成后每一个网格单元都对应一个分区编号;
网格拓扑生成模块,用于根据所述计算进程数启动相应的计算进程,各计算进程分别读取相应的分区编号对应的网格单元,并根据对应的网格单元的信息生成网格拓扑;
其中,每个分区进程和计算进程中的步骤并行执行。
第三方面,本申请实施例提供了一种终端设备,包括:存储器;一个或多个处理器,与所述存储器耦接;一个或多个应用程序,其中,一个或多个应用程序被存储在存储器中并被配置为由一个或多个处理器执行,一个或多个应用程序配置用于执行上述第一方面提供的网格并行读取方法。
第四方面,本申请实施例提供了一种计算机可读取存储介质,计算机可读取存储介质中存储有程序代码,程序代码可被处理器调用执行上述第一方面提供的网格并行读取方法。
本申请实施例提供的网格并行读取方法、装置、终端设备和可读存储介质,首先获取设置的分区进程数和计算进程数,根据分区进程数启动相应的分区进程;各分区进程分别读取网格划分的计算进程数和输入网格的信息,并根据输入网格的信息来确定相应的网格节点、网格面和网格单元的几何数组,以及拓扑数组;各分区进程根据网格节点、网格面和网格单元的几何数组,以及拓扑数组,并基于网格分区算法对输入网格进行分区,以形成与计算进程数相同数量的分区;在分区完成后每一个网格单元都对应一个分区编号;根据计算进程数启动相应的计算进程,各计算进程分别读取相应的分区编号对应的网格单元,并根据对应的网格单元的信息生成网格拓扑;其中,每个分区进程和计算进程中的步骤并行执行。
本申请实施例提供的网格并行读取方法采用多进程方式来对输入网格进行分区读取以及切分,并生成并行计算用的数据结构方便后续计算,大大减少了对节点性能的要求,并且提高了效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的网格并行读取方法的应用场景示意图;
图2为本申请一个实施例提供的网格并行读取方法的流程示意图;
图3为本申请一个实施例提供的输入网格的结构示意图;
图4为本申请一个实施例提供的分区进程的结构示意图;
图5为本申请一个实施例提供的计算进程结构示意图;
图6为本申请一个实施例提供的切分后形成的网格分区的网格拓扑结构示意图;
图7为本申请一个实施例提供的700万网格单头部发动机燃烧室算例网格模型示意图;
图8为本申请一个实施例中提供的1亿网格全环发动机燃烧室算例网格模型示意图;
图9为本申请一个实施例中提供的网格并行读取装置的结构示意图;
图10为本申请一个实施例中提供的终端设备的结构示意图;
图11为本申请一个实施例中提供的计算机可读存储介质的结构示意图。
具体实施方式
下面将对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为了更详细说明本申请,下面结合附图对本申请提供的一种网格并行读取方法、装置、终端设备和计算机可读存储介质,进行具体地描述。
请参考图1,图1示出了本申请实施例提供的网格并行读取方法的应用场景(即计算机集群结构)的示意图,该应用场景包括本申请实施例提供的计算机集群100,该计算机集群100包含了多个节点102。各个节点102可以是服务器、服务器组以及终端设备、超级计算机等设备实现,或这些设备中的多种构成的分布式处理系统实现。节点102之间通过点对点网络通信连接以实现相互信息收发。其中构建集群的基本方法是Beowulf集群,它可以用几台个人计算机构建,以产生传统高性能计算的经济高效的替代方案。
此外,终端设备可以是具有显示屏的各种电子设备,包括但不限于智能手机和计算机设备,其中计算机设备可以是台式计算机、便携式计算机、膝上型计算机、平板电脑等设备中的至少一种。本领域技术人员可以知晓,上述终端设备的数量可以更多或更少。比如上述终端设备可以仅为几个,或者上述终端设备为几十个或几百个,或者更多数量,本申请实施例对终端设备的数量和类型不加以限定。另外,节点可以用来执行本申请实施例中提供的一种网格并行读取方法。
网格包括结构化网格和非结构化网格,按照规模来分网格可以分为网格和大规模网格,其中大规模网格通常是百万级以上级别规模。现有商用/开源软件进行大规模计算时,网格读取在编程实现中可以细分为如下几步:网格扫描(从文件中读取数据)、网格分区(将网格整体结构划分为不同子区域)、拓扑生成(生成点、线、面等实体的拓扑关系)、几何计算(计算网格体积、网格面面积、面法矢等)。前处理步骤中的多个步骤都是IO密集且计算密集的任务,如果使用单核进行网格划分任务,对服务器的单节点内存占用巨大,且计算缓慢,因此网格读取和划分等步骤需要并行加速来解决性能问题。目前主要有两种网格读取策略,分别是串行读取和分布式读取策略。
其中串行读取、进程通信策略通过一个进程读取单个网格文件并生成与整个模型对应的完整拓扑结构,完成网格切分过程,并将生成网格数据结构和邻接拓扑结构等完整信息,通过进程通信发送到其它进程。该策略需要一个串行的计算步骤将其转化为分布式网格。处理大规模网格时用于读取网格的单个进程存在内存占用过大、处理速度慢的问题,且单进程无法对网格文件的读取步骤进行并行加速。算例验证表明,即便只保存网格分区所需的拓扑数组信息,常规服务器/超算节点处理的单进程网格规模上限也仅在亿量级。
分布式网格生成和读取策略实施方式如下。并行环境下,为了降低单核负载,一些仿真软件采用了并行通过多个文件并行存储和读取网格的思路。这种网格需要提前生成好并行和分区信息,其网格拓扑和邻接关系会预先存储在文件中。
该方式实施的前提条件是,网格生成软件需要支持预分区,生成分布式网格,且仿真软件支持对相应的分区信息格式进行识别和读取。就目前而言,多数仿真软件需要提供配套的网格生成软件,才能支持对分布式网格进行生成和读取;这种方法需要网格文件在生成和存储时就是分布式网格文件,对于网格生成的要求更高。就目前而言,仅小部分网格生成软件具备在网格生成时就完成并行分区和分为多个文件的能力,应用该策略会减少网格软件的候选方案;由于分布式网格是提前绘制的,其分区数、邻接信息已经确定,这就限制了并行核数的选择。在该策略下,为保证并行效率,预分区数需要满足是计算核数整数倍,不便于灵活调整计算核数。
基于此,本申请实施例中提供了一种网格并行读取方法。请参阅图2,图2示出了本申请实施例提供的一种网格并行读取方法的流程示意图,以该方法应用于图1中的网格节点为例进行说明,包括以下步骤:
步骤S110,获取设置的分区进程数和计算进程数,根据分区进程数启动相应的分区进程;
具体而言,可以采用多进程方式来处理网格,通过多进程并行库提供的接口完成并行调度、进程通信,并通过共享文件读写函数实现不同进程对同一文件的读写过程。
可选地,可以采用基于MPI多进程方式来实施对网格处理。
其中,分区进程数指本申请实施例中进行网格扫描和分区过程使用的进程数量,分区进程是用于网格扫描和分区的进程;计算进程数(又称为总计算进程数)指仿真并行计算用到的进程数,即对分区后形成的网格进行网格拓扑计算的进程数。
步骤S120,各分区进程分别读取网格划分的计算进程数和输入网格的信息,并根据输入网格的信息来确定相应的网格节点、网格面和网格单元的几何数组,以及拓扑数组。
具体来说,每个分区进程根据设置信息读取网格文件(即输入网格)的基本信息,例如网格节点、网格面、单元等网格实体的总数量,以及网格划分用的总进程数(即计算进程数),从而来确定各分区进程需要读取的网格节点、网格面和网格单元的几何数组,以及要读取的拓扑数组。
其中,网格节点、网格面和网格单元的几何数组通常是指网格节点、网格面和网格单元的坐标或位置信息。拓扑数组包括网格点-单元拓扑(即体点拓扑信息)、网格面-点拓扑(即面点拓扑信息)和网格面-单元拓扑(即面体拓扑信息)。
需要说明的是任意一个分区读取网格节点、网格面和网格单元的几何数组,以及拓扑数组通常是输入网格整个网格节点、网格面和网格单元的几何数组,以及拓扑数组中的部分内容。
进一步地,给出了一种确定网格节点、网格面和网格单元的几何数组,以及拓扑数组的实施方式,详细描述如下:
在一个实施例中,输入网格的信息包括总网格单元数、总网格节点数、总网格面数和网格单元的体体拓扑信息;在执行步骤S120,根据输入网格的信息来确定相应的网格节点、网格面和网格单元的几何数组,以及拓扑数组,包括:
步骤S1,根据总网格单元数、总网格节点数、总网格面数和网格单元的体体拓扑信息来确定每个分区进程对应的网格单元、网格节点以及网格面。在一个实施例中,根据总网格单元数、总网格节点数、总网格面数和网格单元的体体拓扑信息来确定每个分区进程对应的网格单元、网格节点以及网格面,包括:各分区进程对输入网格进行扫描,得到总网格单元数、总网格节点数、总网格面数和网格单元的体体拓扑信息;各分区进程按照总网格单元数对输入网格进行平均分配,并根据总网格单元数、总网格节点数、总网格面数和网格单元的体体拓扑信息来确定每个分区进程对应的网格单元、网格节点以及网格面;其中每个分区进程得到相同数量的网格单元。
具体而言,输入网格通常包括多个网格单元,其中每个网格单元具有网格节点、网格面,那么每个网格单元具有网格编号,网格节点编号和网格面编号。因此输入网格的信息包括总网格单元数、总网格节点数、总网格面数、点以及拓扑信息;其中拓扑信息通常是指拓扑结构或拓扑数组;可以包括但不限于网格单元-单元拓扑信息(体体拓扑信息),网格单元-点拓扑信息(即体点拓扑信息)、网格面-点拓扑信息(即面点拓扑信息)、网格面两侧单元拓扑信息(即面体拓扑信息)等。各个分区进程对输入网格进行扫描,即可得到总网格单元数、总网格节点数、总网格面数以及拓扑信息。
然后各分区进程按照总网格单元数对输入网格进行平分(即平均分配),以使得每个分区进程可以得到相同数量的网格单元。在对输入网格进行平分时,每个分区进行可以按照网格单元编码顺序来依次读取相邻编号的网格单元(例如第一分区进程读取编号为1-10的网格单元,第二分区进程读取编号为11-20的网格),也可以是随机读取,只要保证最终每个分区进程读取的网格单元数量相同即可。在平分过程中,各分区进程根据总网格单元数、总网格节点数、总网格面数和网格单元的体体拓扑信息来确定每个分区进程对应的网格单元、网格节点以及网格面。
需要说明的是,给分区进程在对输入网格进行分配时,可以按照平均分配方法,也可以按照其他分配方法,即每个分区进程读取的网格单元数量可以相同也可以不相同,具体可以根据实际应用需要进行调整。
步骤S2,每一个分区进程根据对应的网格单元、网格节点和网格面来确定相应的网格节点、网格面和网格单元的几何数组,以及拓扑数组。
在一个实施例中,每一个分区进程根据对应的网格单元、网格节点和网格面来确定相应的网格节点、网格面和网格单元的几何数组,以及拓扑数组,包括:每一个分区进程根据对应的网格单元、网格节点和网格面来确定每个网格节点、网格面、网格单元的坐标,以及体点拓扑信息、面点拓扑信息和面体拓扑信息,以形成网格节点、网格面、网格单元的几何数组,以及拓扑数组。
其中,各分区进程可以读取对应的网格单元、网格节点以及网格面,然后将可以根据各自对应的网格单元、网格节点和网格面从而来确定其对应的面点拓扑和面体拓扑,记为拓扑数组。
为了便于理解,给出一个详细的实施例。以一个20网格单元构成的输入网格为例,详细介绍本申请实施例中的网格处理方法的原理和算法步骤。假定计算用网格为Fluent(.msh)文本格式,网格文件包含的已知拓扑为网格节点位置、面点拓扑(组成各个网格面的网格节点数组)、面体拓扑(网格面左右单元),根据仿真计算需求,需要额外生成的拓扑信息为体面拓扑、体体拓扑、体点拓扑;其中网格单元为5×4长方形网格,设置计算进程数为4,分区进程数为2。请参照图3所示,输入网格包括20个网格单元(即总单元数为20),总网格节点数为30,总网格面数为49;分区进程为两个,分别为0号分区进程(即切分进程0)和1号分区进程(即切分进程1);该2个分区进程根据平分原则确定每个进程读取的网格节点、网格面、网格单元,那么0号分区进程对应0-9号网格单元、0-14号网格节点、0-24号网格面;1号分区进程对应10-19号网格单元、15-29号网格节点、25-48号网格面。同时2个分区进程将可以根据各自对应的网格单元、网格节点和网格面从而来确定其对应的面点拓扑和面体拓扑,记为拓扑数组。
可选地,还可以对应的面点拓扑和面体拓扑转存到二进制文件中,构造完整拓扑数组对应的二进制文件。
步骤S130,各分区进程根据网格节点、网格面和网格单元的几何数组;以及拓扑数组,并基于网格分区算法对输入网格进行分区,以形成与计算进程数相同数量的分区;其中输入网格包含多个网格单元,在分区完成后每一个网格单元都对应一个分区编号。
具体地,每个分区进程根据要读取的网格节点、网格面以及网格单元的几何数组,以及拓扑数组。此外可以根据拓扑数组中的面体拓扑(例如网格面左右单元)数组转化为单元-单元拓扑(即体体拓扑)信息或数组,然后将其转化成网格分区算法的输入数组,并调用网格分区算法完成网格分区,其中网格分区的数量与计算进程数量相等,即有几个计算进程数量就分成几个网格分区,每一个网格分区中都包含多个网格单元。此外,可以对网格分区进行编号,对于同一个网格分区中的网格单元采用相同的网格分区编号进行标记。
接下来,给出了一种采用网格分区算法对输入网格进行分区的实施例,具体实施方式如下:
在一个实施例中,基于网格分区算法对输入网格进行分区,包括:采用网格分区算法metis或parmetis来对输入网格进行分区。
在一个实施例中,采用网格分区算法metis或parmetis来对输入网格进行分区,包括:各分区进程分别根据拓扑数组中的面体拓扑计算出体体拓扑数组,以形成metis或parmetis的输入数组vtxdist、xadj以及adjncy;各分区进程根据输入数组vtxdist、xadj以及adjncy调用metis或parmetis来对输入网格进行分区。
具体来说,对网格进行分区可以使用开源网格分区算法库metis来分区小规模网格(单个分区进程),使用并行网格分区库parmetis来分区大规模网格(多个分区进程)。metis/parmetis是由Karypis Lab开发的一个具有强大功能的开源图分区软件包,主要用于实现图划分、网格划分以及稀疏矩阵存储优化等并行任务分区。
metis/parmetis功能需要给定每个单元的邻接单元,输入格式是CSR格式,包含三个数组:vtxdist(parmetis特有,保存进程网格数偏移量,规定了各进程上的网格数)、xadj(进程上的网格邻单元数偏移量,规定了各网格相邻单元数)、adjncy(单数组压缩存储单元-单元拓扑信息)。具体为可以根据拓扑数组中的面体拓扑计算出体体拓扑数组,然后根据体体拓扑数组转化为metis/parmetis输入数组,调用metis/parmetis完成网格分区,生成每个网格对应的网格块/进程编号(parts数组),并使用MPI-IO写入到单个分区结果文件中。
执行metis/parmetis函数获取分区信息,输出的形式为parts标号数组,是一个与网格数量等长的数组,标记了每个网格单元所属的part编号。网格分区完成后,每个进程会读取与自身进程号相等的所有网格并构造为局部计算域,邻接区域则通过交界网格面生成通信信息(邻进程号、邻网格块编号)以及虚拟网格用于后续的数据通信。
为了便于理解,给出一个详细的实施例。该实施例以图3中示意的输入网格为基础,采用计算进程数为4,分区进程数为2进行分区。那么2个分区进程各生成10个网格单元对应的体体拓扑信息或数组,作为parmetis输入信息;2个分区进程根据步骤S120中提供的单元拓扑信息,调用metis/parametis生成分区信息(每个网格单元对应的分区编号,即parts编码)将网格分区成4个分区,此时每个网格单元都保存一个分区编号(0-3)。基于此,parmetis的输入信息(详见图4)以及输出parts数组(详见图5)如下:Parmetis输入信息
切分进程0
vtxdist:0,10,20
xadj:0,2,5,8,10,13,17,21,24,27,31
adjncy:4,1,0,5,2,1,6,3,2,7,0,8,5,1,4,9,
6,2,5,10,7,3,6,11,4,12,9,5,8,13,10
切分进程1
vtxdist:0,10,20
xadj:0,4,7,10,14,18,21,23,26,29,31
adjncy:6,9,14,11,7,10,15,8,16,13,9,12,
17,14,10,13,18,15,11,14,19,12,17,13,
16,18,14,17,19,15,18
Parmetis输出信息
切分进程0
parts:0,0,0,1,0,01,1,2,2
Parmetis输出信息
切分进程2
parts:1,1,2,2,3,3,2,3,3,3
步骤S140,根据计算进程数启动相应的计算进程,各计算进程分别读取相应的分区编号对应的网格单元,并根据对应的网格单元的信息生成网格拓扑;
其中,每个分区进程和计算进程中的步骤并行执行。
在一个实施例中,每一个计算进程分别读取相应的分区编号对应的网格单元,并根据这些网格单元的信息生成网格拓扑,包括:每一个计算进程读取与计算进程的编号相同的分区编号对应的各网格单元;每一个计算进程遍历对应的各网格单元相关的面体拓扑信息,根据面体拓扑信息计算网格相关参数,以形成网格拓扑。
具体地,计算进程是用于计算分区后形成网格的网格拓扑的进程。在对输入网格进行分区完成后,每一个计算进程分别读取与进程编号对应的局部网格信息,并生成局部网格块对应的网格拓扑。首先会对所有的49个全局单元网格面进行扫描,先根据网格面两侧的分区编号,将这些网格面分类为本进程的内部网格面、交界网格面、边界网格面和非本计算进程网格面,然后根据本计算进程内部网格面(两侧网格单元parts号均为0)、交界网格面(仅存在一侧网格单元,该网格单元parts编号为0)、边界网格面(仅存在一侧网格单元,该网格单元parts编号为0)的网格面点和面体拓扑信息构造完整的网格拓扑信息。
为了便于理解,给出一个详细的实施例。请参照图6,0号计算进程读取所有分区编号为0(part 0,包含全局编号为0、1、2、4、5的网格单元)的网格单元,并根据这些网格单元相关的已知拓扑生成网格拓扑,在与0号相邻的网格面上则生成并行通信用的虚拟单元和邻接关系等信息,用于后续的并行计算,至此完成局部网格构造。
需要说明的是,1号,2号,3号以及4号计算进程的网格拓扑构造过程与0号计算进程的类似,在此不在赘述。
本申请实施例提供的网格并行读取方法,首先获取设置的分区进程数和计算进程数,根据分区进程数启动相应的分区进程;各分区进程分别读取网格划分的计算进程数和输入网格的信息,并根据输入网格的信息来确定相应的网格节点、网格面和网格单元的几何数组,以及拓扑数组;各分区进程根据网格节点、网格面和网格单元的几何数组,以及拓扑数组,并基于网格分区算法对输入网格进行分区,以形成与计算进程数相同数量的分区;在分区完成后每一个网格单元都对应一个分区编号;根据计算进程数启动相应的计算进程,各计算进程分别读取相应的分区编号对应的网格单元,并根据对应的网格单元的信息生成网格拓扑;其中,每个分区进程和计算进程中的步骤并行执行。
本申请实施例提供的网格并行读取方法采用多进程方式来对输入网格进行分区读取以及切分,并生成并行计算用的数据结构方便后续计算,大大减少了对节点性能的要求,并且提高了效率。
另外,该方法中网格扫描步骤中支持基于文本/二进制网格格式进行并行网格读取,需要网格单元间的拓扑关系作为网格分区的输入数组。并行网格文件扫描过程中,每个分区进程仅会读取保存在文件中的网格拓扑完整数组的一部分;然而,后续步骤中需要对该分布式数组进行随机读取(有可能需要访问由其他的分区进程扫描中获取的信息),在该过程中,需要为了不同的分区进程间实现数据共享,为了减少数据通信和网格扫描次数,本文提出了将文本文件中的拓扑数组通过并行IO存储在同一个二进制文件中,来构造进程间数据互通的“伪数组”,从而代替在内存中进行数据通信的存储的方式,降低大规模下的内存占用;并且使用多进程并行IO实现进程间的信息共享方式,需要反复读取文件中的信息。然而,大量的IO操作会极大地拖慢程序地运行速度。为了解决上述性能问题,本实施例提出了一种仿照CPU和内存间构造缓存进行数据暂存的方式,构造了文件的“内存缓存”,即每次对文件进行随机访问时,会读取一段而不是单个数据,在对完整数组对应的文件进行顺序扫描时,如果再次访问上一次访问附近位置的数据,可以直接从内存中读取而无需再次调用IO函数。而通常的,多次调用二进制读取函数进行访问单个数据的开销远大于单次读取一个较长的数据段的开销;而对于网格软件而言,网格划分一般沿某个网格节点或网格面通过生长来生成新网格,因此网格几何位置附近通常也是顺序编号大小的附近,因此“缓存命中率”较高。基于上述两点,使用该方式可以很大地降低IO函数调用频率,提高读取效率。
此外,本申请实施例中可以采用基于网格面拓扑关系的并行完整网格拓扑生成技术。在对基于网格面拓扑关系存储的网格文件(Fluent、OpenFoam)进行扫描以及网格分区过程后,已知信息为面点拓扑、面体拓扑以及体分区信息,这些信息都通过并行IO写在文件中。基于上述信息,本文提出了一种中包含一种并行的网格数据结构生成技术,在对完整的拓扑数组进行扫描时,会先根据网格面两侧的单元分区号网格面拓扑信息分类为本进程的内部网格面、交界网格面、边界网格面和非本进程网格面,根据前三者构造子区域的其它拓扑关系,而在读取到两侧单元的进程号均不是本进程时,则会跳过该网格面单元,这样就避免了一个进程读取并保存其它进程的信息,在保证高性能和单个进程内存占用较低的前提下,生成并行计算用的网格数据结构。
进一步地,本申请实施例还提供了一种基于体拓扑关系的并行完整网格拓扑生成技术,可应用于基于体拓扑构造网格数据结构(gmsh、cgns、tecplot)的网格文件。基于已知的体点拓扑信息,需要构造网格面拓扑关系,但是由于一个网格面是具有左右单元的,常规扫描方式构造网格面数组会识别到同一个网格面两次,需要额外的操作去除重复的网格面。本文提出了一种中包含一种并行的网格数据结构生成技术,在对网格单元进行扫描时,通过有序列表暂存网格面拓扑,并统计网格面的扫描次数。在扫描完成后转化为数组,并根据网格面被进程内扫描的次数判断网格面是本进程的内部网格面、交界网格面、边界网格面或是非本进程网格面,使得网格面寻找和子区域识别是同时进行的,可以提升计算效率。
此外,本方法提供了保证负载均衡的并行预分区网格二次分区策略,可应用于预分区网格的读取和二次分区。部分仿真算法为了实现不同区域的不同算法耦合计算(如流固耦合等),在网格中通过预分区,提前规定了子区域。本文提出了一种多区网格分区算法,可以在已知的多区网格基础上,对不同网格数大小的预分区分别进行分区的算法,可以在保留预分区网格的初始界网格面的前提下,根据并行进程数对各个预分区域进行并行分区,在总体上保证负载均衡通信量最小的前提下,实现预分区网格的二次分区。
效果实施例
为了验证本申请实施例提供的网格并行读取方法的有效性,利用传统网格读取方法和本申请实施例提供的网格并行读取方法进行比较。传统网格读取方法的前处理步骤是单进程串行执行的,所以会包含一个进程读入所有网格并生成全局拓扑的流程,可以预见的是,在与本申请实施例提供网格并行读取方法的同等条件下(指网格格式、拓扑生成算法以及目标拓扑格式与本方案相同的情况下),计算速度与本申请实施例提供网格并行读取方法中分区块数和分区进程数均为1的情况是类似的,可以作为参考的计算条件。
本申请实施例提供网格并行读取方法的测试环境为某国产超算平台,每个计算节点内存64GB。本算法测试的网格文件格式为某商用仿真软件Fluent(.msh)文本格式,不带预分区的单区单文件网格格式。从计算密集任务的角度看,本方案的计算密集任务大体简化分为三个步骤:网格扫描(从网格文件读入并扫描,完成网格分区输入数组构造)、网格分区(并行调用metis/parmetis完成分区,并输出分区结果文件)、拓扑生成(各进程根据分区结果生成局部拓扑)。以下会根据仿真前处理案例不同进程数下的计算耗时,来分析本方案算法的实际效果。
测试算例1为单头部燃烧室算例,网格量约700W,算例1网格模型示意图请参照图7所示。在本实施例中分析了1-16分区进程和1-16计算进程下对于网格读取效率的影响。
表1为算例1中采用传统网格读取方法网格读取时间与分区块数关系示意表
表2为算例1中采用本申请实施例提供的网格并行读取方法网格读取时间与分区块数关系示意表
经过分析发现网格读取中的计算密集任务可以分为网格扫描、网格分区、拓扑生成三个步骤。由于输入网格文件为文本格式,网格扫描步骤需要串行对整个网格文件进行扫描以获取网格特征信息,受到并行读取的影响并不大;分区任务总耗时并不长,且由于分区任务量受到单块网格上的网格单元/网格面数、以及生成的交接网格面等多个效应影响,增加分区进程数可以明显减少网格分区步骤的时间;拓扑生成是网格读取最耗时的步骤(总核数较小时下可以达到总时长的80%以上),该流程的复杂度与单块网格上的网格单元/网格面数是直接相关的,本方案的并行拓扑生成算法加速效应明显;并且本申请实施例的并行拓扑生成算法对拓扑生成步骤具备明显加速效应。700W网格算例中使用16计算进程对比于单计算进程,本方案的分区生成拓扑算法的并行效率可以达到约70%。
在相同计算进程的条件下,增加分区进程数可以明显减少网格分区步骤的时间。700W给定16计算进程时,使用16个分区进程对比于单分区进程,并行效率可以达到约45%。
请参照图8,测试算例2为全环燃烧室算例,网格量约1亿,算例2网格模型示意图如下。本实施例分析了4-128分区进程和4-64计算进程下对于网格读取效率的影响。
表3为算例2采用传统网格读取方法网格读取时间与分区块数关系示意表
表4为算例2采用本申请实施例提供的网格并行读取方法网格读取时间与分区块数关系示意表
经过分析发现,1亿网格算例下使用128计算进程对比于4计算进程,本方案的分区生成拓扑算法的并行效率可以达到约35%。1亿网格算例下给定64计算进程时,16分区进程对比于4分区进程,本方案的分区生成拓扑算法的并行效率可以达到约68%。
另外,由于节点内存限制,1亿分区进程数至少需要给定4个不同计算节点上的分区进程,可以证明对网格进行分区任务时,单节点内存是无法容纳亿量级的分区文件输入数组的,而申请实施例提供的网格并行读取方法可以通过增加切分进程数、并将用于切分的进程给定在不同的计算节点的方式,解决大规模下网格分区任务的内存瓶颈。
应该理解的是,虽然图2的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且图2中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
上述本申请公开的实施例中详细描述了一种网格并行读取方法,对于本申请公开的上述方法可采用多种形式的设备实现,因此本申请还公开了对应上述方法的网格并行读取装置,下面给出具体的实施例进行详细说明。
请参阅图9,为本申请实施例公开的一种网格并行读取装置,主要包括:
信息获取模块910,用于获取设置的分区进程数和计算进程数,根据分区进程数启动相应的分区进程;
网格信息读取模块920,用于各分区进程分别读取网格划分的计算进程数和输入网格的信息,并根据输入网格的信息来确定相应的网格节点、网格面和网格单元的几何数组,以及拓扑数组;
网格分区模块930,用于各分区进程根据网格节点、网格面和网格单元的几何数组,以及拓扑数组,并基于网格分区算法对输入网格进行分区,以形成与计算进程数相同数量的分区;在分区完成后每一个网格单元都对应一个分区编号;
网格拓扑生成模块940,用于根据计算进程数启动相应的计算进程,各计算进程分别读取相应的分区编号对应的网格单元,并根据对应的网格单元的信息生成网格拓扑;其中,每个分区进程和计算进程中的步骤并行执行。
在一个实施例中,输入网格的信息包括总网格单元数、总网格节点数、总网格面数和网格单元的体体拓扑信息;网格信息读取模块920,用于根据总网格单元数、总网格节点数、总网格面数和网格单元的体体拓扑信息来确定每个分区进程对应的网格单元、网格节点以及网格面;每一个分区进程根据对应的网格单元、网格节点和网格面来确定相应的网格节点、网格面和网格单元的几何数组,以及拓扑数组。
在一个实施例中,网格信息读取模块920,用于每一个分区进程根据对应的网格单元、网格节点和网格面来确定每个网格节点、网格面、网格单元的坐标,以及体点拓扑信息、面点拓扑信息和面体拓扑信息,以形成网格节点、网格面和网格单元的几何数组,以及拓扑数组。
在一个实施例中,网格信息读取模块920,用于各分区进程对输入网格进行扫描,得到总网格单元数、总网格节点数、总网格面数和网格单元的体体拓扑信息;各分区进程按照总网格单元数对输入网格进行平均分配,并根据总网格单元数、总网格节点数、总网格面数和网格单元的体体拓扑信息来确定每个分区进程对应的网格单元、网格节点以及网格面;其中每个分区进程得到相同数量的网格单元。
在一个实施例中,网格分区模块930,用于采用网格分区算法metis或parmetis来对输入网格进行分区。
在一个实施例中,网格分区模块930,用于各分区进程分别根据拓扑数组中的面体拓扑计算出体体拓扑数组,以形成metis或parmetis的输入数组vtxdist、xadj以及adjncy;各分区进程根据输入数组vtxdist、xadj以及adjncy调用metis或parmetis来对输入网格进行分区。
在一个实施例中,网格拓扑生成模块940,用于每一个计算进程读取与计算进程的编号相同的分区编号对应的各网格单元;每一个计算进程遍历对应的各网格单元相关的面体拓扑信息,根据面体拓扑信息计算网格相关参数,以形成网格拓扑。。
关于网格并行读取装置的具体限定可以参见上文中对于方法的限定,在此不再赘述。上述装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于终端设备中的处理器中,也可以以软件形式存储于终端设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
请参考图10,图10其示出了本申请实施例提供的一种终端设备的结构框图。该终端设备1000可以是计算机设备。本申请中的终端设备1000可以包括一个或多个如下部件:处理器1002、存储器1004以及一个或多个应用程序,其中一个或多个应用程序可以被存储在存储器1004中并被配置为由一个或多个处理器1002执行,一个或多个应用程序配置用于执行上述应用于网格并行读取方法实施例中所描述的方法。
处理器1002可以包括一个或者多个处理核。处理器1002利用各种接口和线路连接整个终端设备1000内的各个部分,通过运行或执行存储在存储器1004内的指令、程序、代码集或指令集,以及调用存储在存储器1004内的数据,执行终端设备1000的各种功能和处理数据。可选地,处理器1002可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable Logic Array,PLA)中的至少一种硬件形式来实现。处理器1002可集成中央处理器(Central Processing Unit,CPU)、图形处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器1002中,单独通过一块通信芯片进行实现。
存储器1004可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。存储器1004可用于存储指令、程序、代码、代码集或指令集。存储器1004可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等。存储数据区还可以存储终端设备1000在使用中所创建的数据等。
本领域技术人员可以理解,图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的终端设备的限定,具体的终端设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
综上,本申请实施例提供的终端设备用于实现前述方法实施例中相应的网格并行读取方法,并具有相应的方法实施例的有益效果,在此不再赘述。
请参阅图11,其示出了本申请实施例提供的一种计算机可读取存储介质的结构框图。该计算机可读取存储介质110中存储有程序代码,程序代码可被处理器调用执行上述网格并行读取方法实施例中所描述的方法。
计算机可读取存储介质110可以是诸如闪存、EEPROM(电可擦除可编程只读存储器)、EPROM、硬盘或者ROM之类的电子存储器。可选地,计算机可读取存储介质110包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。计算机可读取存储介质110具有执行上述方法中的任何方法步骤的程序代码112的存储空间。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。程序代码112可以例如以适当形式进行压缩。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (9)
1.一种网格并行读取方法,所述网格并行读取方法包括网格读取、网格分区以及网格拓扑推导的过程,其特征在于,所述方法包括:
获取设置的分区进程数和计算进程数,所述分区进程数小于计算进程数;
根据所述分区进程数启动相应的分区进程,以实现网格读取和网格分区的过程,具体包括以下步骤:
每个分区进程读取网格文件的基本信息,包括网格节点、网格面和网格单元的网格实体总数量,以及网格划分用的计算进程数,从而采用平分方式确定各分区进程需要读取的网格节点、网格面和网格单元的几何数组,以及需要读取的拓扑数组;
各分区进程将所述拓扑数组通过并行IO存储在同一个二进制文件中,来构造进程间数据互通的“伪数组”,并且仿照CPU和内存间构造缓存进行数据暂存的方式,构造了网格文件的“内存缓存”,即每次对网格文件进行随机访问时,在对完整数组对应的网格文件进行顺序扫描时,如果再次访问上一次访问附近位置的数据,可以直接从内存中读取而无需再次调用IO函数;
各分区进程根据所述网格节点、网格面和网格单元的几何数组,以及所述拓扑数组,并根据所述拓扑数组中的面体拓扑数组转换为单元-单元拓扑数组,将所述单元-单元拓扑数组转化成网格分区算法的输入数组,并基于网格分区算法对输入网格或输入数组进行分区,以形成与所述计算进程数相同数量的分区;在分区完成后每一个网格单元都对应一个分区编号;
根据所述计算进程数启动相应的计算进程,各计算进程分别读取相应的分区编号对应的网格单元,并根据对应的网格单元的信息生成网格拓扑,具体包括以下步骤:
在对完整的拓扑数组进行扫描时,先根据网格面两侧的单元分区号网格面拓扑信息分类为本进程的内部网格面、交界网格面、边界网格面和非本进程网格面,根据所述内部网格面、交界网格面和边界网格面构造子区域的其他拓扑关系,在读取到两侧单元的进程号均不是本进程时,跳过该网格面单元;
或,在对网格单元进行扫描时,通过有序列表暂存网格面拓扑,并统计网格面拓扑的扫描次数,在扫描完成后转化为数组,并根据网格面被进程内扫描的次数判断网格面是本进程的内部网格面、交界网格面、边界网格面或非本进程网格面;
其中,每个分区进程和计算进程中的步骤并行执行;
拓扑数组包括网格点-单元拓扑(即体点拓扑信息)、网格面-点拓扑(即面点拓扑信息)和网格面-单元拓扑(即面体拓扑信息)。
2.根据权利要求1所述的方法,其特征在于,每一个分区进程根据对应的网格单元、网格节点和网格面来确定相应的网格节点、网格面和网格单元的几何数组,以及拓扑数组,包括:
每一个分区进程根据对应的网格单元、网格节点和网格面来确定每个网格节点、网格面、网格单元的坐标,以及体点拓扑信息、面点拓扑信息和面体拓扑信息,以形成网格节点、网格面和网格单元的几何数组,以及拓扑数组。
3.根据权利要求1所述的方法,其特征在于,根据总网格单元数、总网格节点数、总网格面数和网格单元的体体拓扑信息来确定每个分区进程对应的网格单元、网格节点以及网格面,包括:
各分区进程对输入网格进行扫描,得到所述总网格单元数、总网格节点数、总网格面数和网格单元的体体拓扑信息;
各分区进程按照所述总网格单元数对所述输入网格进行平均分配,并根据总网格单元数、总网格节点数、总网格面数和网格单元的体体拓扑信息来确定每个分区进程对应的网格单元、网格节点以及网格面;其中每个分区进程得到相同数量的网格单元。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述基于网格分区算法对输入网格进行分区,包括:
采用网格分区算法metis或parmetis来对输入网格进行分区。
5.根据权利要求4所述的方法,其特征在于,所述采用网格分区算法metis或parmetis来对输入网格进行分区,包括:
各分区进程分别根据拓扑数组中的面体拓扑计算出体体拓扑数组,以形成所述metis或parmetis的输入数组vtxdist、xadj以及adjncy;
各分区进程根据所述输入数组vtxdist、xadj以及adjncy调用metis或parmetis来对输入网格进行分区。
6.根据权利要求1-3任一项所述的方法,其特征在于,每一个计算进程分别读取相应的分区编号对应的网格单元,并根据这些网格单元的信息生成网格拓扑,包括:
每一个计算进程读取与所述计算进程的编号相同的分区编号对应的各网格单元;
每一个计算进程遍历所述对应的各网格单元相关的面体拓扑信息,根据所述面体拓扑信息计算网格相关参数,以形成所述网格拓扑。
7.一种网格并行读取装置,所述网格并行读取装置包括网格读取、网格分区以及网格拓扑推导的过程,其特征在于,所述装置包括:
信息获取模块,用于获取设置的分区进程数和计算进程数,所述分区进程数小于计算进程数;
根据所述分区进程数启动相应的分区进程,以实现网格读取和网格分区过程,具体包括以下模块:
网格信息读取模块,用于每个分区进程读取网格文件的基本信息,包括网格节点、网格面和网格单元的网格实体总数量,以及网格划分用的计算进程数,从而采用平分方式确定各分区进程需要读取的网格节点、网格面和网格单元的几何数组,以及需要读取的拓扑数组;
网格分区模块,用于各分区进程将所述拓扑数组通过并行IO存储在同一个二进制文件中,来构造进程间数据互通的“伪数组”,并且仿照CPU和内存间构造缓存进行数据暂存的方式,构造了网格文件的“内存缓存”,即每次对网格文件进行随机访问时,在对完整数组对应的网格文件进行顺序扫描时,如果再次访问上一次访问附近位置的数据,可以直接从内存中读取而无需再次调用IO函数;以及各分区进程根据所述网格节点、网格面和网格单元的几何数组,以及所述拓扑数组,并根据所述拓扑数组中的面体拓扑数组转换为单元-单元拓扑数组,将所述单元-单元拓扑数组转化成网格分区算法的输入数组,并基于网格分区算法对输入网格或输入数组进行分区,以形成与所述计算进程数相同数量的分区;在分区完成后每一个网格单元都对应一个分区编号;
网格拓扑生成模块,用于根据所述计算进程数启动相应的计算进程,各计算进程分别读取相应的分区编号对应的网格单元,并根据对应的网格单元的信息生成网格拓扑,具体包括:在对完整的拓扑数组进行扫描时,先根据网格面两侧的单元分区号网格面拓扑信息分类为本进程的内部网格面、交界网格面、边界网格面和非本进程网格面,根据所述内部网格面、交界网格面和边界网格面构造子区域的其他拓扑关系,在读取到两侧单元的进程号均不是本进程时,跳过该网格面单元;或,在对网格单元进行扫描时,通过有序列表暂存网格面拓扑,并统计网格面拓扑的扫描次数,在扫描完成后转化为数组,并根据网格面被进程内扫描的次数判断网格面是本进程的内部网格面、交界网格面、边界网格面或非本进程网格面;
其中,每个分区进程和计算进程中的步骤并行执行;
拓扑数组包括网格点-单元拓扑(即体点拓扑信息)、网格面-点拓扑(即面点拓扑信息)和网格面-单元拓扑(即面体拓扑信息)。
8.一种终端设备,其特征在于,包括:
存储器;一个或多个处理器,与所述存储器耦接;一个或多个应用程序,其中,一个或多个应用程序被存储在存储器中并被配置为由一个或多个处理器执行,一个或多个应用程序配置用于执行如权利要求1-6任一项所述的方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读取存储介质中存储有程序代码,所述程序代码可被处理器调用执行如权利要求1-6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310808080.2A CN116820772B (zh) | 2023-07-03 | 2023-07-03 | 网格并行读取方法、装置、终端设备和可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310808080.2A CN116820772B (zh) | 2023-07-03 | 2023-07-03 | 网格并行读取方法、装置、终端设备和可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116820772A CN116820772A (zh) | 2023-09-29 |
CN116820772B true CN116820772B (zh) | 2024-05-28 |
Family
ID=88141022
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310808080.2A Active CN116820772B (zh) | 2023-07-03 | 2023-07-03 | 网格并行读取方法、装置、终端设备和可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116820772B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1549171A (zh) * | 2003-05-15 | 2004-11-24 | 季永萍 | 基于网格计算的高新技术市场界定标准的实现装置 |
CN101048736A (zh) * | 2004-10-12 | 2007-10-03 | 国际商业机器公司 | 优化大规模并行超级计算机上的应用布局 |
CN106250102A (zh) * | 2015-06-12 | 2016-12-21 | 中国石油化工股份有限公司 | 交错网格有限差分正演模拟优化的方法 |
CN109359397A (zh) * | 2018-10-24 | 2019-02-19 | 河海大学 | 一种有限元区域分解改进ssorpcg求解渗流场的并行方法 |
CN114218874A (zh) * | 2021-12-03 | 2022-03-22 | 南京航空航天大学 | 一种翼伞流固耦合并行计算方法 |
CN116306122A (zh) * | 2023-03-07 | 2023-06-23 | 国家海洋环境预报中心 | 用于海洋数值模式的网格计算方法、计算机及存储介质 |
-
2023
- 2023-07-03 CN CN202310808080.2A patent/CN116820772B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1549171A (zh) * | 2003-05-15 | 2004-11-24 | 季永萍 | 基于网格计算的高新技术市场界定标准的实现装置 |
CN101048736A (zh) * | 2004-10-12 | 2007-10-03 | 国际商业机器公司 | 优化大规模并行超级计算机上的应用布局 |
CN106250102A (zh) * | 2015-06-12 | 2016-12-21 | 中国石油化工股份有限公司 | 交错网格有限差分正演模拟优化的方法 |
CN109359397A (zh) * | 2018-10-24 | 2019-02-19 | 河海大学 | 一种有限元区域分解改进ssorpcg求解渗流场的并行方法 |
CN114218874A (zh) * | 2021-12-03 | 2022-03-22 | 南京航空航天大学 | 一种翼伞流固耦合并行计算方法 |
CN116306122A (zh) * | 2023-03-07 | 2023-06-23 | 国家海洋环境预报中心 | 用于海洋数值模式的网格计算方法、计算机及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116820772A (zh) | 2023-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112352234B (zh) | 用于处理并发属性图查询的系统 | |
Checconi et al. | Breaking the speed and scalability barriers for graph exploration on distributed-memory machines | |
CN109522108B (zh) | 一种基于Kernel合并的GPU任务调度系统及方法 | |
US8762655B2 (en) | Optimizing output vector data generation using a formatted matrix data structure | |
Gharaibeh et al. | Efficient large-scale graph processing on hybrid CPU and GPU systems | |
Wu et al. | ParaStream: A parallel streaming Delaunay triangulation algorithm for LiDAR points on multicore architectures | |
Kress et al. | Comparing the efficiency of in situ visualization paradigms at scale | |
Ajwani et al. | A computational study of external-memory BFS algorithms | |
CN110209353A (zh) | 区域耦合预报系统中roms模式的i/o并行加速方法、装置及介质 | |
CN109388486B (zh) | 一种针对异构内存与多类型应用混合部署场景的数据放置与迁移方法 | |
Motamedi et al. | Fast and energy-efficient CNN inference on IoT devices | |
Saule et al. | Load-balancing spatially located computations using rectangular partitions | |
Sasidharan et al. | Miniamr-a miniapp for adaptive mesh refinement | |
US20230409885A1 (en) | Hardware Environment-Based Data Operation Method, Apparatus and Device, and Storage Medium | |
Ding et al. | Performance evaluation of GPU-accelerated spatial interpolation using radial basis functions for building explicit surfaces | |
Demaine et al. | Fine-grained I/O complexity via reductions: New lower bounds, faster algorithms, and a time hierarchy | |
Goh et al. | Design and performance evaluation of combined first-fit task allocation and migration strategies in mesh multiprocessor systems | |
Chernikov et al. | Parallel guaranteed quality Delaunay uniform mesh refinement | |
Das et al. | Enabling on-device smartphone GPU based training: Lessons learned | |
CN110222410B (zh) | 一种基于Hadoop MapReduce的电磁环境仿真方法 | |
Goodrich | Simulating parallel algorithms in the MapReduce framework with applications to parallel computational geometry | |
Li | High-throughput computation of shannon mutual information on chip | |
CN116820772B (zh) | 网格并行读取方法、装置、终端设备和可读存储介质 | |
CN117742996A (zh) | 用于计算的通信优化方法、装置、电子设备和存储介质 | |
CN113157806B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |