计算流体力学应用开发框架的容错周期优化方法
作者:佚名; 更新时间:2017-02-01

  摘要:针对计算流体力学应用开发框架容错支持能力的不足,提出了一种新的容错周期优化方法。该方法基于系统故障的概率建模,计算得到理想最优容错周期;并结合计算流体力学应用场数据输出的特点,在线确定实际检查点备份时机。三个典型应用的实验结果表明,在不同平均无故障时间的系统上,与固定时间步进行容错的方法相比,该方法总能够得到最优的容错开销。用户可以基于该方法通过框架接口便捷地设置容错周期,并有效降低容错所引起的开销。

  关键词:容错;周期优化;检查点;计算流体力学;开发框架

  引言

  计算流体力学(ComputationalFluidDynamics,CFD)是一门流体力学和数值方法相结合的交叉学科。由于具有成本低、能模拟较复杂或较理想过程等优点,利用并行计算机对CFD应用进行模拟计算已经成为与传统的理论分析和实验验证一样重要的流体力学研究方法[1]。近年来,随着高性能计算技术的突飞猛进,CFD方法得到飞速发展,在诸多工程技术领域都有广泛应用,其取得的丰硕成果已经受到了学术界和工业界的充分认可。

  然而,高性能计算在不断提升CFD方法模拟性能的同时,也带来了两个问题:一方面,高效CFD问题涉及多个学科知识,高效的并行应用开发需要物理/化学/生物领域专家、数值计算专家和并行计算专家的相互合作;另一方面,由于芯片集成度的提高和系统并行度的增加,高性能计算机的可靠性问题日益突出,有研究结果表明当系统的并行度达到数十万核时,系统的平均无故障时间(MeanTimeBetweenFaults,MTBF)仅为小时量级[2],而最新国际Top500排行榜前十名的机器均拥有数十万乃至数百万个处理器核[3]。

  为了应对高效CFD并行程序开发困难的问题,研究人员设计了面向CFD应用领域的并行应用开发框架(后文简称为面向CFD应用开发框架),如商用框架软件Fluent[4]和开源框架软件OpenFOAM[5]。这类框架对应用采取了高层抽象,屏蔽了底层程序设计细节,用户无需了解太多计算机程序设计方面的细节就可以通过近似自然语言的方式方便地开发出适合自身需求的应用程序。但是,在面向CFD应用的开发框架中设计高效的容错方法仍处于起步阶段。当前大多数面向CFD应用的开发框架提供的是一种周期性的基于场数据的容错方法,即简单地将用于后期可视化显示的场数据作为检查点使用。这种方法虽然能够实现一定容错的功能,但可能存在检查点备份周期不满足系统容错需求的问题。

  在此背景下,本文首先对面向CFD应用开发框架中现有的通过周期性场数据输出的容错技术进行了分析,指出其存在检查点时间间隔长度的不科学性;然后,提出了面向CFD应用开发框架的检查点周期优化方法;最后,在OpenFOAM中实现了该方法。实验表明,本文提出面向CFD应用开发框架的容错周期优化方法可以在保证CFD应用在不可靠并行计算系统上高效运行的同时,准确获得较优的检查点备份间隔,有效降低容错引起的额外开销。

  1基于周期场数据的检查点容错

  本章将首先对检查点容错方法的基本思想与相关概念展开介绍,然后说明现有CFD应用开发框架如何通过周期性的场数据保存实现基本的检查点容错,最后对这种基于简单周期场数据的检查点容错方法的不足展开分析。

  1.1检查点容错

  检查点(checkpoint)是一种在分布式和并行计算领域广泛使用的容错方法[6]。如图1所示,检查点方法在系统正常运行过程中周期性地将程序运行现场保存至稳定的存储介质,并称其为一个检查点,当系统失效时,程序回滚至最近的检查点,并待从稳定存储介质中恢复程序运行现场后,重新进行计算。

  按负责保存检查点的抽象层次,检查点技术一般可以被分为系统级检查点(System-LevelCheckpointing,SLC)和应用级检查点(Application-LevelCheckpointing,ALC):其中SLC由系统负责定时保存全系统的运行现场,对用户透明,但是该方法保存的数据量较大,随着系统规模的增大,其检查点备份开销可能无法接受[7];而ALC却借助于程序员的参与,显式地指定检查点的时机和对象,大大降低检查点备份的开销[8]。

  通常而言,容错方法均伴随着相应的时空代价,检查点方法也不例外。现有关于检查点方法的研究主要集中以下几个方面:1)检查点备份的周期,即在什么时机备份检查点才能使得整个程序的执行时间最小[9],一方面检查点周期过小将导致程序在正常计算过程中频繁备份检查点,从而加大程序在无故障执行过程中的容错开销;另一方面检查点周期过大将导致发生故障时的回滚代价增大,从而增加整个程序的执行时间。2)检查点的数据集,即备份检查点时具体应该保持哪些数据,数据越精简,保持时间越少[10]。3)检查点的写优化,即如何将检查点备份的写文件时间减少或者隐藏[11];4)对于并行程序,如何在程序运行过程中形成全局一致的检查点也是一个研究热点[12]。本文重点关注的就是第一方面的检查点备份周期问题。

  1.2CFD应用中的周期性场数据

  利用计算机对CFD应用进行模拟计算时,首先需要对待模拟的实际连续问题进行空间和时间两个维度的离散。所谓空间离散就是将待模拟的区域划分成若干网格,基于网格进行计算;而时间离散则是将原本连续的时间划分成若干时间步(也称为时间片),按时间步推进模拟。为了便于对流体在流动过程中的各种物理规律进行观察,CFD应用往往需要在计算过程中将模拟区域的流场数据,即所有网格点上的物理属性值(也称为场数据),以文件形式周期性地保存到外存上,待模拟结束后,再通过后端处理软件对计算得到的场数据进行可视化演示。

  这样,我们就得到一个如图2所示的CFD模拟及场数据保存的过程:CFD模拟计算的过程按时间步推进,由若干时间步构成一个写周期,在每个写周期的末尾进行场数据的保存。为了支持周期性输出场数据的功能,现有CFD应用开发框架一般都提供一定配置方式,由用户指定一个写周期中所包含的时间步的个数。值得注意的是,上述方法配置得到的所有写周期中的时间步个数都是相同的。

  1.3周期性场数据作检查点的问题分析

  类比1.1节的检查点容错方法和1.2节CFD周期性场数据,我们不难发现二者的计算过程抽象存在一个相似之处:均在计算过程中周期性地将某些计算信息存储到稳定介质上去。同时,由于CFD场数据的信息已经完全包含了对应时间步末尾的所有有效现场,因此场数据可以被当作检查点数据使用,即当故障发生时,仅根据场数据就可以进行故障恢复。

  基于场数据可以被当作检查点使用的事实,当前CFD应用开发框架为了应对越发严重的可靠性问题,往往提供类似于检查点容错的功能,即当CFD计算过程发生故障后,再次启动的CFD计算可以在上次计算最后得到的场数据基础上,无需对该场数据之前的写周期过程进行复算,而是直接对后续的时间步进行模拟计算。然而,通过分析发现这种基于简单周期场数据的检查点容错方法存在以下不足:

  1)场数据所对应的写周期不一定满足检查点备份周期的要求:一方面,在使用检查点容错方法时,为了避免故障恢复时间过长从而导致多次回滚情况的出现,一般要求检查点之间的时间间隔小于系统平均无故障时间的一半;另一方面,场数据输出之间的写周期间隔由用户根据自身所期望看到的流程后期显示效果所决定,因此,可能出现场数据输出间隔大于检查点备份将要求的情况。而且当用户不关心CFD模拟中间过程的流场变化细节,仅关心最终稳态的流场状态时,可能出现没有中间场数据输出的极端情况。

  2)场数据所对应的写周期和检查点的备份周期单位不一致:场数据所对应的写周期以时间步为单位,虽然每个时间步对应的流场实际流动时间是一样的,但不同时间步的模拟计算时间却可能是不一样的,一般而言流场变化剧烈的时间步所需要的模拟时间较长;而检查点备份的周期是以真实的模拟计算时间为单位的。

  为了解决上述两个问题,在使用现有CFD应用开发框架时,必须强制用户缩短输出场数据的写周期,以保证最长的场数据写周期模拟执行时间满足检查点备份周期的要求。然而,由于不同场数据写周期执行时间的不同,上述方法会导致检查点之间的程序执行时间存在较大不同,流场变化不剧烈的时间段被插入了过多的检查点,引入了更多的容错开销。

  2CFD检查点备份周期优化

  解决第1.3节所分析得到的基于简单周期场数据的检查点容错方法不足的关键在于解耦检查点备份周期与场数据输出周期之间的对应关系,允许检查点备份之间的时间步个数的动态变化,即对检查点备份的周期进行优化。本章首先假设检查点可以在CFD应用模拟计算过程中的任意时刻进行,从而对CFD应用的检查点容错过程进行理想建模;再引入检查点仅能插入在时间步模拟的末尾这一约束,从而建立更加符合CFD应用的离散模型,最终分析得到检查点插入的最优时机。  2.1理想连续模型

  为了描述方便,定义如表1所示的符号。

  1)在检查点间隔的计算过程和新检查点的备份过程中系统均未发生故障,此时程序通过该检查点间隔的执行时间为:TC+TS。

  2)程序在首次进行检查点间隔的计算或新检查点备份的过程中发生故障,则其通过该检查点的间隔执行时间为:tfault+Trecovery,其中tfault表示以该检查点间隔开始计算为0时刻时故障发生的时刻,Trecovery表示进行故障恢复的时间。所谓故障恢复包括现场恢复、计算和新检查点备份等工作。

  因此令TCS=TC+TS,则程序顺利通过一个检查点间隔的时间TFTC的数学期望如式(1)所示:

  2.2实际离散模型

  上述理想模型假设程序能够在执行过程中的任意时刻暂停,从而将此时刻作为检查点来进行程序现场备份。然而,基于CFD应用开发框架的模拟只能在时间步结束时输出场数据。也就是说,检查点只能设置在一些离散的时间点上,即无法保证总是能获取理想连续模型中提出的最优检查点时间间隔TIdealC。为了解决这一问题,基于CFD应用中场输出时机是离散的这一前提,建立了检查点备份时机选择的实际离散模型。

  实际离散模型的核心思想是在每个模拟时间步结束时,对当前情况进行分析从而判断是否需要将此时的场数据作为检查点进行输出。记当前模拟时间步的计算时间为tc,模拟结束时刻为ts,与ts最近的上一个检查点完成时刻为tb,ΔT=ts-tb。实际离散模型确定检查点备份即场数据输出时机的流程如图3所示。

核心期刊快速发表
Copyright@2000-2030 论文期刊网 Corporation All Rights Reserved.
《中华人民共和国信息产业部》备案号:ICP备07016076号;《公安部》备案号:33010402003207
本网站专业、正规提供职称论文发表和写作指导服务,并收录了海量免费论文和数百个经国家新闻出版总署审批过的具有国内统一CN刊号与国际标准ISSN刊号的合作期刊,供诸位正确选择和阅读参考,免费论文版权归原作者所有,谨防侵权。联系邮箱:256081@163.com