国家数值风洞(NNW)集成框架系统研发
2020-12-21白汉利陈晓梦
白汉利, 陈晓梦,2, 蒲 巧,*
(1.中国空气动力研究与发展中心, 绵阳 621000; 2.西南科技大学 计算机科学与技术学院, 绵阳 621000)
0 引 言
当前,我国经济发展已经由高速增长阶段进入了高质量发展阶段,国家的发展更加依赖自主创新,尤其是科学技术自主创新。在这种宏观环境下,我国航空、航天、兵器、地面交通、能源、环保、制造等空气动力学相关专业的资助研发投入大幅增长,各类型号、新产品、新技术、新概念不断涌现,面临一系列复杂的空气动力学问题,迫切需要自主研发以CFD(Computational Fluid Dynamics)为核心的多学科耦合的大型软件系统,并配套建设高性能计算机系统,构建空气动力数值模拟平台,形成数值模拟、数值试验、数值飞行、多学科融合和协同优化等能力,支撑相关产业转型升级,这也是国家数值风洞项目(National Numerical Windtunnel,NNW)致力于解决的问题[1-2]。
随着高性能计算硬件由P级计算(PFLOPS,运算速度每秒千万亿次)向E级计算(EFLOPS,运算速度每秒百亿亿次)发展[3-4]以及CFD软件的拓展,其应用需求逐渐从单一功能向多学科耦合模拟、大规模并行计算、高精度和高分辨率以及充分利用计算资源等方面转变。对此,国内外在提高硬件计算能力的同时,也对相关的CFD软件和数值模拟平台不断进行更换,使其具备面向E级计算机高性能计算的能力。如国外的DLR项目Digital-X,集成了流体力学模拟、结构力学模拟、多学科优化等7大领域的软件包,借助合适的高保真、多学科仿真方法,通过数值计算,确定飞机的飞行特性,实现飞机在虚拟计算机环境中的首次飞行,降低了实际研发成本[5];典型的数值模拟软件如ANSYS Workbench、ABAQUS、Nastran等通过对高性能计算环境中间件的建立[6-7],集成了网格划分、CFD模拟、后处理技术,实现了对流体力学、结构动力学、结构热等应用场景的分析模拟;国外开发的科学计算工作流系统如Kepler[8]、Trident[9]、Pegasus[10]、Taverna[11]、Vistrails[12]等,支持科研过程中的复杂步骤按照逻辑关系顺序进行自动执行计算与模拟分析,现已在天文、气象、材料、物理、生物等多个领域应用。
此外,国内陈飙松教授团队一直致力于计算力学的科学研究和工程应用的SiPESC平台[13-14],实现了求解器集成、有限元求解器研发、性能优化等模块,并完成了大量计算分析软件集成案例;安世亚太研发的多学科异构集成平台软件SimCube[15],支持自主及商业计算分析软件的联合仿真、性能优化、界面集成、结果可视化等功能;还有一些公司基于开源CFD 模拟仿真软件和商业软件进行二次开发,对原有软件进行扩展和定制,如蓝威技术有限公司开发的EasyCAE集成平台。但是,目前国内自主研发的这些软件或平台,或是注重功能实现而未对扩展性和通用性进入深入统筹,或是扩展性和通用性较差,软件架构需要升级更新。
因此,为了加快空气动力数值模拟平台的构建、提高研究人员的工作效率、软件的开发效率和实用性、软件之间的通信效率以及计算资源的利用率,作为NNW项目中数值模拟软件平台的重要组成部分,NNW集成框架系统在研究软件系统体系结构、集成方法、工作流管理、数据交换标准的基础上,以中间件为框架核心,为软件系统提供了一个面向分布式的科学计算环境,实现了各学科求解器、前置处理软件、后置处理软件的集成,有效地为用户提供计算流程配置、计算工程监控管理、数据管理功能。
本文第一部分介绍高性能计算环境下数值模拟软件集成的相关工作,第二部分介绍NNW集成框架系统的设计过程,第三部分介绍NNW集成框架系统在实际计算环境下的应用,第四部分总结并展望未来工作。
1 相关工作
在科学计算领域,由于用户对不同软件操作的熟练度有所差异,以及不同的计算机可能存在操作系统不同、应用软件版本不同、软件之间的数据交换格式不统一等情况,因此为用户提供统一的、易于操作和理解的使用方式,是构建面向科学计算领域用户的集成框架的基本要求。另外,提高高性能计算能力的同时并高效利用高性能计算资源、合理调度和管理作业及数据,是科学计算领域需要考虑的重点问题。
1.1 基于Web Portal的高性能计算应用集成
20世纪90年代末,随着UNICORE项目的实现[16]和WebSubmit[17]的首次公开发行,拉开了基于Web Portal的高性能计算应用集成的帷幕。由于高性能计算应用具有复杂多变的特点,用户通过多个应用软件交互来获取数据文件或通过命令行来对作业进行管理时,需要熟悉并掌握相关的软件操作或具备丰富的调试经验,这不仅对于用户极不友好,也不利于科学计算研究工作的进一步开展。考虑到基于Web的图形化交互界面无需用户安装软件或编写脚本,在浏览器中即可访问应用数据或资源,因此,继UNICORE和WebSubmit之后,针对不同领域的基于Web服务的高性能计算研究工作逐渐增多,如美国国防部高性能计算现代化项目HPCMP中提出的基于Web的安全访问以实现高效的超级计算[18],俄罗斯科学院信息传输问题研究所提出的基于Web的计算应用程序发布和分布式执行平台[19],韩国科学技术研究院提出的用于大规模科学计算软件的基于Web的HPC仿真执行框架[20],中国科学院计算机网络信息中心提出的基于Portlet的高性能计算应用集成组件[21]等。
1.2 基于中间件的异构资源访问与数据集成
高性能计算环境下的设备、软件、应用和通信技术等往往具有动态性和异构性,其中,解决数据的不完整性和多源异构性是相关研究人员关心的两大重点问题,因此,整合多源数据和访问异构资源并进行集成成为了关键需求,而中间件在屏蔽底层硬件差异、计算资源的使用差异、集成异构数据、增加软件重用性等方面发挥着重要的作用。为了充分利用高性能计算资源,降低用户使用难度,业界学者致力于研究不同平台和不同领域的中间件研发,如中国科学院计算机网络信息中心设计实现了面向科学计算领域的网格中间件SCE,和优化后承载E级计算的高性能计算环境中间件[22-23],有效地屏蔽了高性能计算资源在使用和信息方面的异构,提高了系统的性能,增强了系统的可扩展性和稳定性。Wan[24]等人通过开发RFID中间件,将独立的功能模块和分布式数据资源集成为可以有序运行的系统,并在过程集成中对数据对象标准化,保证设计过程中数据的一致性,实现数据集成,解决数据管理和信息传输的问题,实现了用于空气动力学建模仿真的集成设计系统。
此外,国外Judy Qiu[25]等人实现了用于数据密集型科学计算与分析的中间件MIDAS,其提供底层资源管理和异构基础设施访问层,支持并行数据分析库在不同资源下跨应用程序高效工作。Maddineni[26]等人利用基于SAGA的分布式应用运行环境的中间件框架DARE集成了分布式和高性能基础设施,其支持动态分配计算资源,具有可扩展性、互操作性、动态执行的特点,现已被应用到多个完全不同领域的科学应用中,促进科学逻辑与高性能和分布式计算基础资源的快速集成。
1.3 科学计算工作流
科学计算工作流的实现对于科学计算具有重要的意义,目前Kepler[8]、Trident[9]、Pegasus[10]、Taverna[11]、Vistrails[12]等典型的科学工作流管理系统已被广泛地应用到天文学、物理学、生物信息学、地球科学等领域,它们提供了流程定义与控制、任务管理、作业调度与执行、容错处理等功能,屏蔽底层资源,实现流程化集成,有效地帮助科学研究人员减少对流程的部署操作等时间花费,专注于具体科学问题的研究,提高求解问题的效率。
科学计算工作流虽然起源于以流程驱动为主的事务型工作流,但事务型工作流和现有的商业型工作流主要面向流程控制、任务管理及文档处理等方面,可重复性高,而科学计算工作流主要面向数据密集型的科学计算,以数据驱动为主,更关注复杂的数据处理和计算分析,可重复性低。由于科学计算工作流能够通过定义各个活动调用资源或软件的方式,有效地建立任务之间的逻辑关系和数据依赖关系,快速实现特定问题的科学计算,因此,科学工作流与高性能计算结合的相关研究不断增多。汪春杰和曹健[27]认为Kepler等典型科学工作流系统虽然提供了常见的应用活动表示,但是用户在具体问题的流程建模过程中需要花费大量的时间去熟悉各类活动节点的含义及使用方式,对此,其提出了可扩展性较高的ESW应用集成统一框架,提高了建模工具的易用性。赵勇[28]等人提出将科学工作流系统与高性能计算平台相结合实现高性能计算平台上的大规模并行计算,并通过Swift工作流系统和Windows HPC Server集成,用NASA MODIS图片处理工作流分析并验证了该集成方案的可行性。Li和Song[29]提出了一个灵活且可扩展的软件框架,将模拟仿真应用和其他分析应用程序集成,共享组件资源,使端到端延迟最小化,并在复杂的工作流程中提供实时插入分析和可视化功能,将其应用在湍流的异常检测中。
1.4 其他集成方法
中国工程物理研究院针对多领域数值模拟软件的封装、计算任务的集成、异构资源屏蔽、图形化交互等问题设计了适用于高性能计算环境的数值模拟工作流管理平台HSWAP[30],并将其应用在材料、光学、力学等领域,然而其主要针对文件兼任务的松耦合,对于其他数据耦合方式还没有分析总结。而NNW集成框架系统主要是面向计算流体力学耦合计算和气动相关问题的模拟,整合相关数据和资源,在工作流的求解器解算过程中调用耦合通信框架,提供完整的计算工具链。同时,集成的网格生成软件提供网格数据前置处理,使其可被正确加载到客户端页面进行数据可视化。
此外,基于STEP的集成方法[31]和基于Agent架构的集成方法[32]也被应用于异构环境下的软件集成和数据交换等问题的解决,但其在扩展性方面还有所欠缺。
2 NNW集成框架系统设计
针对气动数值模拟工程对科学计算和仿真与设计集成的需求,本文结合上述三种方法设计了面向计算流体力学耦合计算和气动相关问题模拟的NNW集成框架系统,在研究软件系统体系结构、集成方法、工作流管理、数据交换标准以及容错机制的基础上,以中间件为框架核心,集成各学科求解器、前置处理和后置处理软件,整合工作流功能模块,并提供B/S和C/S两种交互方式,提高系统的可用性。
集成框架系统主要分为表现层、业务层、资源层,表现层为业务操作的入口,用户可以通过C/S或B/S的模式与整个平台进行交互。表现层为用户提供了工作流建模、建模引擎管理、计算任务管理、计算引擎管理、统计查询功能。业务层作为整个分布式交互软件的桥梁和神经系统,整合资源层提供各项服务,处理表现层的服务请求,提供辅助功能;业务层的核心为中间件,集成了各款软件,并整合了工作流引擎、作业调度、负载均衡、组件管理等核心功能。资源层为所有的计算任务提供计算平台,对于计算过程中产生的中间文档和整个计算过程进行统一的管理。整个系统的体系结构如图1所示。资源层和业务层及表现层之间的请求服务过程如图2所示,主要以客户端和服务端交互的形式表现出来。
图1 集成框架系统体系结构
图2 请求服务过程
2.1 组件化集成
由于各种数值模拟软件存在串行和并行计算方式的差异、周期长短的计算差异、输入/输出格式差异、单一运行进程和多学科耦合计算的差异以及不同运行环境的差异,同时为了便于工作流引擎对各软件进行流程化管理,通过统一封装和制定接口规范将各计算软件、参数文件、材料库以组件化形式进行封装集成,并通过环境适配实现各种组件对不同计算机软硬件环境的兼容性。
软件组件化集成的一般过程如图3 所示。主要分为封装信息抽取过程和组件封装过程两个步骤,其中抽取过程是提取计算软件差异化信息的过程,封装过程是平台根据抽取的软件差异化信息,利用各种软硬件适配器完成软件组件化封装的过程。
图3 组件化封装基本流程
2.2 工作流引擎及执行过程解析
在NNW集成框架系统中,设计了工作流计算引擎对用户提交的工作流计算任务进行管理,并对工作流计算任务要占用的计算资源、条件限制、计算时间等进行分析,通过过程集成的方式实现计算集成、分析集成、数据集成。工作流计算引擎主要分为四个子模块,分别是工作流计算任务管理器、容错管理器、工作流计算任务调度器、高性能计算系统接口,其架构如图4所示。
图4 工作流引擎架构
在用户创建工作流模型后,将其提交到中间件工作流引擎中的工作流计算任务管理器中,由于高性能计算系统不能直接识别工作流模型,需要将其解析成具体的工作流计算任务并决定计算任务的执行顺序,再将其提交到高性能计算平台,由Slurm等作业调度系统调度具体物理资源并执行计算。
在工作流计算任务被提交后,工作流计算任务调度器根据动态集成的不同超算系统的作业调度方法,调整作业执行顺序,并实时监控任务队列、计算资源状态、统计数据文件,持续调整和优化各个计算任务的执行顺序。当任务执行失败时,及时对失败任务进行恢复计算,检测其出现的异常类型,将发生的异常记录到日志信息中进行输出,并通知给任务提交者,具体的工作流实例执行过程如图5所示。
图5 工作流执行逻辑流程图
2.3 数据交换
在计算求解程序前,往往需要对配套的网格参数文件进行前处理并将其可视化。NNW集成框架系统通过调用网格处理软件的接口,将网格文件进行前处理。而可视化部分,考虑到大多数结构网格和非结构网格文件较大,直接进行文件传输将其显示到页面上容易使I/O消耗大,交换时间长,造成系统的可读性下降。因此,在实现过程中采用了基于内存拷贝的方式来加载数据文件,并将常见的数据交换方式写至接口中并隔离到数据底层,读写数据时使用统一的数据接口,以此来减少消耗时间,增强系统的可读性和可扩展性。
2.4 集成框架系统调度策略
集成框架中调度类型分为任务调度和作业调度,任务调度是针对工作流层次而言,作业调度则用于表示工作流中的计算任务。每个工作流模型被解析为一个任务图,如图6所示,图中的每一个节点对应为一个计算模型,图中的边则表示为任务之间的依赖关系,即计算任务A执行结束后才能执行计算任务B,若要执行计算任务D,则需要计算任务B、C、G均执行结束才能开始。
图6 有向无环图(DAG)
在集成框架中,每位用户所提交的工作流计算任务都会被解析为图6所示的DAG图,并通过任务调度模块将其提交给高性能计算平台。当只有一个工作流计算任务在执行时,调度较为简单,按计算任务间依赖关系调度即可。而当平台中同时有多个工作流计算任务在执行时,即同时处理多个DAG,调度模块则需要根据计算资源的占用情况以及平台中全局的计算任务队列情况,按既定优化目标以及调度策略进行计算,例如,优先保证先提交的工作流计算任务完成、优先保证高性能计算资源的整体利用率等,以此来确定工作流和计算任务的调度序列。
工作流任务调度问题是典型的NP-hard问题,从算法效率和效果两方面综合考虑,采用列表启发式算法应用于该集成框架下的项目场景。列表启发式算法主要由任务优先级排序和计算资源的选择这两步组成,两个步骤中采取不同的策略,形成不同的调度算法。根据任务优先级对任务进行排序时,需要先通过任务的相关属性来确定任务的优先级,如表1所示。
表1 计算任务优先级排序的属性
pred(ti)={tj∈T,eji∈E}
(4)
succ(ti)={tj∈T,eij∈E}
(5)
而C表示通信开销集合,可描述为C={ci,j},则任务ti的上行权重可以表示为:
(6)
代表着该任务到终点任务的关键路径长度。下行权重表示为:
(7)
上行权重值越大任务优先级越高,因此,可根据上行权重值对要执行的计算任务排序,优先执行级别高的任务。计算资源的选择采用基于插入策略的最早完成时间优先原则,在空闲的时间段上插入满足调度条件的任务,有效利用计算资源。
3 NNW集成框架系统的应用
由于CFD相关问题的求解常常涉及多个参数且求解过程复杂,使用命令行的方式去执行任务计算对于用户而言并不友好,而基于Web的方式在图形化界面上设置任务计算需要的参数虽然可行,但当多个任务执行计算并进行调度时,网格文件、包含边界条件的文件和其他控制参数被加载,调度资源将在Web页面频繁的换入换出,容易导致程序的性能表现变差,因此,对于驱动整个流程的执行并不适用。
故通过实现客户端应用程序,在客户端的图形化交互界面上拖拽图形组件生成工作流流程图,双击组件即可进入新的界面来设置求解器相关参数,以耦合计算为例,具体的执行流程如图7所示。
图7 基于工作流模型的驱动流程
其中,具体的作业提交及作业信息入库过程如图8所示。在客户端发起启动解算器的操作后,由工作流计算引擎向集群提交作业,并获取作业信息,为每个作业生成一个对应的hvJobInfo对象用于记录作业的状态信息。之后,工作流计算引擎将作业信息对象提交数据管理模块,由其将作业信息写入数据库。
图8 作业处理流程
实际的客户端操作界面如图9所示。在验证工作流模型的完整性和逻辑正确性以及接口一致性之后,客户端为其生成xml格式的工作流描述文件,通过面向服务的中间件连接客户端,解析xml文件中的节点信息、节点间连线信息、参数设置信息等,加载需要的网格文件,将其提交到高性能计算平台执行任务计算,并将获取的作业信息写入到数据库中,反馈给客户端来监控任务的执行状态和执行时间等信息。
图9 工作流模型在客户端的界面实现
图10 计算结果示例
此外,对于无依赖关系的单个可执行程序类的计算作业,用户使用相关命令提交到高性能计算平台执行计算后,无需实时关注作业在计算平台的执行情况。中间件通过与资源层的交互实时查询已提交的作业信息状态,并将获取的结果显示在Web界面上便于用户查询,如图11所示。
图11 Web端查询作业队列信息
为了评估该系统流程集成的有效性,我们分别对短作业任务与长作业任务进行手动执行计算和工作流驱动执行计算,并对其耗费的时间进行了对比,如图12和图13所示。
图12 短作业任务的两种执行方式耗时对比
图13 长作业任务的两种执行方式耗时对比
在该评估试验中,task分为作业级任务和工作流级任务,我们定义执行时间小于120 min的task为短作业任务,大于120 min为长作业任务。首先对8个执行不同CFD计算的短作业任务的两种执行方式进行分析,在图12中,task1和task5是作业级任务,其余task均为工作流级任务。从图中可以看出,task1、task3和task5的两种执行方式耗费的时间较为接近,其余task的所有短作业依次执行的时间总和都要大于工作流驱动作业执行的时间。
在图13中,我们对4个包含多个长作业且执行并行计算的工作流级任务进行了两种执行方式的耗时对比,从数据结果中可以看出,以工作流驱动作业执行的任务耗时明显比依次执行任务中的作业的总耗时要少。从图中的实验数据和实际的操作过程来看,手动实现任务的多个作业执行操作较为繁复,操作者需要间隔地查看任务是否计算完成以及当前计算资源是否充足以支持计算,且不同操作者操作的熟练程度不同,容易导致操作时间存在一定的差异。而以工作流的方式驱动作业执行能够实现流程的自动化执行,保证了流程集成的有效性,减少了某些人工操作的耗时,使操作人员更专注于问题的解决而不是流程的执行过程。
4 结 论
为了提高研究人员的工作效率和软件的实用性,为气动相关问题的求解计算程序提供配套的前后处理平台,将前处理软件、求解计算程序、后处理软件集成于统一的集成环境,提供便于科学问题求解的科学计算环境,设计并实现了面向计算流体力学耦合计算和气动相关问题数值模拟的NNW集成框架系统,提供了基于工作流及数据交换中间件的科学计算流程组装及流转控制功能、在高性能计算平台上自动化部署及任务调度的功能、数据文件管理和图形化交互等功能,目前已将其应用在CFD流场计算、热计算、力学计算等问题上。但对于工作流层次的调度方法,暂时还没有对其进行深入研究。后续工作将在该系统的基础上,研究如何最大化发挥高性能计算平台并行计算的能力。