面向对象有限元并行计算框架PANDA

2022-03-05 08:32:23 | 浏览次数:

摘 要:为提高我国工程数值模拟软件的开发能力,面向武器工程大规模并行计算需求,基于层次化、模块化及面向对象的现代软件设计技术,分析探讨有限元并行计算框架的设计方法,形成初步的基础开发框架PANDA 0.1版;详细描述PANDA框架的层次结构设计,并探讨该基础开发框架设计中的底层网格数据结构设计、有限元共性管理模块及并行策略等部分关键技术;简要介绍PANDA框架的扩展应用方法.研究表明:采用框架技术进行结构力学有限元程序开发,具有高效、快速和便捷等优点.关键词:并行计算框架; PANDA; 有限元; 软件开发; 网格数据结构中图分类号:TP311.5;TB115 文献标志码:

A

Objectoriented finite element parallel computation framework PANDA

SHI Guangmei

1a, HE Yingbo1, WU Ruian

1a, MO Jun

1a, LI Yangchun

1b, ZHANG Yalin

1b

(1. a. Institute of Systems Eng.; b. Computer Application Institute, China Academy of Eng. Physics, Mianyang Sichuan 621900, China)

Abstract: Based on the modern software design technologies such ashierarchy, modularitzation and objectoriented technique, and the requirements of large scale parallel computation for weapon engineering, the design method of finite element parallel computation framework is discussed for China to improve the development ability of engineering simulation software, i.e., PANDA version

0.1 is preliminarily implemented. The hierarchy structure design of PANDAframework is detailed, the key technologies such as design of basic mesh data structure, common management module of finite element and parallel strategy are discussed, and thePANDA framework extension and application methods are briefly introduced. The study indicates that the framework technology is efficient, fast and convinient for finite element program development of structure mechanics.Key words: parallel computation framework; PANDA; finite element; software development;mesh data structure

收稿日期:2010[KG*9〗08[KG*9〗17 修回日期:2010[KG*9〗10[KG*9〗18基金项目:中国工程物理研究院2007年预先研究重大项目(ZDXM03)作者简介: 史光梅(1974—),女,新疆奇台人,工程师,硕士,研究方向为结构传热学分析和高性能计算,(Email)sgm9894@sina.com0 引 言

工程和制造业的生命力在于产品创新.现代产品的设计很大程度上依赖于对知识和信息的把握,先进可靠的数值模拟是获取知识和信息的重要手段之一.进入21世纪以来,随着计算机工程、软件工程和工业设计技术的不断发展,工程数值模拟软件的发展面临诸多新的挑战,如计算机体系结构日趋复杂,数值模拟软件模块和分析功能越来越多,不同类型分析软件之间互操作性需求越来越高,产品设计中对数值模拟的充分性、可靠性、预测精度和计算效率的要求也越来越高.

面对这些挑战,西方发达国家正在加速发展高性能数值模拟系统,如美国已将高水平数值模拟能力建设提升到国家战略高度,大力发展“先进模拟与计算(advanced simulation and computing program plan)”能力,提出“基于实验的武器研制转向基于数值模拟为主”的战略发展方向.近10年来,美国动用大量人力和物力进行先进武器数值模拟系统的开发和研究:在并行计算机上开展武器系统从库存到靶目标的多尺度、多物理场的数值模拟,包括发射动力学、爆炸分离响应、再入过程的振动问题等.

[12]

自20世纪70年代中期开始,我国在工程数值模拟与程序开发方面逐步踏上自主研发之路,如大连理工大学研制出JIFIX有限元软件,航空工业部研制出HAJIF系列程序,北京大学研制出SAP84,北京农业大学研发FEM软件等.进入21世纪后,我国自主知识产权模拟软件逐渐市场化,获得一定发展:北京飞箭软件有限公司推出FEPG,郑州机械研究所推出紫瑞CAE,大连理工大学开发针对汽车覆盖件成形与模具设计的的KMAS软件,华中科技大学针对铸造成型开发华铸软件,清华大学、上海交通大学在注塑成型领域也推出相应的分析软件.

传统的面向过程的结构化程序设计方法在程序的可扩展性、代码复用性及规模、质量和效率等方面存在一定局限性,而后来出现的面向对象的程序设计方法则提高部分代码的可重用性,在一定程度上提升软件的开发效率和可靠性.随着有限元计算在多尺度、多物理场等复杂应用方面的发展,人们对数值模拟技术提出新的、更高的要求,为适应现代大规模并行计算环境和快速发展的数值模拟研究需求,出现基于软件框架的开发模式,这是对面向对象程序设计方法的进一步提升,是更高效、可靠的数值模拟软件开发方式:软件工程领域中的框架不仅能重用代码,还可重用设计与分析,最大限度地实现系统级的复用,因此并行计算框架的开发在高水平数值模拟能力建设中具有基础性地位

;框架研究也越来越受到研究人员的重视,并被成功应用到多个领域.国外正在研究和发展的应用于科学和工程计算的并行计算框架有SIERRA

等.国内众多学者针对不同应用领域也陆续开展软件框架的研究

:北京应用物理与计算数学研究所研制并行自适应结构网格应用支撑软件框架JASMIN

,并发展基于该框架的粒子模拟与辐射输运模拟等应用程序.

为提升专门应用领域的数值模拟能力,“十一五”期间,中国工程物理研究院从2007年开始启动“武器工程大规模并行计算框架研究及基础平台开发”重大专项研究工作,旨在为工程力学数值模拟中涉及的精细物理建模问题、大型多功能应用软件高效率协作开发及复杂多尺度、多物理场耦合分析等问题提供集成开发和应用环境.项目实施坚持长期可持续发展的路线.当前主要研究内容包括1个基础开发框架(以下简称PANDA框架)和1个应用集成平台,前者由一些面向对象的基本服务组件组成,为并行计算有限元应用软件的开发提供具有共性的通用基础性支撑;后者由一些具体的应用集成模块和计算应用软件组成,为复杂工程力学问题的数值模拟提供集成化的应用支撑环境.目前,借助PANDA框架所提供的基本网格、场等底层数据结构服务组件以及应用参数解析、数据输入输出和求解器等基本工具组件,已开发出5个基于框架的有限元应用计算程序,初步具备结构静力、传热、模态、振动和冲击分析能力,但功能比较简单,需进一步扩充其功能或开发新的程序,支持更多类型的问题分析.

本文重点描述PANDA框架的层次结构设计,并对其中的部分关键技术进行探讨,如底层网格数据结构设计、有限元共性管理模块及PANDA框架的并行策略等,最后介绍PANDA框架在结构力学有限元程序开发中的扩展应用方法.1 框架组件层次结构设计

良好的框架能提供可重用的抽象算法及高层设计,并可将大系统分解成小的组件,这些组件间的内部标准接口使在已有组件基础上通过组装建立各种各样的系统成为可能.只要符合接口定义,新组件就能插入框架中,组件设计者就能重用框架的设计.此外,若所有设计人员都按照框架的思想分析事务,就能将其划分为同样的组件,采用相似的解决方法,使采用同一框架的设计人员和分析人员之间能够沟通.

PANDA框架遵循面向对象、层次化、模块化的现代软件构建技术,将与计算机科学和计算数学相关的关键计算技术隔离出来,以库函数的方式形成一系列基础服务组件.不同功能组件通过约定的接口协同工作、传递数据、完成计算服务,为大规模非结构网格上的多尺度、多物理场工程力学问题的并行计算提供基础性支撑,使计算力学应用程序开发人员在具体问题解决过程中只需将大部分精力放在与力学相关的算法实现上,而不必关心网格上的数据在硬件系统中的并行分布和并行计算细节.按照传统的串行程序设计思路组织计算流程和操作分布式网格数据,就能自动实现高效率的并行计算,大幅提升软件的开发效率.

PANDA框架的基础服务组成和层次结构设计参考SIERRA的设计思路.

[14]目前的代码实现主要结合PANDA框架的近期目标,以SNL的开源代码Tahoe

[15]为基础,通过隔离与应用相关的代码,并基于非结构网格上结构静力学、振动力学和冲击力学有限元计算中的共性需要,对Tahoe底层数据结构进行重构,集成PHG

[16],Hypre

[17]和Trilinos

[18]等高性能数学求解器,形成PANDA框架的0.1版本,初步具备实现结构静力学、振动力学和冲击力学大规模有限元并行计算程序开发的能力.

PANDA框架0.1版本的服务层次结构见图1.图 1 PANDA框架0.1版本的服务层次结构

该服务层次结构具有良好的可扩展性,能支撑武器工程结构有限元高性能并行计算应用开发.处于底层的基础支撑层由几何、网格、场变量、并行分区与通信、基础数据和有限元共性管理模块等部分组成.计算力学应用程序开发人员通过统一规范的接口存取和利用底层数据,无须关注细节.处于第2层的数值共性层提供应用参数解析、I/O服务、求解器服务和积分器服务等具有共性的计算方法和数值算法.经过实践检验,创新的数值方法和高性能算法可不断地沉淀到框架中.处于顶层的应用个性层包含单元(库)及其接口服务、材料模型(库)及其接口服务,根据不同的应用需求,可构成不同的C++抽象基类,实现这些基类,就可以在PANDA框架上求解实际问题.2 基础开发框架设计中的部分关键

技术[HS)]2.1 底层网格数据结构设计

几个典型的并行计算框架JASMIN,SIERRA和由美国能源部高性能科学计算程序中心开发的面向千万亿次高性能计算模拟的通用技术的集成(Interoperable Technologies for Advanced Petascale Simulations,ITAPS)都强调对底层数据的共性进行高度抽象与提炼,并按层次化、模块化的模式进行体系结构设计.相比较而言,ITAPS更偏重于提供高性能计算的底层服务,其发展目标是将几何、网格及场变量操作服务的通用技术进行集成,以第三方库的形式为高性能科学计算应用程序提供服务,尽量不对应用程序代码产生干扰.

[19]

在底层基本数据结构方面,并行计算框架都无一例外地强调对网格及附着于网格之上的场变量数据结构进行统一规范的定义,提供网格与场变量数据的存储、通信及自适应与动态负载平衡等操作服务.

PANDA框架设计节点(node)、边/面(side)和单元(element)等3种类型的网格实体,支持任意网格实体的连接,允许离散问题域采用混合单元拓扑形状.另外,根据材料类型、初始条件、边界条件以及约束等物理需求,同种类型的网格实体可有序或无序地组合为相应的网格实体集.每个物理域内的网格又由这些网格实体集组成,并允许定义各网格实体集的交集和并集.PANDA框架中网格实体的层次关系见图2.基于这种分层划分策略获得的单元集中每个单元的计算量比较接近,在网格区域分解和考虑动态负载平衡时便于统计单元计算负载权重.图 2 PANDA框架中网格实体的层次关系

基于物理应用,PANDA框架以“单元—单元集—单元块—单元组”的分层形式予以组织,见图3.与物理域相对应,在PANDA框架的有限元应用中,每个网格实体单元对应1个物理单元,以单元为单位进行计算.基于不同的单元拓扑和插值计算策略,将整个物理域划分为多个单元组,每个单元组又可根据材料本构模式或材料参数的不同划分为多个单元块,每个单元块由1个或多个网格实体单元集组成.所有的计算策略作用于单元集,并遍历其中包含的单元.

图 3 PANDA框架的网格单元数据结构

PANDA框架的网格模型文件可由第三方软件生成,属于离散模型文件的子集.网格模型文件包含所有节点的坐标及节点之间的连通性信息,不包括任何边界条件或求解参数.

根据区域分割的结果,在PANDA框架中将存储在本地处理器的节点数据分别定义为本分区的内部节点、边界节点和外部节点等3种类型.将存储在本地处理器的单元数据分别定义为本分区的内部单元和边界单元2种类型.根据通信需求,又将存储在本地处理器的节点数据分别定义为本分区接受数据的节点(即本分区的外部节点)和本分区发送数据的节点(即本分区的边界节点).基于这种划分的节点和单元等网格实体类型可根据不同的区域分割方式(按照节点图或单元图进行剖分)组合成存储在处理器中的网格实体子集、处理器拥有的网格实体子集和处理器共享的网格实体子集3大类,以方便、灵活地适应PANDA框架所支持的多种区域分割方法.PANDA分布式网格剖分信息数据结构见图4.对分区网格数据结构的这种处理方式使得PANDA框架具有更强的适应性和可扩展性.

(a)按照节点图剖分的分区网格示意(b)按照单元图剖分的分区网格示意(c)按照节点图剖分后的网格数据结构分布(d)按照单元图剖分后的网格数据结构分布图 4 PANDA分布式网格剖分信息数据结构

2.2 有限元共性管理模块设计

尽管不同类型的有限元分析理论基础可以有巨大差异,但它们都存在相似的数据结构和处理方法.

[20]为满足针对特定功能的有限元结构力学分析软件的高效、快速开发应用需求,PANDA框架对基本的有限元数据结构和分析过程进行封装,通过构建有限元管理器(FEManager)、数据模块管理器以及有限元分析运行管理器等类反映各种有限元分析的共性.有限元管理器负责构建所有模块管理器的抽象定义,将其作为系统骨架完成各抽象子组件间的信息传递并控制整个有限元分析过程.该层次完全基于有限元法分析软件运行过程和属性的共性,几乎不涉及具体的数值计算.有限元管理器与其他各模块管理器的关联关系见图5,可知有限元管理器处于核心地位,负责定义抽象计算流程、管理模块组件、封装模块管理器句柄、调用模块接口函数定义顶层接口和提供模块之间的交互作用等,每个模块管理器对特定的数据和功能负责.设计形成的有限元管理器类是对有限元分析过程的总体抽象,其属性描述所建立的有限元数据结构,其方法提供有限元基本流程的抽象.图 5 有限元管理器与其他各模块管理器的关联关系

在其他各模块管理器中,网格模型管理器(ModelManager)负责管理网格模型数据信息,如网格模型文件格式和名称、空间坐标维数及节点坐标数据等;输入/输出管理器(IOManager)负责支持各种不同类型的网格模型文件输入格式,并负责控制以何种形式输出计算结果数据;节点管理器(NodeManager)负责封装和定义节点计算所涉及的数据结构,控制节点计算过程,并保存场变量数据,完成计算参数的定义与提取、数据及计算结果的提取与计算、装配系统方程贡献、结果输出与重启动数据读写、场变量的计算与插值、坐标更新与自由度(场)更新和方程编号等基本操作;单元管理器(Element)负责构建单元对象列表,并提供与单元计算相关的某些属性;通信管理器(CommManager)用于在各处理器(CPU)间创建镜像节点,管理分区信息,操作网格模型管理器为本地节点创建环境;时间管理器(TimeManager)对涉及到求解过程变量或时间的所有参数负责,包括起始时间、终止时间、时间步长及随时间变化的边界条件等,并负责处理计算过程中的时序安排;求解器管理器(Solver)负责封装系统方程数据结构,提供统一操作接口,定义抽象求解流程,如初始化、求解与结束当前系统方程,装配系统方程数据,定义和提取求解参数等;积分器管理器(Integrator)负责为各种类型的积分器提供统一的部分接口.上述8个模块管理器类几乎封装所有有限元分析中的基本数据(节点、单元和载荷等),从而构成PANDA框架的有限元分析数据结构.

此外,在PANDA框架中还设计有限元分析运行管理器(FEExecutionManger),实现对各种不同应用领域有限元分析器的管理、任务分发及运行流程控制等.有限元分析运行管理器将有限元应用分析运行过程高度抽象为4个步骤:(1)任务输入;(2)根据任务确定合适的分析器,创建有限元分析器类对象,并将有限元分析器类对象实例化;(3)提取离散模型数据文件参数列表信息,完成组件信息提取、对象创建、内存空间分配和初始化工作等;(4)调用Solve函数完成有限元分析任务.在调用Solve函数进行计算求解的过程中,需要具体的有限元应用程序控制其所有求解区域的计算,包括执行多个时间步、协调区域间的弱耦合以及在各区域时间步之间进行子循环等.2.3 PANDA框架的并行策略

在分布存储并行环境下实现有限元并行化的策略可归结为基于并行数值分析方法的和基于物理分割构造的并行有限元.

[21]其中,前者的实现方式有直接利用并行数值分析工具软件包和分割系统方程并行求解的策略;后者的策略有子结构法、单元逐集(Element by Element,EBE)法和单元重组(Finite Element Tearing and Interconnecting,FETI)法

[22]等.

在大型复杂结构(如核电站、海洋平台、超高层建筑和水坝等)的工程整体分析计算中广泛涉及非线性系统的迭代、大规模线性方程组和特征值问题的求解,占绝大部分的计算量,是计算效率甚至是计算成败的决定性因素之一.国内外众多学者针对数学求解算法展开大量的研究工作,目前已形成许多线性方程组求解器包、特征值求解器包等,如PHG,Hypre,Trilinos,PETSc

[23]和FETI等.因此,在PANDA框架的数值共性层中,设计求解器库服务组件,为应用程序开发人员和用户提供统一规范的接口及丰富的数值求解算法,让应用程序开发人员将更多的精力投入到关注物理力学行为的过程中.

PANDA框架首先采用网格区域分割的方法实现计算任务的分解,即运用区域分割算法将几何网格区域剖分为多个子区域,各处理器存储各子区域内相应的数据(单元、节点和载荷等)并进行单元计算;然后再利用一些现成的求解器包,如PHG,Aztec(迭代并行求解器),SuperLU(直接并行求解器)及PETSc(稀疏线性、非线性方程组并行求解器)等将系统方程求解过程并行化.将单元分析和系统方程组装过程并行进行,大大提高计算效率,分割求解算法示意见图6.PANDA框架的应用程序通过区域分割算法基于消息传递MPI平台实现并行计算.图 6 分割求解算法示意

3 框架的扩展与应用

利用PANDA框架,结构力学有限元应用程序的开发者可扩展新的有限元分析领域,开发新的程序支持新类型问题分析,还可通过创建新的单元类型、添加新的材料模式或支持新的加载模式等方式,不断扩充已有程序的功能.如基于PANDA框架扩充1个新的热力耦合有限元分析程序的主要方法是建立有限元管理器类(FEManagerT)的派生类,该派生类提供的方法能完成所要求的有限元分析:首先以有限元管理器类为基类,派生出热力耦合分析器类(ThermomechanicalCouplingManagerT),该类将继承基类中的属性和方法,并提供一些新的属性和方法(如耦合分析算法)来完成热力问题的有限元分析;然后在添加热力耦合单元类与材料模型类的基础上完成实例化,并将其分别加到PANDA框架的单元管理列表和材料管理列表中;最后在函数FEManagerT::New中添加热力耦合分析器类的名称并创建实例,以便有限元分析运行管理器对其进行管理,并分发任务.扩充新单元类的基本过程见图7.

图 7 扩充新单元类的基本过程

首先根据需要在PANDA框架应用个性层的单元库中选定单元基类,派生出需要的新单元类;然后修改单元管理列表类的实现文件(ElementList.cpp)完成所派生新单元类的动态生成;最后修改所派生新单元类所在目录下的单元配置文件和编译制导文件,完成源程序的编译和调试.通过以上3步就可实现新单元类的扩充.材料模型的添加与单元类的添加过程类似.在PANDA框架的扩展应用过程中,程序开发人员只需关注具体的物理力学分析算法,按照编写传统的串行程序一样编写相应代码,不必考虑底层的网格数据结构、方程组求解和并行算法及实现等细节.框架良好的系统复用性和扩展性使得程序开发更高效、便捷,因此:采用框架技术开发新的软件,可使重用代码大大增加,软件生产效率和质量也得以提高,且软件设计人员更专注于对领域的了解,使需求分析更充分;同时,这种大力度的重用使得开发费用降低、开发时间缩短、软件质量提高、领域内的软件结构一致性好,有利于项目内多人协同工作,大大节省人力、物力和时间的开销.4 结束语

参考SIERRA框架的服务体系设计思想,基于层次化、模块化及面向对象的框架设计思路,构建出统一的、面向对象的有限元并行计算框架PANDA,目前已具有5个基于该框架的有限元应用程序.PANDA框架的使用对于降低结构力学有限元应用程序的开发成本、提高软件质量以及缩短开发时间具有现实意义.

良好的框架必须是健壮、有效、可升级、可扩展以及可维护的.本文所介绍的PANDA框架结合其近期目标进行设计,能基本满足面向并行非结构网格上的结构力学有限元分析应用,可为基于该框架开发的静力(包含热力问题)、振动和冲击等物理力学问题的有限元应用程序提供基本的网格、场等底层数据结构服务组件以及应用参数解析、数据输入输出、积分器和求解器等基本工具组件.但是,在超大规模并行环境下解决大型复杂结构问题,就需要PANDA框架具有管理适应性、多物理场和力学模型等复杂应用的能力,目前的初步设计尚不能支持超大规模并行计算应用,今后将考虑以现有基本结构设计为基础,进一步发展网格自适应、动态分区和负载平衡等影响计算性能的基础服务,提高PANDA框架的高性能计算服务能力.致谢:中国工程物理研究院总体工程研究所王柯颖、嵇晓宇、徐建国、孙乐、陈成军、张元章和白晓勇等参与本文的工作,郝志明主任和肖世富主任对本文的工作给予大力支持和帮助,计算机应用研究所李于锋、石正军、卢纪、李纪锋等也参与本文的工作,北京应用物理与计算数学研究所的莫则尧副所长和曹小林研究员为并行计算框架的研究提供指导和帮助,在此一并表示深切的谢意!参考文献:

[1] MCGLAUN M. Sandia’s engineering code development under

ASCI[R]. SAND20031238p, 2003.

[2] SWILER L P, TRUCANOL T G, OBERKAMPF W L. ASC predictive science academic alliance program validation and uncertainty

quantification[R]. SAND20065573p, 2006.

[3] 吴瑞安, 何颖波, 郝志明, 等. 大力发展自主大规模工程力学应用软件

[J]. 计算机辅助工程, 2010, 19(3): 1115.

[4] Sandia National Laboratories. A computational framework for developing complex multiphysics engineering mechanics

applications[R]. SAND20023637p, 2002.

[5] SAMRAI Developers. SAMRAI home

page[EB/OL]. (20091226)

[20100110]. .cn/qkpdf/caee/caee201004/caee20100403-3.pdf" style="color:red" target="_blank">原版全文 推荐访问: 并行 面向对象 框架 有限元 计算