两级分区两次缩聚并行计算系统开发方法及并行计算系统的制作方法_2

文档序号:8257989阅读:来源:国知局
并行化改造;然后基于两级分区和两次缩聚策略开 发并行求解线性方程组模块,并与上一步并行化改造后的模块实现无缝集成;最后对集成 后的系统进行编译和调试,生成有限元分析并行计算可执行程序。
[0038] 下面按照系统操作的先后顺序依次作详细介绍:
[0039] 第一步,根据求解问题的数学方程表达式通过FEPG产生有限元分析串行计算所 需的全部程序源代码。
[0040] FEPG是一个通用的计算机辅助工程分析软件平台,它的突出优点是用户只需输入 求解问题所需的各种数学方程表达式,即可由该系统自动生成有限元分析串行计算所需的 全部程序源代码,并且拥有对生成程序源代码的自主知识产权。在FEPG的基础上进行有限 元分析高性能计算软件的开发可以减少大量繁琐复杂的编程工作,从而保证软件开发的质 量和效率。
[0041] FEPG主要是基于元件化的设计思想开发的,这就保证了由它生成的有限元分析程 序具有很强的模块化特点。由于各模块实现的功能比较单一,并且模块间的接口采用单输 入和单输出的形式,因此用户可以相当方便地阅读和理解这些程序,并根据自己的需要进 行修改或添加新的功能。FEPG生成的程序源代码由四个模块组成:单元分析模块、形成系 统平衡方程模块、求解线性方程组模块以及计算应变应力模块。
[0042] 第二步,去除程序源代码中的求解线性方程组模块,并基于区域分解法对剩余模 块进行并行化改造。
[0043] 采用区域分解法进行并行计算时,除了线性方程组的求解外,每个子区域内执行 的操作如:单元刚度矩阵的计算、总体刚度矩阵和总体外部载荷向量的组集以及应变应力 的计算等与传统串行有限元分析程序执行的操作完全相同。因此,对串行程序进行并行化 改造时只需在不影响其它模块运行的前提下去除原系统中串行求解线性方程组的模块,并 对剩余模块做一些局部性修改以保证并行程序的顺利执行和提高程序执行的效率即可。具 体来说,这些局部性修改包括:并行计算环境的添加、各子区域节点的重新编号和程序数据 传递方式的改变。
[0044] 并行计算环境的添加利用MPI初始化和退出指令将串行程序转换成并行程序。并 行程序的初始化通过MPI_INIT指令实现,它放置在主程序的起始位置。并行程序的退出通 过MPI_FINALIZE指令实现,它放置在主程序的结束位置。
[0045] 各子区域节点的重新编号将每个子区域的节点编号映射到从1开始的连续正整 数集上以便并行程序的顺利执行。如图2所示,它主要包括四个步骤:
[0046] (1)将节点坐标信息中的节点编号按照数据读取的先后顺序映射到从1开始的连 续正整数集上,从而建立起原编号系统与现编号系统的一个映射关系。
[0047] (2)依次读取有限元模型的每个单元信息,并根据第(1)步建立的映射关系将每 个单元的节点编号进行更新。
[0048] (3)依次读取有限元模型的外部载荷信息,并根据第(1)步建立的映射关系将等 效节点载荷信息中的节点编号进行更新。
[0049] (4)依次读取有限元模型的边界条件信息,并根据第⑴步建立的映射关系将边 界条件信息中的节点编号进行更新。
[0050] 完成每个子区域节点的重新编号后,在形成系统平衡方程时就可以根据新的编号 系统进行单元刚度矩阵的计算,子区域总体刚度矩阵和总体外部载荷向量的组集,边界条 件的处理等操作。而求解界面方程时由于牵涉到所有子区域对系统整体求解的贡献,故仍 需按照原有的编号系统进行计算和通信。
[0051] 程序数据传递方式的改变通过将不同子列程间的数据传递方式由文件传输改为 函数接口参数传输从而提高了程序执行效率。如图3所示,它主要包括四个步骤:
[0052] (1)弄清不同子例程间的调用关系和这些子例程间进行数据传输的具体文件名和 文件类型。
[0053] (2)记录每个文件中保存的变量名、变量的数据格式和变量所占存储空间的大小。
[0054] (3)以第(2)步记录的每个文件中的变量信息作为基本参数设计两个子例程间进 行数据传输的函数接口。
[0055] (4)去除或注释掉每个子例程中进行中间文件读写的程序代码,并根据第(3)步 设计的函数接口参数实现不同子例程间数据的传递。
[0056] 第三步,基于两级分区和两次缩聚策略开发并行求解线性方程组模块,并与第二 步并行化改造后的模块实现无缝集成;
[0057] 两级分区的目的是为了保证并行计算时分配给每个节点以及每个处理器内核的 工作载荷尽可能达到均衡化。如图4所示,若并行计算启动的节点机总数M为2,每个节点 的处理器内核总数N为4,则进行两级分区时需要首先将结构有限元网格并行剖分为2个一 级子区域,然后再将每个一级子区域进一步独立地剖分为4个二级子区域。
[0058] 两次缩聚建立在两级分区的基础上,它通过先后消去二级子区域和一级子区的内 部自由度达到大规模缩减求解问题规模的目的。如图5所示,两次缩聚实现的具体步骤如 下:
[0059] (1)按照先内部自由度后边界自由度的编号原则同时独立形成各二级子区域的系 统平衡方程。
[0060] 对第i个二级子区域来说,它的系统平衡方程为
[0061]
【主权项】
1. 一种两级分区两次缩聚并行计算系统开发方法,其特征在于,包括如下步骤: 第一步,根据求解问题的数学方程表达式通过有限元程序自动生成系统FEPG产生有 限元分析串行计算所需的全部程序源代码; 第二步,去除所述全部程序源代码中的求解线性方程组模块,并基于区域分解法对所 述全部程序源代码中的剩余模块进行并行化改造; 第=步,基于两级分区和两次缩聚策略开发并行求解线性方程组模块,并与第二步中 并行化改造后的所述剩余模块实现无缝集成,得到集成后的系统; 第四步,对所述集成后的系统进行编译和调试,生成有限元分析并行计算可执行程序。
2. 根据权利要求1所述的两级分区两次缩聚并行计算系统开发方法,其特征在于,所 述第一步中,所述全部程序源代码由四个模块组成;单元分析模块、形成系统平衡方程模 块、求解线性方程组模块W及计算应变应力模块; 所述单元分析模块,用于根据单元的类型和插值函数实现单元刚度矩阵和质量矩阵的 计算; 所述形成系统平衡方程模块,用于通过组集单元刚度矩阵和外部载荷向量完成系统总 体刚度矩阵和总体外部载荷向量的计算W形成系统平衡方程; 所述求解线性方程组模块,用于通过求解系统平衡方程得到系统各节点处的位移值; 所述计算应变应力模块,用于根据求得的位移值实现系统应变、应力的计算。
3. 根据权利要求1所述的两级分区两次缩聚并行计算系统开发方法,其特征在于,所 述第二步中,所述基于区域分解法对剩余模块进行并行化改造,具体包括步骤;并行计算环 境的添加、各子区域节点的重新编号W及程序数据传递方式的改变;其中: 所述并行计算环境的添加,是利用消息传递接口 MPI初始化和退出指令将串行程序转 换成并行程序; 所述各子区域节点的重新编号,是将每个子区域的节点编号映射到从1开始的连续正 整数集上; 所述程序数据传递方式的改变,是指通过将不同子列程间的数据传递方式由文件传输 改为函数接口参数传输。
4. 根据权利要求1所述的两级分区两次缩聚并行计算系统开发方法,其特征在于,所 述第=步中,所述两级分区策略,是通过两级剖分实现的,具体为: 首先将结构有限元网格并行剖分为M个一级子区域,然后再将每个一级子区域进一步 独立地剖分为N个二级子区域;其中,为与多核分布式并行计算环境相适应,M等于并行计 算每次启动的节点机总数,N等于每个节点机的处理器内核总数。
5. 根据权利要求4所述的两级分区两次缩聚并行计算系统开发方法,其特征在于,所 述第=步中,所述两次缩聚策略,是通过依次在二级子区域和一级子区域上应用舒尔补方 法实现缩聚过程的,具体为: 首先同时独立形成各二级子区域平衡方程,并经缩聚消去各二级子区域内部自由度; 然后通过将同一节点机内所有二级子区域界面方程组集W形成相应一级子区域平衡方程; 再经缩聚消去各一级子区域内部自由度,得到各一级子区域仅与边界自由度相关的界面方 程。
6. -种并行计算系统,其特征在于,所述并行计算系统是通过权利要求1至5中任一项 所述的两级分区两次缩聚并行计算系统开发方法得到的。
【专利摘要】本发明提供了一种两级分区两次缩聚并行计算系统开发方法及相应的并行计算系统,包括步骤:(1)根据求解问题的数学方程表达式通过有限元程序自动生成系统产生有限元分析串行计算所需的全部程序源代码;(2)去除程序源代码中的求解线性方程组模块,并基于区域分解法对剩余模块进行并行化改造;(3)基于两级分区和两次缩聚策略开发并行求解线性方程组模块,并与上一步并行化改造后的模块实现无缝集成;(4)对集成后的系统进行编译和调试,生成有限元分析并行计算可执行程序。本发明不但能够为各个学科和领域的有限元分析问题提供并行解决方案,而且能够提高有限元分析并行计算软件开发的质量和效率。
【IPC分类】G06F17-11, G06F9-44
【公开号】CN104572109
【申请号】CN201510026022
【发明人】金先龙, 苗新强, 杨勋, 占昌宝, 罗川
【申请人】上海交通大学
【公开日】2015年4月29日
【申请日】2015年1月19日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1