CN104765589A - 基于mpi的网格并行预处理方法 - Google Patents
基于mpi的网格并行预处理方法 Download PDFInfo
- Publication number
- CN104765589A CN104765589A CN201410004273.3A CN201410004273A CN104765589A CN 104765589 A CN104765589 A CN 104765589A CN 201410004273 A CN201410004273 A CN 201410004273A CN 104765589 A CN104765589 A CN 104765589A
- Authority
- CN
- China
- Prior art keywords
- grid
- array
- mpi
- grid cell
- file
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 134
- 238000007781 pre-processing Methods 0.000 title abstract description 4
- 230000008569 process Effects 0.000 claims abstract description 92
- 238000005192 partition Methods 0.000 claims abstract description 32
- 238000013404 process transfer Methods 0.000 claims description 15
- 238000007670 refining Methods 0.000 claims description 4
- 230000006870 function Effects 0.000 description 19
- 238000004891 communication Methods 0.000 description 11
- 238000004422 calculation algorithm Methods 0.000 description 10
- 239000011159 matrix material Substances 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 230000011218 segmentation Effects 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 238000000638 solvent extraction Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 241001229889 Metis Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000011438 discrete method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 235000015096 spirit Nutrition 0.000 description 1
- 238000013316 zoning Methods 0.000 description 1
Landscapes
- Multi Processors (AREA)
Abstract
本发明公开了一种基于MPI的网格并行预处理方法,包括给定计算域的网格的分区数;启动MPI多进程,设定进程数;判断进程数是否等于分区数,等于则打开网格文件,主进程读取网格单元信息文件,将网格单元平均初始分配到各个进程,每个进程创建其邻接数组,否则重新启动MPI多进程;每个进程调用ParMETIS进行网格划分;每个进程将网格单元信息分块读到数组,设定数组的索引位置;每个进程循环遍历网格单元信息文件,判断数组长度减去数组的索引位置号是否小于网格单元信息长度,小于则读取网格单元信息文件的数据填充到数组中,否则将数组元素赋值给网格单元;判断网格单元的分区号是否等于进程号,等于则将网格单元信息存储到进程文件中,否则继续循环判断。
Description
技术领域
本发明涉及一种并行预处理技术,具体地说,涉及一种网格并行预处理方法。
背景技术
在科学与工程计算领域中,网格对各类微分方程的数值求解具有重要意义,网格分布是求解计算的基础环境。微分方程的求解主要包括数值离散和代数方程组求解两步,在离散方法确定的情况下,网格分布信息能直接反映代数方程组解向量和系数矩阵的逻辑结构。随着并行计算的广泛应用,网格在微分方程的并行求解中扮演着十分重要的角色。对分布式并行计算而言,基于区域分解的网格划分和网格数据分布存储的并行执行是微分方程主要的并行求解途径。
网格划分通过建立网格单元与并行计算机多处理器的对应关系,将一个大规模复杂的网格划分成多个子网格。网格划分的好坏直接影响着并行计算的效率和求解算法的精确度,网格划分策略的关键在于如何将大网格进行划分,使得子网格较容易并行求解,并且能够达到各处理器上计算负载平衡和处理器间通信开销最小的目标。
数据分割和网格信息管理是网格并行预处理主要的耗时阶段,现有技术在网格预处理的数据分割和网格信息管理阶段,耗时长,效率低。对于网格的划分,现有的多层递归对分、行列划分等技术速度慢,划分质量不理想。现有网格预处理方案多为串行执行的方式,只能在单个CPU核上执行,同时多采用串行遍历网格文件,速度较慢。而且,现有网格预处理方案多将网格数据文件集中存储在一个或少数几个文件里,当数据规模较大时,会产生I/O文件读写堵塞,影响网格处理数据的规模和速度。
发明内容
本发明的目的在于提供一种基于MPI的网格并行预处理方法,采用ParMETIS实现高效快速的网格划分,采用分布式存储网格数据,提高了处理数据的规模和速度。
为了实现上述目的,本发明所采用的技术方案如下:
一种基于MPI的网格并行预处理方法,包括以下步骤:给定计算域的网格的分区数;启动MPI多进程,设定进程数;判断进程数是否等于分区数,若等于则打开网格文件,主进程读取网格单元信息文件,将网格单元平均初始分配到各个进程,每个进程创建网格单元的邻接数组,否则重新启动MPI多进程;每个进程调用ParMETIS对网格单元进行网格划分;每个进程将网格单元信息分块读到数组,设定数组的索引位置;每个进程循环遍历网格单元信息文件,判断数组长度减去数组的索引位置号是否小于网格单元信息长度,若小于则读取网格单元信息文件的数据填充到数组中,否则将数组元素赋值给网格单元,并修改数组的索引位置;判断网格单元的分区号是否等于进程号,若等于则将网格单元信息存储到进程文件中,否则修改数组索引位置,继续循环判断。
进一步,计算域的网格的分区数小于或等于并行计算机的处理器数。
进一步,邻接数组的存储格式为CSR。
进一步,每个进程调用ParMETIS的子程序ParMETIS_V3_Mesh2Dual,将网格单元转化成图。
进一步,每个进程调用ParMETIS的子程序ParMETIS_V3_AdaptiveRepart,对图进行重划分。
进一步,每个进程调用ParMETIS的子程序ParMETIS_V3_RefineKway,进一步精化网格划分的质量。
与现有技术相比,本发明采用ParMETIS实现高效快速的网格划分,采用分布式存储网格数据,提高了处理数据的规模和速度。
附图说明
图1为本发明的网格并行预处理的流程示意图;
图2为本发明的网格分布式存储的流程示意图。
具体实施方式
下面结合附图和具体实施例对本发明基于MPI的网格并行预处理方法作进一步说明。
本发明采用基于MPI的分布式并行执行方式,通过ParMETIS并行网格分区和重分区功能,利用多层k-路图划分方法对三维网格进行高质量的划分。根据网格划分后的结果,启动多进程循环遍历网格文件,实现大规模网格的快速并行预处理。利用本发明基于MPI的网格并行预处理方法,能显著减少网格并行计算中的通信时间,提高并行计算效率。
ParMETIS(Parallel Graph Partitioning and Fill-reducing Matrix Ordering)-并行图划分和填充-约化矩阵排序,特别适合于大规模无结构网格的并行数值模拟。ParMETIS基于MPI并行库,实现了用于无结构图划分、网格划分、计算稀疏矩阵的填充-约化次序等多种算法。ParMETIS扩展了METIS所提供的功能,并包含了特别适合于并行计算和大规模数值模拟的子程序。ParMETIS中实现的算法有基于并行的多层k-路图划分算法,多层k-路图划分是一种基于图论的划分方法,通常有图的粗化算法、初始划分算法和还原优化算法组成。基于多层k-路图划分方法使各子图的顶点权值基本相同且划分产生的边截权数最小化,划分结果产生的通信时间与行列等其它划分方法相比大大降低,从而使得整个并行程序的执行时间能得到有效减少,并且随着数据规模的不断增大和处理器个数的增加,通信开销降低的效果更加明显。
网格划分完成之后,可随即获得各网格结点或单元与处理器的分配对应关系,接着需要根据此划分结果为网格信息的分布式存储进行数据分割。数据分割的主要实现过程是对所有处理器按结点或单元编号做遍历循环,对划分给当前处理器的结点或单元,把对应的数组元素与网格单元结点列表迁移到本地存储器中,最终在各个处理机内部生成局部的坐标数组与邻点矩阵,实现网格信息的分布式存储。
MPI是一种基于消息传递的并行编程模型,现被广泛应用于分布式存储结构的并行计算中。MPI通过MPI_Init函数初始化MPI执行环境,启动多个进程,创建多个MPI进程之间的通信域。基于MPI的分布式并行执行策略,是一种粗粒度的并行算法,通过将有限元网格计算区域划分成与进程数相等的子区域数,然后将这些子区域的网格数据映射到每个进程上并行预处理。由于每个进程只负责各自子区域的预处理,只在网格子区域边界面上产生通信,数据通信量少,因此能获得很好的并行预处理的效果。
请参阅图1,本发明提供的网格并行预处理的方案,在计算机上启动MPI多进程,设定执行ParMETIS分区任务的进程数,即创建ParMETIS的通信域。利用ParMETIS并行区域分解工具,创建网格单元的邻接数组xadj和adjncy,作为ParMETIS功能函数的输入参数,将网格转化成图,再将图进行重分区。重分区结果能实现并行计算的负载平衡和较少的分区边界数,从而减少并行计算的通信时间,显著提高网格并行计算的效率。ParMETIS网格划分结果建立了网格单元或结点与处理器进程间的一一对应关系,各进程根据该划分结果循环遍历网格信息文件,通过定位文件指针和数组索引的方法分块读网格数据,对划分给当前处理器的结点或单元,把对应的数组元素与网格单元结点列表迁移到本地存储器中,最终在各个处理器内部生成局部的坐标数组与邻接矩阵,快速实现网格信息的分布式存储。本发明定位文件指针和数组索引分块读的方法,大量减少了读文件的操作,而且有效避免了多进程同时读文件产生的竞争等待时间消耗。
请参阅图1和图2,网格数据分布式存储完成后,各进程采用链表数据结构,将构成本地网格单元的所有网格结点进行插入排序,以索引链表表示本地网格结点的局部索引,创建网格结点的局部索引。各进程对网格单元进行重排序,改善求解线性方程组稀疏矩阵的品质,并对排序后的网格单元设置进程间通信关系索引,最后各进程保存本地稀疏矩阵等数据用作方程的并行求解。本发明中的高质量网格划分结果和高效快速的实现,为微分方程并行求解的精确性提供了保障,同时为大规模网格在数值模拟中的应用提供了方便。
请参阅图2,本发明公开了一种基于MPI的网格并行预处理方法,包括以下步骤:给定计算域的网格的分区数;启动MPI多进程,设定进程数;判断进程数是否等于分区数,若等于则打开网格文件,主进程读取网格单元信息文件,将网格单元平均初始分配到各个进程,每个进程创建网格单元的邻接数组,否则重新启动MPI多进程;每个进程调用ParMETIS对网格单元进行网格划分;每个进程将网格单元信息分块读到数组,设定数组的索引位置;每个进程循环遍历网格单元信息文件,判断数组长度减去数组的索引位置号是否小于网格单元信息长度,若小于则读取网格单元信息文件的数据填充到数组中,否则将数组元素赋值给网格单元,并修改数组的索引位置;判断网格单元的分区号是否等于进程号,若等于则将网格单元信息存储到进程文件中,否则修改数组索引位置,继续循环判断。
本发明网格预处理方案中,计算域的网格的分区数小于或等于并行计算机的处理器数。邻接数组的存储格式为CSR(Compressed Sparse Row)。每个进程调用ParMETIS的子程序ParMETIS_V3_Mesh2Dual,将网格单元转化成图。每个进程调用ParMETIS的子程序ParMETIS_V3_AdaptiveRepart,对图进行重划分。每个进程调用ParMETIS的子程序ParMETIS_V3_RefineKway,进一步精化网格划分的质量。本发明通过多次调用ParMETIS的精化网格功能函数ParMETIS_V3_RefineKway,不断优化网格划分的质量,进一步减少网格分区边界大小,减少并行计算的通信时间,提高网格划分的质量。
本发明采用ParMETIS实现高效快速的网格划分,ParMETIS的多层k-路图划分方法使各子图的顶点权值基本相同且划分产生的边截权数最小化,划分结果产生的通信时间短,从而使得整个并行程序的执行时间得到有效减少,并且随着数据规模的不断增大和处理器个数的增加,通信开销降低的效果更加明显。
本发明采用MPI多进程计算的方式,分布式进行网格的划分和预处理,能实现大规模网格的快速划分;同时采用ParMETIS并行区域分解工具划分大规模网格,将待划分的网格,初始平均分配到多个进程,各进程并行完成网格的划分,提升网格划分的速度。
本发明各进程根据网格划分的结果,循环遍历网格文件,采用定位文件指针和数组索引的方法对网格文件进行分块读,减少了大量的读网格信息的操作,同时有效避免了多进程同时读文件的竞争等待时间消耗,加速了各进程对网格数据的分割,能快速实现网格的分布式存储。
实施例一
本发明基于MPI的网格并行预处理方法的基本步骤为:首先MPI进程启动,读入网格文件数据,从网格文件中将结点信息和网格单元信息分别写进两个文件。创建新的通信域,调用ParMETIS的分区函数,对网格实现高质量的划分。根据网格划分的结果,启动多进程同时对网格文件进行循环遍历,通过定位文件指针分块读的方法,实现网格的分布式存储。
请参阅图1和图2,本实施例的具体步骤如下:
1.用户给定网格所需的分区数num_domains,分区数不能大于并行计算机的处理器数。
2.启动MPI多进程,设定进程数num_processors,进程数需等于分区数。
3.判断MPI进程数是否等于网格的分区数,若进程数等于分区数,则程序继续执行,否则退出,重新启动MPI多进程,设定进程数num_processors。
4.从网格文件中,读入网格全局几何结点数和网格单元数。打开指定目录下指定的原始网格文件channnel.msh,从channnel.msh文件中,读入网格全局几何结点数global_nde和全局网格单元数global_nel。
5.将网格结点编号和结点坐标写进指定目录下的grid.bin文件。从channnel.msh网格文件中,用fscanf函数读取网格结点信息,并将网格结点编号和结点坐标写进指定目录下的grid.bin文件。
6.将网格单元的类型和构成单元的结点表等信息写进指定目录下的nenn.bin文件。用fscanf函数读取网格单元信息,并将网格单元的类型和构成单元的结点表等信息写进指定目录下的nenn.bin文件。
7.创建ParMETIS分区工具的通信域。指定ParMETIS的进程数num_run,根据指定的进程创建ParMETIS分区函数所需的通信域。
8.网格划分。包括以下步骤:
1)主进程读网格单元信息文件nenn.bin,将网格单元平均初始分配到各个进程,每个进程负责global_nel/num_processors个网格单元的划分。
2)主进程创建数组elmdist,elmdist=new idx_t[num_run+1],表示各进程处理的网格单元范围。其中第mpi_id个进程负责第elmdist[mpi_id]到第elmdist[mpi_id+1]个网格单元的划分。
3)主进程创建全局网格单元的邻接数组结构,采用CSR格式即用两个数组global_eptr、global_eind表示全局网格单元的邻接关系。
4)主进程根据全局邻接数组global_eptr、global_eind和elmdist数组,获得网格单元的并行CSR格式,即各进程第elmdist[mpi_id]到第elmdist[mpi_id+1]个网格单元的相邻结构,用数组eptr、eind表示。
5)主进程采用MPI通信方式根据进程数循环,将第elmdist[mpi_id]到第elmdist[mpi_id+1]个网格单元的相邻结构数组eptr、eind,发送到进程号为mpi_id的进程。
6)子进程采用MPI_Recv函数接收主进程发送的eptr、eind数组。
7)各进程准备ParMETIS函数其他的输入输出参数,如表示分区结果数组的输出参数part。
8)各进程调用ParMETIS函数ParMETIS_V3_Mesh2Dual,将网格转化成图,获得图的邻接结构,用数组xadj、adjncy表示。
9)各进程调用ParMETIS的重分区函数ParMETIS_V3_AdaptiveRepart,用图的邻接结构数组xadj、adjncy作为该函数的输入参数对图进行重划分,获得划分的结果数组part,表示网格单元与进程号的对应关系。
10)各进程调用ParMETIS的精化分区函数ParMETIS_V3_RefineKway,在上述划分的基础上,进一步精化网格划分的质量。
9.各进程将ParMETIS函数的输出结果数组part,用MPI的IO函数MPI_File_write_at同时写进partition.bin文件,其中各进程写的起始偏移位置为elmdist[mpi_id],写的数组大小为elmdist[mpi_id+1]-elmdist[mpi_id]。
10.网格的分布式存储。本发明采用分布式存储方式存储,每个分区会产生自己的数据文件,存储在相应进程的存储空间里,减少了I/O瓶颈,提高了处理数据的规模和速度。
请参阅图2,包括以下步骤:
1)各进程将partition.bin的分区结果读入数组ele_part,表示全局网格单元的分区号。
2)各进程创建大小为file_arr_size的分块读数组file_arr,用来存储每次分块读的网格单元内容。file_arr_size可以自己设定,设置太小算法的效果不明显,设置越大文件读写请求的次数越少,算法的性能越好,所以在内存够大的时候,file_arr_size可设置为大一点的值。
3)各进程从nenn.bin文件读file_arr_size个类型数据到数组file_arr,并修改文件指针偏移位置offset为file_arr_size*sizeof(数据类型),设置数组的当前索引位置arr_offset为0,设置文件已读部分大小read_file_size为file_arr_size。计算整个文件nenn.bin的文件大小为file_size。
4)各进程根据全局网格单元数循环遍历网格单元信息文件nenn.bin,并判断数组file_arr的大小减去数组的偏移是否小于一个完整的网格单元信息长度。若数组file_arr的大小减去数组的偏移小于一个完整的网格单元信息长度,则定位nenn.bin的文件指针,从当前nenn.bin文件指针的位置读数据,填充到数组file_arr中。若数组file_arr的大小减去数组的偏移不小于一个完整的网格单元信息长度,则定位数组file_arr的索引,将当前数组索引下的元素给网格单元类型、网格物理实体,以及网格单元结点数组赋值,赋值完成后,修改数组索引位置arr_offset的值。
if((file_arr_size–arr_offset)<(3+n_max))判断数组剩余元素个数是否小于一个完整单元信息的长度。
{
将数组的剩余元素即第arr_offset至第file_arr_size的元素值依次赋给数组的第0到第file_arr_size-arr_offset-1元素,并用fseek函数定位nenn.bin文件指针到当前offset值的位置。
if(file_size–read_file_size)>=arr_offset)判断文件未读部分是否小于数组待填充部分
{
创建一个大小为arr_offset的读数据数组read_arr,用来存储分块读的数据。
读arr_offset个类型数据到数组read_arr,修改文件指针偏移位置offset=offset+arr_offset*sizeof(数据类型)
将read_arr的数组元素依次赋值给数组file_arr的后arr_offset元素。
修改已读文件的大小read_file_size的值,read_file_size=read_file_size+arr_offset
}
else
{
创建一个大小为file_size-read_file_size的数组read_arr,读file_size-read_file_size个类型数据到数组read_arr,修改文件指针偏移位置offset=offset+(file_size-read_file_size)*sizeof(数据类型)
将read_arr的数组元素依次赋值给数组file_arr的后file_size-read_file_size元素。
修改已读文件的大小read_file_size的值,read_file_size=file_size
}
删除数组read_arr,释放内存。
设置数组file_arr的索引位置arr_offset的值为0
else
{
将当前数组索引位置的元素赋值给网格单元的类型ele_type,以及结点数组
修改数组索引的值arr_offset=arr_offset+3+n_max,其中3+n_max为网格单元信息的长度。
}
if(分区号是否等于进程号)
{
将当前索引位置的元素赋值给网格单元的结点数组nenn[n_max],其中n_max为构成网格单元的结点数。将单元类型ele_type,结点数组nenn写进以进程号命名的网格单元文件nenn_mpi_id_physical_entity.bin。
}
判断当前网格单元的分区号是否等于本地进程号,若分区号等于进程号,则将网格单元的类型和结点数组写进由本地进程号和物理实体号共同命名的文件nenn_mpi_id_physical_entity.bin,若分区号不等于进程号,则修改数组索引位置,继续循环判断。
5)各进程根据全局网格单元数global_nel循环重复步骤4),直到整个循环结束,实现了网格的分布式存储。
11.网格并行预处理结束。
上述说明是针对本发明较佳可行实施例的详细说明,但实施例并非用以限定本发明的专利申请范围,凡本发明所揭示的技术精神下所完成的同等变化或修饰变更,均应属于本发明所涵盖专利范围。
Claims (6)
1.一种基于MPI的网格并行预处理方法,其特征在于,包括以下步骤:
给定计算域的网格的分区数;
启动MPI多进程,设定进程数;
判断进程数是否等于分区数,若等于则打开网格文件,主进程读取网格单元信息文件,将网格单元平均初始分配到各个进程,每个进程创建网格单元的邻接数组,否则重新启动MPI多进程;
每个进程调用ParMETIS对网格单元进行网格划分;
每个进程将网格单元信息分块读到数组,设定数组的索引位置;
每个进程循环遍历网格单元信息文件,判断数组长度减去数组的索引位置号是否小于网格单元信息长度,若小于则读取网格单元信息文件的数据填充到数组中,否则将数组元素赋值给网格单元,并修改数组的索引位置;
判断网格单元的分区号是否等于进程号,若等于则将网格单元信息存储到进程文件中,否则修改数组索引位置,继续循环判断。
2.如权利要求1所述的基于MPI的网格并行预处理方法,其特征在于:计算域的网格的分区数小于或等于并行计算机的处理器数。
3.如权利要求1所述的基于MPI的网格并行预处理方法,其特征在于:邻接数组的存储格式为CSR。
4.如权利要求1所述的基于MPI的网格并行预处理方法,其特征在于:每个进程调用ParMETIS的子程序ParMETIS_V3_Mesh2Dual,将网格单元转化成图。
5.如权利要求4所述的基于MPI的网格并行预处理方法,其特征在于:每个进程调用ParMETIS的子程序ParMETIS_V3_AdaptiveRepart,对图进行重划分。
6.如权利要求5所述的基于MPI的网格并行预处理方法,其特征在于:每个进程调用ParMETIS的子程序ParMETIS_V3_RefineKway,进一步精化网格划分的质量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410004273.3A CN104765589B (zh) | 2014-01-02 | 2014-01-02 | 基于mpi的网格并行预处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410004273.3A CN104765589B (zh) | 2014-01-02 | 2014-01-02 | 基于mpi的网格并行预处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104765589A true CN104765589A (zh) | 2015-07-08 |
CN104765589B CN104765589B (zh) | 2017-10-31 |
Family
ID=53647447
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410004273.3A Active CN104765589B (zh) | 2014-01-02 | 2014-01-02 | 基于mpi的网格并行预处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104765589B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105701291A (zh) * | 2016-01-13 | 2016-06-22 | 中国航空动力机械研究所 | 有限元分析装置及信息获取方法、系统矩阵并行生成方法 |
CN106548512A (zh) * | 2015-09-22 | 2017-03-29 | 中国石油化工股份有限公司 | 网格模型数据的生成方法 |
CN107391871A (zh) * | 2017-08-03 | 2017-11-24 | 中国空气动力研究与发展中心计算空气动力研究所 | 一种基于并行化径向基函数的空间网格变形方法 |
CN107391892A (zh) * | 2017-09-11 | 2017-11-24 | 元计算(天津)科技发展有限公司 | 一种基于有限元语言的并行编码方法及系统 |
CN107688680A (zh) * | 2016-08-05 | 2018-02-13 | 南京理工大学 | 一种高效的时域有限元区域分解并行方法 |
CN109271344A (zh) * | 2018-08-07 | 2019-01-25 | 浙江大学 | 基于申威芯片架构并行文件读取的数据预处理方法 |
CN110532093A (zh) * | 2019-08-23 | 2019-12-03 | 中国原子能科学研究院 | 数值核反应堆多几何形状全堆芯子通道并行任务划分方法 |
CN111125949A (zh) * | 2019-12-06 | 2020-05-08 | 北京科技大学 | 一种有限元分析的大规模并行网格划分系统及方法 |
CN111914455A (zh) * | 2020-07-31 | 2020-11-10 | 英特工程仿真技术(大连)有限公司 | 基于节点重叠型区域分解无Schwarz交替的有限元并行计算方法 |
CN113177329A (zh) * | 2021-05-24 | 2021-07-27 | 清华大学 | 数值程序的数据处理系统 |
CN114004176A (zh) * | 2021-10-29 | 2022-02-01 | 中船重工奥蓝托无锡软件技术有限公司 | 一种均匀结构化网格并行分区方法 |
-
2014
- 2014-01-02 CN CN201410004273.3A patent/CN104765589B/zh active Active
Non-Patent Citations (4)
Title |
---|
ANDREY CHERNIKOV, ET.AL: "Parallel Programming Environment for", 《PROCEEDINGS OF ICNGG. 2002》 * |
ANH VO, ET.AL: "Formal Verification of Practical MPI Programs", 《ACM SIGPLAN NOTICES》 * |
GEORGE KARYPIS, ET.AL: "PARMETIS Parallel Graph Partitioning and Sparse Matrix Ordering Library Version 3.1", 《HTTPS://DEV.ECE.UBC.CA/PROJECTS/GPGPU-SIM/EXPORT/96F6AD00D6D3E9A58B1D51EDAAC76D061C02FA82/ISPASS2009-BENCHMARKS/DG/3RDPARTY/PARMETIS-3.1/MANUAL/MANUAL.PDF 》 * |
KEITH COOPER, ET.AL: "《Languages and Compilers for Parallel Computing》", 9 October 2010, HEIDELBERG DORDRECHT LONDON NEWYORK * |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106548512A (zh) * | 2015-09-22 | 2017-03-29 | 中国石油化工股份有限公司 | 网格模型数据的生成方法 |
CN106548512B (zh) * | 2015-09-22 | 2019-10-29 | 中国石油化工股份有限公司 | 网格模型数据的生成方法 |
CN105701291A (zh) * | 2016-01-13 | 2016-06-22 | 中国航空动力机械研究所 | 有限元分析装置及信息获取方法、系统矩阵并行生成方法 |
CN105701291B (zh) * | 2016-01-13 | 2019-04-23 | 中国航空动力机械研究所 | 有限元分析装置及信息获取方法、系统矩阵并行生成方法 |
CN107688680A (zh) * | 2016-08-05 | 2018-02-13 | 南京理工大学 | 一种高效的时域有限元区域分解并行方法 |
CN107391871A (zh) * | 2017-08-03 | 2017-11-24 | 中国空气动力研究与发展中心计算空气动力研究所 | 一种基于并行化径向基函数的空间网格变形方法 |
CN107391892A (zh) * | 2017-09-11 | 2017-11-24 | 元计算(天津)科技发展有限公司 | 一种基于有限元语言的并行编码方法及系统 |
CN109271344A (zh) * | 2018-08-07 | 2019-01-25 | 浙江大学 | 基于申威芯片架构并行文件读取的数据预处理方法 |
CN110532093A (zh) * | 2019-08-23 | 2019-12-03 | 中国原子能科学研究院 | 数值核反应堆多几何形状全堆芯子通道并行任务划分方法 |
CN110532093B (zh) * | 2019-08-23 | 2022-05-13 | 中国原子能科学研究院 | 数值核反应堆多几何形状全堆芯子通道并行任务划分方法 |
CN111125949A (zh) * | 2019-12-06 | 2020-05-08 | 北京科技大学 | 一种有限元分析的大规模并行网格划分系统及方法 |
CN111914455A (zh) * | 2020-07-31 | 2020-11-10 | 英特工程仿真技术(大连)有限公司 | 基于节点重叠型区域分解无Schwarz交替的有限元并行计算方法 |
CN111914455B (zh) * | 2020-07-31 | 2024-03-15 | 英特工程仿真技术(大连)有限公司 | 基于节点重叠型区域分解无Schwarz交替的有限元并行计算方法 |
CN113177329A (zh) * | 2021-05-24 | 2021-07-27 | 清华大学 | 数值程序的数据处理系统 |
CN114004176A (zh) * | 2021-10-29 | 2022-02-01 | 中船重工奥蓝托无锡软件技术有限公司 | 一种均匀结构化网格并行分区方法 |
CN114004176B (zh) * | 2021-10-29 | 2023-08-25 | 中船奥蓝托无锡软件技术有限公司 | 一种均匀结构化网格并行分区方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104765589B (zh) | 2017-10-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104765589A (zh) | 基于mpi的网格并行预处理方法 | |
Lu et al. | SpWA: An efficient sparse winograd convolutional neural networks accelerator on FPGAs | |
Lu et al. | Evaluating fast algorithms for convolutional neural networks on FPGAs | |
Zhang et al. | BoostGCN: A framework for optimizing GCN inference on FPGA | |
Ma et al. | Performance modeling for CNN inference accelerators on FPGA | |
US9053067B2 (en) | Distributed data scalable adaptive map-reduce framework | |
CN106383695B (zh) | 基于fpga的聚类算法的加速系统及其设计方法 | |
US20120143932A1 (en) | Data Structure For Tiling And Packetizing A Sparse Matrix | |
CN105956666B (zh) | 一种机器学习方法及系统 | |
CN103984560A (zh) | 基于大规模粗粒度嵌入式可重构系统及其处理方法 | |
CN108710943B (zh) | 一种多层前馈神经网络并行加速器 | |
Liu | Parallel and scalable sparse basic linear algebra subprograms | |
CN115362447A (zh) | 针对执行流水线的划分 | |
CN116258042B (zh) | 一种基于ddm的大规模传热异构并行仿真方法 | |
CN113095022A (zh) | 门级电路的并行仿真处理方法、计算机可读存储介质 | |
Goodrich | Simulating parallel algorithms in the MapReduce framework with applications to parallel computational geometry | |
Kang et al. | Multi-bank on-chip memory management techniques for CNN accelerators | |
Yang et al. | GPU acceleration of subgraph isomorphism search in large scale graph | |
KR20210103393A (ko) | 낮은-지역성 데이터에서 높은-지역성 데이터로의 변환을 관리하기 위한 시스템 및 방법 | |
CN116303219A (zh) | 一种网格文件的获取方法、装置及电子设备 | |
WO2022252839A1 (zh) | 计算流图调度方案的生成方法、装置、电子设备及计算机可读存储介质 | |
CN109522127A (zh) | 一种基于gpu的流体机械仿真程序异构加速方法 | |
Takei et al. | Evaluation of an FPGA-based shortest-path-search accelerator | |
CN105573834B (zh) | 一种基于异构平台的高维词汇树构建方法 | |
Ahmed et al. | On the performance of MapReduce: A stochastic approach |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |