2. 广州船舶及海洋工程设计研究院,广东 广州 510250;
3. 华中科技大学 计算机科学与技术学院,湖北 武汉 430074
2. Guangzhou Marine Engineering Design & Research Institute, Guangzhou 510250, China;
3. School of Computer Science & Technology, Huazhong University of Science and Technology, Wuhan 430074, China
利用有限元法[1-2]研究船舶结构疲劳强度分析问题是一种高效能、常用的方法.从有限元分析的理论和实践可以知道:有限元分析最主要的分析时间在于数值计算上,对于结构分析,主要是求解稀疏矩阵特征值和线性方程组.在船舶设计中,对于各种大型和超大型的复杂结构,由于受计算机CPU计算速度的限制以及有限存储空间的制约,使用传统的有限元分析软件分析这些超大规模的工程问题,往往会造成计算时间过于漫长,甚至无法进行分析计算[3].这己成为传统有限元分析软件在船舶设计中应用的瓶颈问题[4].
国内外已有很多关于有限元并行计算的研究[5-9],有限元分析软件的研究与开发主要分成两大类:商业有限元软件和开源有限元软件.商业有限元分析软件有ANSYS、ABAQUS、NASTRAN、ADINA等; 开源有限元分析软件有OpenFOAM、Code Aster、CalculiX、Z88等.
ANSYS软件是融结构、流体、电场、磁场、声场分析于一体的大型通用有限元分析软件,ANSYS系统擅长于多物理场和非线性问题的有限元分析,在铁道、建筑和压力容器方面应用较多.ABAQUS擅长于非线性有限元分析, 可以分析复杂的固体力学和结构力学系统,特别是能够驾驭非常庞大的复杂问题和模拟高度非线性问题.ABAQUS不但可以做单一零件的力学和多物理场的分析,同时还可以做系统级的分析和研究,其系统级分析的特点相对于其他分析软件来说是独一无二的.NASTRAN系统擅长于线性有限元分析和动力计算,它在航空航天领域有着崇高的地位.NASTRAN的求解器效率比ANSYS高一些.OpenFOAM是一个C+ +库文件包,它具有用户友好的偏微分方程描述语法、有较强的非结构化多面体网格的处理能力和拥有现成的涵盖宽领域的应用和模型等优点,但其开发文档缺乏足够的细节,学习曲线平缓,入门困难.Code Aster是由法国EDF电力集团开发的一款开源的主要用于结构分析的有限元数值仿真软件,主要由Fortran和Python语言开发,它是一个基于有限元方法的力学求解器,可求解广泛的力学问题包括:3D热分析、线性和非线性静力学及动力学、机械、压力容器和土木结构的力学分析等.除了固体力学有限元软件的标准功能之外,Coder Aster还能在各种领域进行一些特定的分析,如:疲劳、损伤、断裂、接触、岩土、多孔介质、多物理场耦合等.
大型商业有限元分析软件在价格上比较昂贵,并且随着支持处理器数的增加而价格翻倍,同时受License的时间限制.开源有限元求解器在超级计算机上的移植或者开发比较少.文献[10]对有限元分析软件在超级计算机上的并行化移植开发方法进行了探索,提出3种方案:一是购买商业性并行有限元软件; 二是完全自主开发; 三是系统集成,把商业性串行有限元软件与超级计算机并行计算相结合,形成并行化的集成系统.文献[11]论述了商业性大型有限元分析软件Nastran在神威超级计算机系统上的并行开发思路和实现方案,为超级计算机在有限元并行计算上探索出一条新的途径.文献[12]阐述了Ansys分布式计算在Linux集群技术构建的高性能计算平台下的关键配置和应用,对如何发挥Ansys的并行优势提出了建议.
以上研究都是基于商业有限元分析软件的移植与开发,并没有从底层去对其进行改造,使其突破商业有限元软件对核数和结点数支持的限制,依旧没有摆脱国外对技术上封锁的局限.本研究尝试以现有的开源有限元求解器Calculix[13]为实验对象,基于超级计算机先导系统,对Calculix的计算模块CCX进行并行化改造,探索一条高效快速的技术路径,使其适配超级计算机多结点环境,提高计算效率,并基于C/S(Client/Server)搭建有限元并行计算分析平台.
1 Calculix有限元并行方法 1.1 国家超级计算广州中心先导系统先导系统由512个计算结点和2个登录结点,以及存储结点所组成[14].登录结点安装RedHat Enterprise Linux 5.5 x86_64版本操作系统,定制了安全策略,遵循POSIX、LSB等标准,提供了64位程序开发与运行环境.计算结点为了保证计算效率,安装RedHat Enterprise Linux 5.5 x86_64版本精简操作系统,所有计算结点和I/O服务结点通过天河高速互联网络互连.计算结点配置为两个6核Intel Xeon X5670处理器,运行频率2.93 GHz,共计12核,配备24 GB内存和Tesla M2050 GPU加速处理器一块,显存3 GB.2个登录结点为八路八核共计64核的SMP架构服务器.全系统共计1 024个CPU和512个GPU,内存容量13.8 TB,其中CPU提供高性能的指令级并行计算能力,GPU主要提供高性能的数据级并行计算能力.
先导系统的软件系统包括操作系统、编译系统、资源与作业管理系统、并行程序开发环境、全局并行文件系统等,支持广泛的第三方软件,使开源有限元求解器Calculix在先导系统上的并行化改造和移植成为可能.
1.2 有限元分析方法
|
图 1 一般有限元分析流程图 Figure 1 The flowchart of finite element analysis |
在有限元分析中,单元分析、推导单元刚度方程和求解方程这3个步骤是有限元分析的关键所在.尤其是求解方程,将占整个有限元分析的80%以上的计算量.因此,有限元分析在船舶设计领域中的并行计算的改造主要也是针对这3个步骤进行.
1.3 Calculix分布并行计算改造方法迭代法是一种用一组近似值来逼近真实解的算法.典型的迭代法都比直接求解所需要的存储量更少[16].由于避免了对零元的操作,这些算法还能进一步减少计算量,通常也都适于并行化.有限元分析中,需要求解线性方程组Ax = b,其中,A为n×n的稀疏矩阵,x为未知量向量,b为n维向量. Jacobi法开始用一个初始向量x0作为近似解.重复地根据当前近似值xk计算新的近似值xk+1,推导出如下规律:
| $ x_i^{k + 1} = \frac{1}{{{a_{ii}}}}\left( {{b_i} - \sum\limits_{i \ne j} {{a_{ij}}x_j^k} } \right). $ |
对此过程进行基于Message Passing Interface(MPI)的并行化求解,在超级计算机上并行求解的流程描述如图 2所示.
|
图 2 并行求解流程 Figure 2 The process of parallel solving |
Calculix主要包括两大模块:ARPACK和SPOOLES.ARPACK(ARnoldi PACKage)是用来求解大规模特征问题的软件包,可以解决来自重大应用领域内的大规模对称、非对称(包括Hermiton、non-Hermiton)和广义特征值问题.SPOOLES(SParse Object-Oriented Linear Equations Solver)用于求解稀疏的实数或复数线性方程组.接口P_Solver的设计是Calculix用来调用SpoolesMPI实现多结点并行计算的中间接口.基于超级计算机的计算优势,以Calculix为核心,结合ARPACK和SPOOLES建立有限元分布并行计算分析系统,该系统的整体架构图如图 3所示.Calculix的后端计算模块CCX既可以直接调用SpoolesMT实现在单个计算结点上进行多核多线程计算,也可通过P_Solver接口间接调用SpoolesMPI在多个结点上实现分布并行计算.CCX除了在管理结点上部署,同时分布在各个计算结点上,以实现管理结点对各个计算结点上子任务的任务管理.
|
图 3 有限元分析系统整体架构图 Figure 3 Whole framework of finite element analysis system |
通过VPN远程登录广州超算中心先导系统,有限元分析系统的部署流程主要有以下几个步骤:
(1) 获取Calculix、ARPACK、SPOOLES的源代码,通过SSH远程连接广州超算中心先导系统上传源码至用户目录.
(2) 修改ARPACK源码里的ARmake.inc文件,使其指向正确的编译器,保存后编译源码,生成libarpack_SUN4.a文件,修改SPOOLES源码,添加MPI支持库函数.
(3) 用基于MPI改造后的Calculix部分文件代替原有文件,重新配置Calculix的makefile文件,指向ARPACK和SPOOLES目录,编译器指向MPICC.
(4) 编译Calculix后在src目录生成名字为ccx_2.6的文件.添加src目录至系统环境变量.
在任务执行过程中,通常不能准确地估算任务量,每次执行都存在较大的差异,任务的运行时间并不严格正比于结点计算能力和任务量大小.在MPI并行程序运行过程中,鉴于先导系统的作业提交模式和Calculix的运行机制,为实现负载平衡,设计图 4所示的动态任务调度方案,首先将一个包含多个工况的文件按工况大小独立划分成多个大小不同的计算任务,然后根据任务数大小和申请计算结点的繁忙程度执行不同的分发策略,遍历各个计算结点,将任务的大小和计算结点繁忙程度相匹配,大任务对应较空闲的计算结点.如果任务数不大于计算结点数,一次性分发完所有任务给计算结点; 否则进行异步方式的多轮分发,首次给所申请资源中的每个计算结点分配一个任务,当某个计算结点计算完毕返回结果后就立刻给它分配新任务,直到所有计算完毕.
|
图 4 动态任务调度流程图 Figure 4 The flowchart of dynamic task scheduling |
有限元分布并行计算分析系统的工作流程如图 5所示.有限元分析一般分前处理、求解、后处理3个步骤.
|
图 5 系统工作流程图 Figure 5 System working process |
前处理包括产生一个有限元模型的几何体的全过程,输入物理特性,描述边界条件和载荷,以及检查模型,该系统既可以用Calculix的CGX模块完成前处理,也可以从外界输入模型,比如用商业有限元分析软件Abaqus.
Calculix的另一模块CCX接收前处理后的文件,生成数学模型,调用在超计算机上基于MPI开发的并行求解程序,通过并行I/O读取矩阵文件,求解结果采用快速文件接口输出,完成整个计算分析过程.
后处理模块可将计算结果以彩色等值线显示、梯度显示、矢量显示、粒子流迹显示、立体切片显示、透明及半透明显示等图形方式显示,也可将计算结果以图表、曲线形式显示或输出.
2.4 平台实现基于C/S(Client/Server)模式搭建了有限元分析平台.平台功能模块如图 6所示.客户端和服务器是一个相对对称的系统,需要互相协作才能完成每个任务.通信模块用于两端数据传输,每次通过VPN登陆先导系统,服务器端程序则会自动启动,任务管理模块实时监听客户端是否有任务请求,同时反馈回先导系统的结点信息到客户端.
|
图 6 基于C/S模式的有限元分析平台功能模块 Figure 6 Functional modules of finite element analysis platform based on C/S model |
客户端界面如图 7所示,界面控制模块:根据用户需求自由调整客户端窗口和局部功能窗口,显示其他功能模块需要的信息; 文件管理模块:在本地可实现对本机文件的管理和先导系统上有限元分析系统分析完的文件进行下载和删除等操作; 任务管理模块:选择需要在先导系统上进行后续处理的船舶数据文件,同时设置需要申请的计算结点数和核数,即可上传到远端的有限元分析系统上进行分析计算,并且在本地客户端实时显示计算任务实时信息; 结点信息模块:查询先导系统所有结点的使用情况反馈回本地,以便合理地申请结点数.
|
图 7 客户端界面 Figure 7 Client interface |
有限元分布并行计算分析系统的实验环境为广州超算中心先导系统.实验使用多个船体相关组件作为测试算例分别对该系统进行测试,测试中采用计算5次求平均值的方法,其中3个测试算例模型如图 8~图 10所示.对所用算例的分析如下:
|
图 8 算例A模型图 Figure 8 Model A |
|
图 9 算例B模型图 Figure 9 Model B |
|
图 10 算例C模型图 Figure 10 Model C |
算例A:节点数是8 092,单元数是7 983;
算例B:节点数是18 753,单元数是15 047;
算例C:节点数是85 968,单元数是85 832.
并行计算中的加速比用并行前的执行速度和并行后的执行速度之比来表示,它表示了在并行化之后的效率提升情况,设T1为单处理器计算同一问题所用时间,Tp为p个处理器求解该问题所需时间,加速比为Sp=T1/Tp,评价算法优劣标准的并行效率Ep=Sp/p,本次试验每个结点使用12个CPU,3个算例的实验测试结果如表 1~表 3所示.
| 表 1 算例A计算结果 Table 1 The calculation of model A |
| 表 2 算例B计算结果 Table 2 The calculation of model B |
| 表 3 算例C计算结果 Table 3 The calculation of model C |
对比表 1至表 3可以看出,计算耗时与参与计算的结点数成负相关关系,随着并行计算结点数增多,算法的效率相对下降,但是加速比保持上升势头,而并行效率下降的趋势变缓,说明并行程序具有较高的并行加速比和良好的可扩展性.
4 结论基于广州超算环境对开源有限元求解器进行并行化优化,充分利用了开源软件的方便改造移植和超级计算机的高性能计算优势,实现了两者的无缝集成,并基于C/S模式搭建了船舶疲劳强度分析并行计算平台,有效降低了船舶设计中有限元分析计算时间,可以完成单机环境下无法求解的复杂模型求解,为使用Calculix对大型有限元分析问题提供了高效的并行化解决方案.后续工作除完善现有系统之外,还将深入研究Calculix与Nastran、Ansys之间的数据转换问题,扩充其数据格式兼容性能.
| [1] | Dhatt G, Touzot G. Finite Element Method[M]. Upper Saddle River, NJ: John Wiley & Sons, 2012. |
| [2] | Bathe K J. Finite element procedures[M]. Cambridge, MA: Klaus-Jurgen Bathe, 2006. |
| [3] | 陈林. 基于Linux机群的大型结构并行有限元方法研究[D]. 河海大学土木工程学院, 2006. |
| [4] | Fu C. Parallel Computing For Finite Element Structural Analysis On Workstation Cluster[J]. International Conference on, 2008, 3(1): 291-294. |
| [5] | Farhat C, Roux F X. A method of finite element tearing and interconnecting and its parallel solution algorithm[J]. International Journal for Numerical Methods in Engineering, 1991, 32(6): 1205-1227. DOI: 10.1002/(ISSN)1097-0207. |
| [6] |
程建钢, 李明瑞. 有限元分析的并行计算方法[J].
力学与实践, 1995, 17(4): 6-12.
Cheng J G, Li M R. Parallel computing method of finite element analysis[J]. Mechanics in Engineering, 1995, 17(4): 6-12. |
| [7] | Mckenna F T. Object-oriented finite element programming: frameworks for analysis, algorithms and parallel computing[D]. Civil Engineering University of California, 1997. |
| [8] | 付朝江. 集群MPI环境下有限元结构分析并行计算研究[M]. 上海大学出版社, 2009. |
| [9] |
李世灵, 傅秀芬, 梁文健. 基于Linux与MPI的集群并行系统的实现[J].
广东工业大学学报, 2007, 24(1): 29-32.
Li S L, Fu X F, Liang W J. Parallel computing based on Linux cluster and MPI[J]. Journal of Guangdong University of Technology, 2007, 24(1): 29-32. |
| [10] |
李渊印, 金先龙, 李丽君, 等. 有限元分析软件并行化移植和开发方法的研究[J].
船舶力学, 2005, 9(04): 69-76.
Li Y Y, Jin X L, Li L J, et al. Research on parallel transplant and development methods of finite elements analysis softwares[J]. Journal of Ship Mechanics, 2005, 9(04): 69-76. DOI: 10.3969/j.issn.1007-7294.2005.04.010. |
| [11] |
李根国, 蔡贵新, 李渊印, 等. 商业性有限元分析软件在神威超级计算机上的并行开发[J].
结构工程师, 2003(z1): 318-323.
Li G G, Cai G X, Li Y Y, et al. Parallel development of commerce FEA software on SW-I Supercomputer[J]. Structural Engineer, 2003(z1): 318-323. DOI: 10.3969/j.issn.1005-0159.2003.z1.072. |
| [12] |
王惠, 丁峻宏. LINUX集群技术构建ANSYS分布式高性能计算平台[J].
高性能计算发展与应用, 2011, 34(1): 61-63.
Wang H, Ding J H. Construction of ANSYS distributed high performance computing platform by Linux cluster technology[J]. Development & Application of High Performance Computing, 2011, 34(1): 61-63. |
| [13] | Dhondt G, Wittig K. Calculix: A free software three-dimensional structural finite element program[EB/OL]. (2014-02-21)[2014-04-23]. http://www.calculix.de/. |
| [14] |
王握文, 陈明. "天河一号"超级计算机系统研制[J].
国防科技大学, 2009, 06(30): 1-4.
Wang W W, Chen M. The research and development of the super computer system tianhe-one[J]. National Defense Science & Technology, 2009, 06(30): 1-4. |
| [15] | 周树荃, 梁维泰, 邓绍忠. 有限元结构分析并行计算[M]. 北京: 科学出版社, 1999. |
| [16] | 吴建平, 王正华, 李晓梅. 稀疏线性方程组的高效求解与并行计算[M]. 长沙: 湖南科学技术出版社, 2004. |
2015, Vol. 32