柴油机燃烧过程并行计算
郭晓平,隆武强
(大连理工大学内燃机研究所,大连116023)
摘要用具有大量控制单元的多维CFD模型耦合详细反应动力学模型,来模拟发动机燃烧过程,所需计算时间长,目前已超出可被人们接受的程度。采用并行计算可以缩短计算时间。本文提出了柴油机燃烧过程“分区化学反应分布式并行算法”和“神经网络在线学习分布式并行算法”。在Windows XP操作系统下,基于MPI并行编程环境,用Fortran语言开发了并行计算程序,并在6台同方AMD 3200+计算机系统上调试成功,且通过验证计算,获得了较理想的并行效率。
关键词:柴油机化学动力学并行计算人工神经网络
来稿日期:2014-12-29
文章[1]分析了柴油机燃烧化学动力学计算量庞大的原因,如果不考虑组分质量迁移对计算量的影响,反应温度和计算单元数可以表示成在多项式时间内可以完成的P类问题。但实际运行需要有超性能的计算机,于是人们自然想到了并行计算技术。采用多计算机和多处理器同时计算,以缩短计算时间。如何将原来串行计算改造成并行计算,使计算时间降到可以接受的程度,是目前高性能计算应用研究的一个焦点。
人类在求解复杂问题方面,远远胜过采用经典算法的编程计算。因此,将人类求解问题的方法移植到计算模型是一个很好的想法。这就是人工神经网络。人工神经网络在复杂系统中的应用已得到长足发展,在发动机燃烧计算中也已有文献报导[2-4],是解决发动机燃烧计算量的好措施。因此,在燃烧计算的同时并行进行化学动力学神经网络的建立与调用是很有必要的。
本文主要讨论柴油机燃烧过程计算的并行算法。在Windows XP操作系统下,基于MPI的并行编程环境,使用Fortran语言实现“分区化学反应分布式并行算法”和“神经网络在线学习分布式并行算法”。所提算法在多PC机系统上实现,并使用LLNL正庚烷氧化机理对柴油机燃烧过程进行了仿真计算,结果验证了所提算法的正确性和有效性。
大多数并行机可分为2类:共享存储并行机和分布存储并行机。共享存储并行机是所有处理机共享一个单一地址空间。分布存储并行机是每个处理机有私有存储空间,不同处理机之间的数据传输通过通信来实现。
2.1共享存储
共享存储并行机是由多个处理器组成的共享存储系统,图1示例是由4个处理器组成的系统。其中每个处理机由专用缓存器(Cache)通过一条系统总线连接到一个全局共享存储器上,这是典型的对称多处理机(SMP)结构[5]。
图1 一种具有一致性访问共享存储的体系结构
在对称多处理机中,每个处理机可以使用标准的加载操作访问全局存储器中的任意单元。在共享存储系统中,对共享数据的同步访问是一个主要问题。编程时必须确保多个处理机在一个共享数据结构上的操作正确无误,即确保该数据结构始终保持一致性状态。共享存储的主要问题是它的处理机数量难以扩展到很大。
2.2分布存储
分布存储结构如图2所示,处理机通过通信网络访问存储器。如果使用可扩展的通信网络,那么这种系统是可扩展的。
图2 分布存储体系结构
分布存储系统的优势在于访问本地存储器的速度相当快,而访问远端存储器的速度则非常慢。大多数分布存储系统支持消息传递编程模式。在这种模式中,拥有某数据的处理机将数据发送给其他需要该数据的处理机。虽然这种“发送─接收”通信启动后通信带宽高,但通常启动时间长。因此,在消息传递系统中,一般应该减少发送次数,而提高一次发送的数据量。
要实现并行程序,必须处理4个主要问题。首先,将那些能并行处理的计算部分表示出来;其次,将程序分解成多个并行部分;然后,建立模型和界面来编写并行程序;最后,选择一种实现方式,能有效实现并行程序并体现计算模型。
3.1程序并行性识别
实现并行计算的第1步是识别程序中的哪些部分可以并行处理。如果多个计算无共享数据,那么这些计算可以并行执行。多个计算同时读取同一存储单元中的数据时,是不会产生冲突的,不影响并行化。
在柴油机燃烧计算中,大约99%的计算时间消耗在化学反应动力学计算上,因此不考虑对流动过程作并行计算。在每个化学计算迭代步长驻t中,各基元反应计算是互相独立的,且都从共同的组分质量存储器中读取数据进行计算。因此具备将串行计算直接改造成并行计算的条件。但对反应动力学进行并行化改造,将涉及到同步协调与数据读写环节,所需时间会在很大程度上抵消并行计算所节省的时间。因此,分解化学反应模型来进行并行计算获利不大。
燃烧化学计算之所以计算量大,是因为化学迭代计算的步长太小所致,而确定步长的计算很简单,毋需使用并行计算。
柴油机缸内燃烧计算是各控制单元执行程序代码相同、而输入数据不同的计算。因此,各控制单元之间可以实行化学反应并行计算。
使用神经网络来构造燃烧过程组分质量变化函数,供后继控制单元的动力学计算使用。为了提高神经网络函数的精度,最好是在线形成神经网络,同时不断完善神经网络。显然,神经网络的建立和完善与化学反应迭代计算可以并行进行。
3.2分解策略
实现并行计算的第2步是选择分解策略,通常有2种方法。一种是“任务并行”,即把程序分解为多个任务,标识出它们之间的依赖关系,并进行任务调度,使得并行执行的任务互不干扰,不同的处理机执行不同的功能。另一种是“数据并行”,即把问题的数据空间分解为多个区域,并分配给不同的处理机,每个处理机负责计算各个区域的结果。
在燃烧过程计算中,一方面要进行化学反应动力学计算,另一方面要建立和完善神经网络。因此,本文使用“任务并行”与“数据并行”相结合的并行计算策略:有关神经网络计算采用“任务并行”,化学动力学计算采用“数据并行”,而“数据并行”采用按区分网并行计算的思路。在硬件配置上,指定某一台计算机作为主控机,主控机负责对各子机进行协调和交互,以完成缸内化学反应计算。
3.3编程模型
编程模型的选择就是对编程语言和库的选择。通常有下面2种选择:共享存储编程模型和消息传递编程模型。
3.3.1共享存储编程模型
数据存储于一个共享存储器中,所有处理机均可访问该共享存储器。这就意味着每个处理机可以独立地对存储器中的任一单元进行读或写操作。这种模型的特点就是用同步保证共享数据结构的完整性。
一旦神经网络建立以后,就可以通过神经网络函数模拟计算单元中的化学反应。因此,神经网络结果应该放在共享存储器中。其同步条件是,神经网络建立完毕与神经网络调用同步。
同理,化学反应迭代计算的新结果也放在共享存储器中,通过不断积累,当满足神经网络所需样本数时,启动神经网络的创建或完善计算。其同步条件是,样本数量满足要求。
3.3.2消息传递编程模型
数据分别存储在多个处理机的本地存储器中,需要通过通信方式来访问远程数据。通常,要通信的2个处理机之间必须显式地进行发送/接受操作。
缸内流动计算采用串行方式,流动计算完成后确定出新时刻控制单元的压力p、温度T和组分质量,然后启动各子机进行化学反应迭代计算。化学反应计算结束后再将计算结果汇总,以便进行下一时刻缸内流动计算。因此,这种并行计算采用消息传递编程模型。
3.4实现模式
3.4.1燃烧并行算法的实现
化学反应动力学并行计算的实现方法是,采用数据并行策略,在分布存储系统上采用单程序多数据(SPMD)模式,所有的处理机均执行相同的程序,但是使用不同的数据。设有n台子机,则将需进行化学计算的控制单元数分成n份,分别发送到各子机进行计算,然后接收各子机的计算结果。这种算法,数据交互次数不多,但每次交互的数据量较大。需要注意的是,所实现算法为同步算法。因此各子机的负载均衡问题可能会影响算法的性能,即网络划分不均时,或者网格的参数差别较大时,各子机间存在相互等待的现象。
3.4.2神经网络并行算法的实现
如上所述,关于神经网络的计算,采用共享存储器方式,关键是建立同步控制策略。其同步约束条件为:(1)根据神经网络范围对样本进行分类;(2)只有收集到足够数量的样本,启动1台子机进行神经网络学习;(3)只有当子神经网络建立后,才可以使用神经网络替代化学迭代计算。
在每台子机上,均安装了chemkin子程序和神经网络训练子程序。实际运行中,子机是做化学反应计算还是网络训练计算,均由主机控制。以网络训练的优先级最高,即,一旦训练数据满足要求,主机就指定1台子机进行网络训练。如果已经有一台子机在进行网络训练,则主机指定另1台子机进行训练,剩下的子机做chemkin迭代计算。如果所有子机均作神经网络训练,则仅由主机进行chemkin迭代计算。
基于以上分析,柴油机燃烧过程并行算法的实现流程如图3所示。其中,左边为串行算法流程图,右边为各子机和主机之间的交互任务。可以看出,所实现的并行算法在原串行算法基础上改动不大,主机和子机之间交互次数也不多。
在Windows XP操作系统下,基于MPI的并行编程环境,根据图3并行算法对kiva程序进行并行计算改造。硬件平台由6台同方PC机构成,CPU为AMD 3200+,内存2GB,硬盘容量160GB。改造后的kiva程序在上述硬件平台上运行,且进行了测试。测试算例采用4气门直喷式四冲程压缩燃烧柴油机[1],化学反应模型采用美国国家重点实验室研发的正庚烷氧化详细机理。
除了建立神经网络及未解决的问题外,并行计算系统已调试成功,运行正常。比较喷油期缸内燃烧过程计算结果、并行计算和原kiva串行计算,控制单元中内能和组分计算结果误差小于10%,计算加速比大于50。
图3 柴油机燃烧并行计算流程
用具有大量控制单元的多维CFD模型耦合详细反应动力学模型,来模拟柴油机燃烧过程,所需计算时间长,目前已超过可被接受的范围。采用并行计算可以缩短计算时间。本文提出了柴油机燃烧过程“分区化学反应分布式并行算法”和“神经网络在线学习分布式并行算法”。在Windows XP操作系统下,基于MPI并行编程环境,用Fortran语言开发了并行计算程序,并在由6台同方AMD 3200+PC机组成的系统上调试成功,且运行正常,获得了较理想的加速比和并行效率。通过实际柴油机工作过程计算,验证了本文所提并行算法的正确性和有效性。为进一步开展柴油机燃烧动力学高性能计算研究奠定基础。
参考文献
[1]郭晓平,王占杰.柴油机燃烧计算量研究[C].中国工程热物理学会燃烧分会学术论文,西安2008.
[2] Grondin O, Stobart R, Chafouk H et al. Modelling the Compression Ignition Engine for Control: Review and Future Trends[C]. SAE 2004-01-0423.
[3] He Y, Rutland C J. Application of Artificial Neural Networks in Engine Modelling [J]. International Journal of Engine Research, 2003, 5(4): 281-296.
[4] Choi Y, Chen J Y. Fast Prediction of Start-of-Combustion in HCCI with Combined Artificial Neural Networks and Ignition Delay Model [J]. Proceedings of the Combustion Institute, 2005, 30(1): 2711-2718.
[5]都志辉.高性能计算并行编程技术[M].北京:清华大学出版社,2001.
Parallel Computing of Diesel Combustion Process
Guo Xiaoping, Long Wuqiang
(Internal Combustion Engine Institute of Dalian University of Technology, Dalian 116023, China)
Abstract:The multi-dimension al CFD model with a large number of control units coupled with detailed kinetic model to calculate the engine combustion process is of time consuming and not accepted. Parallel computing can reduce computation time. This paper presents "partition chemical reaction distributed parallel algorithm" and "parallel distributed online learning neural network algorithm". In the Windows XP operating system and based on MPI parallel programming environment, the Fortran parallel computing program is developed and successful commissioning in AMD 3200+ computer system on 6 computers is achieved. By verifying the calculation, a more ideal parallel efficiency is obtained.
Key words:diesel engine, chemical kinetics, parallel computing, artificial neural networks
作者简介:郭晓平(1955-),女,副教授,主要研究方向为内燃机工作过程数值仿真与有害物排放控制。
doi:10.3969/j.issn.1671-0614.2015.01.001