APP下载

基于HDF5文件格式的KYLIN-2软件组件库

2018-06-20冯晋涛柴晓明涂晓兰陈定勇

计算机应用 2018年4期
关键词:堆芯中子群组

冯晋涛,芦 韡,柴晓明,涂晓兰,尹 强,陈定勇,刘 远

0 引言

KYLIN-2是中国核动力研究设计院自主研发的先进中子学栅格(组件)计算软件[1],采用特征线方法(Method Of Characteristics, MOC)求解器[2],支持任意几何中子输运计算,并利用广义粗网格有限差分加速方法(Generalized Coarse Mesh Finite Difference method,GCMFD)来加速中子输运求解流程[3],采用基于改进预估修正临界-燃耗迭代方法PPC(Projected Predictor-Corrector)的切比雪夫方法求解复杂燃耗链[4],可得到非常精细化的计算结果,因此,KYLIN-2软件对海量数据的存储和处理存在迫切的需求。

由于核反应堆中子学计算领域的特殊性,核反应堆中子学计算软件均需支持再启动计算功能,使用户能够基于上一次计算结束时的状态继续进行计算,KYLIN-2软件也不例外。为实现再启动计算功能,需要将软件核心数据结构中的数据在计算结束时全部存储到外部库文件(组件库)。同时KYLIN-2软件需要向下游堆芯中子学计算软件提供组件均匀化中子学参数,这部分数据也需存储到组件库中。

目前,主流的科学计算数据存储形式和标准格式有:ASCII文件、二进制文本文件、普适图像传输系统(Flexible Image Transport System, FITS)[5]、网络通用数据类型(Network Common Data Form, NetCDF)[6]、二进制通用气象数据表示格式(Binary Universal Form of the Representation of meteorological data, BUFR)[7]、分层数据存储格式v5(Hierarchical Data Format v5, HDF5)[8]等。ASCII文件和二进制文本文件在各领域均应用较为广泛,但其劣势明显;FITS是天文学标准的图像传输格式;NetCDF和BUFR格式在大气、气象等领域得到深入应用;HDF5格式的应用领域则较多,包括航天、遥感、金融、能源等。

对于KYLIN-2软件中数据存储和处理的需求,例如数据大小超过4 GB、需支持并行I/O等,在上述数据格式中仅有HDF5文件格式能满足。因此,本文设计实现了基于HDF5文件格式的组件库KYMRES(KYlin-2 Main RESults databank),该库采取分层数据存储,便于KYLIN-2软件对数据进行并行I/O和局部I/O。经测试表明,该组件库能够适用于KYLIN-2软件的数据存储管理和高效I/O。

1 HDF5文件格式的特点及优势

HDF5分层数据格式是美国国家高级计算应用中心(National Center for Supercomputing Applications, NCSA)为了满足各领域研究需求而研制的一种能高效存储和分发科学数据的新型数据格式[9]。目前HDF5文件格式在国内外核反应堆数值计算领域已有较为深入的应用,如法国堆芯计算软件ARTEMIS、美国堆芯计算软件包APA等,均有HDF5库的应用。

HDF5文件是一个由两种基本数据对象(分别为HDF5群组Groups与HDF5数据集Datasets)存放多种数据的容器,通过群组和数据集,可以存储任意复杂的数据[10]。HDF5文件以层次式的方式,有效地建立了文件内各个对象之间的组织方式和逻辑包含关系,如图1所示。

图1 HDF5数据模型结构

HDF5文件采用二进制格式存储科学数据,支持海量的数据对象和复杂多样的数据结构,其文件格式具有自描述性、存储规模无限性(大于4 GB)、数据模型通用、数据类型多样灵活、支持并行I/O和局部I/O机制、跨平台和可移植性等特点[11]。

2 KYLIN-2软件对组件库的需求

KYLIN-2软件的计算规模和计算数据庞大,同时与下游核反应堆堆芯中子学计算软件存在数据接口,因此对于组件库存在以下主要需求:

1)海量数据存储需求。

KYLIN-2软件采用MOC方法进行复杂几何中子输运计算,计算网格精细化程度高,相应的计算数据将会达到数GB的规模,因此,组件库需要实现数GB规模数据的流畅存储及读写。

2)并行I/O需求。

由于反应堆组件中子学计算规模庞大,KYLIN-2软件实现了并行计算功能,这就需要组件库能够支持并行I/O机制;同时,由于组件库数据读写频繁,需要提供局部I/O机制使软件能够精确地读写需要的数据,提高数据访问效率。

目前反应堆中子学数值计算领域常用的组件库组织形式为十进制或二进制文本文件。针对以上需求,常规文本文件已无法满足要求,如KYLIN-2采用传统文本格式组件库,对KYLIN-2软件功能与性能将造成较大影响,而HDF5文件对超过4 GB的数据能够流畅存储及读写,支持在不同的计算环境中访问数据,支持并行I/O和局部I/O,可以很好地满足KYLIN-2软件对组件库的需求。

3 组件库设计

根据KYLIN-2软件对组件库的需求,本文共设计了两种类型的组件库,分别是:用于自身再启动计算的组件再启动库KYMRES_Restart和用于下游堆芯计算的组件多参数库KYMRES_Core。

HDF5文件的优势之一是能对数据进行分层分组的管理,组件库KYMRES的设计正是基于这一思路开展。

同时,为增强KYMRES库的可用性,提高检索效率,在设计时将软件数据结构直接映射到KYMRES库的结构中,同一软件模块的数据设计为一个群组,群组内以结构体为单位设计子群组,结构体内变量则设计为子群组内的数据集。这样设计的好处在于,可十分便捷高效地在软件数据结构和KYMRES库之间交换数据。

3.1 组件再启动库

根据上述设计思路,将再启动计算所需数据划分为基础数据和燃耗数据,其中基础数据可划分为几何数据、选项数据、截面库数据和用于输出的信息数据,燃耗数据可划分为材料相关数据和每个燃耗步相关数据。这样继续分层划分,直到变量这一层形成数据集,KYMRES_Restart库具体形式如图2所示。以几何数据为例,将几何数据按照其对应的结构体划分为问题边界条件、粗网格、射线等群组,每个群组内部再按各结构体成员变量形成数据集。

由于组件再启动库KYMRES_Restart对数据进行了分层分组的管理和存储,KYLIN-2软件能够十分便捷地对指定的群组或数据集进行存取,无需将组件库整体读入,节省了内存开销,并且软件能够同时对多个群组或数据集进行存取操作。对局部I/O和并行I/O的支持使得组件库I/O效率得到了大幅提升。

KYMRES_Restart库包含了KYLIN-2软件所有的计算输出信息,由于HDF5文件提供了专用的文件查看工具,因此KYMRES_Restart库也可作为KYLIN-2软件的输出文件提供给用户使用。

3.2 组件多参数库

组件多参数库KYMRES_Core用于向下游堆芯计算软件提供必要的数据,根据下游堆芯计算软件提出的数据需求,KYMRES_Core库中包含了各分支计算数据和初始数据,其中,初始数据包含了栅格数量、裂变反应的核素数量、能群数量等一系列计算初始信息,每个分支计算数据由各燃耗步计算数据和与燃耗计算无关的状态参数组成,燃耗步计算数据则包含不连续因子、燃耗形状因子、宏观截面、微观截面等一系列参数。KYMRES_Core库具体结构形式如图3所示。

图2 KYMRES_Restart库结构

图3 KYMRES_Core库结构

4 组件库的实现

HDF5函数库(HDF5 Library)提供了一系列应用程序接口(Application Programming Interface, API)[12]。这些API提供用于创建、存取、处理HDF5文件和对象的例程。HDF5函数库是由C语言实现,并提供了C++、Fortran等语言的调用接口。API列表如表1所示。

表1 HDF5函数库API列表

HDF5函数库的功能灵活、强大,但由于其内部函数众多、数据结构与数据类型独立、并且与HDF5文件结构的结合程度紧密,因此对软件开发人员提出了较高的要求,需要开发人员对HDF5文件结构及各API的功能具有十分清晰的认知,才能较好地使用HDF5函数库实现需要的功能。

为了降低开发人员使用HDF5函数库的难度,在实现KYLIN-2软件组件库的过程中,总结了核反应堆计算软件对HDF5文件常用的应用需求,并根据需求对HDF5函数库进行了二次开发,对函数库的API进行了重新组合和封装,形成了一套HDF5文件读写工具,其主要的类和函数如表2所示。

表2 HDF5读写工具主要类和函数

HDF5读写工具使用的均为C++语言自身的数据类型,将HDF5函数库定义的数据类型和结构封装在工具内部,开发人员可十分便捷地使用HDF5读写工具完成HDF5文件的读写操作。

本文将HDF5读写工具成功应用到了KYLIN-2软件组件库KYMRES的实现过程中,使用H5Out类完成了KYMRES库的创建和写入,使用H5In类完成了KYMRES库的读取操作。

5 组件库读写性能测试

使用C++语言标准库提供的典型文本文件存取方法fstream类与基于HDF5文件格式的组件库KYMRES进行读写性能对比测试。测试PC:CPU为Intel Core i5-2300 2.80 GHz四核处理器,内存容量3 GB,操作系统为Windows XP SP3 32位。

测试对象为典型压水堆17×17网格燃料组件,燃料富集度为1.8%,采用45群截面库进行计算,由于组件库的数据大小与燃耗计算的步数直接相关,因此对不同燃耗步数量下生成的KYMRES库读写时间进行测试,具体测试用例情况如表3所示。

表3 KYMRES库读写测试用例

读取数据时间包括文件打开、读、关闭的时间,写入数据时间包括打开、写、关闭的时间,测试结果如表4~5所示。

表4 不同燃耗步数量的KYMRES库写入时间比较

表5 不同燃耗步数量的KYMRES库读取时间比较

测试结果表明,HDF5组件库KYMRES在读写方面具有较高的性能,相对于C++fstream,其写入效率平均提升到旧算法的4.5倍,读取效率平均提升到旧算法的2.3倍,在引入并行I/O之后,其读写效率将得到进一步提升。实际工程计算中,组件计算数据将达到数10 GB,使用KYMRES库可以有效地解决核反应堆组件计算软件数据读写瓶颈问题。

6 结语

本文针对KYLIN-2软件数据存储和处理的需求,设计了基于HDF5文件格式的组件库KYMRES,总结了对HDF5文件常用的应用需求并开发了一套HDF5读写工具,应用该工具实现了KYLIN-2软件组件库KYMRES。对不同燃耗步数量下的KYMRES库进行读写测试表明,KYMRES库具有较高的I/O性能,能够适用于KYLIN-2软件的数据存储管理和高效I/O。

目前,基于HDF5文件格式的计算数据存储方案已成功推广应用到中国核动力研究设计院自主研发的堆芯中子学计算软件、堆芯热工水力计算软件、蒙特卡罗计算软件中。同时,由于该方案在海量数据存储和处理方面具有明显的优势,能够适用于科学计算领域大规模数据的存储和管理。

参考文献(References)

[1] 柴晓明, 涂晓兰, 郭凤晨, 等.先进中子学栅格程序KYLIN-2的开发与初步验证[J]. 强激光与粒子束, 2017, 29(1): 94-100.(CHAI X M, TU X L, GUO F C, et al. Development and preliminary V & V for advanced neutron transport lattice code KYLIN-2[J]. High Power Laser and Particle Beams, 2017, 29(1): 94-100.)

[2] 柴晓明, 涂晓兰, 芦韡, 等.先进中子学栅格程序KYLIN-2中特征线方法模块的开发与验证[J]. 核动力工程, 2016, 37(4): 154-159.(CHAI X M, TU X L, LU W, et al. Development and verification and validation of MOC module in advanced neutronics lattice code KYLIN-2[J]. Nuclear Power Engineering, 2016, 37(4): 154-159.)

[3] 芦韡, 尹强, 陈定勇, 等.KYLIN-Ⅱ软件针对IAEA板元件基准题的数值验证[J]. 核动力工程, 2017, 38(4): 168-171.(LU W, YIN Q, CHEN D Y, et al. Numerical verification of KYLIN-Ⅱ code based on IAEA plate fuel benchmark[J]. Nuclear Power Engineering, 2017, 38(4): 168-171.)

[4] 涂晓兰, 潘俊杰, 柴晓明, 等.中子学栅格程序KYLIN-Ⅱ可视化图形建模方法研究和工具开发[J]. 核动力工程, 2017, 38(3): 126-131.(TU X L, PAN J J, CHAI X M, et al. Research and development of visual graphic modeling for advanced neutron transport lattice code KYLIN-Ⅱ[J]. Nuclear Power Engineering, 2017, 38(3): 126-131.)

[5] 刘应波, 王锋, 季凯帆, 等.基于NoSQL的FITS文件头元数据存储和查询研究[J]. 计算机应用研究, 2015, 32(2): 461-465.(LIU Y B, WANG F, JI K F, et al. Research on metadata storage and querying of FITS file based on NoSQL[J]. Application Research of Computers, 2015, 32(2): 461-465.)

[6] 刘俊, 黄兴友, 周红根, 等.基于NetCDF的国产新型气象雷达基数据通用编码试验[J]. 气象科技, 2016, 44(2): 171-176.(LIU J, HUANG X Y, ZHOU H G, et al. Unified coding for domestie new weather radar data based on NetCDF[J]. Meteorological Science and Technology, 2016, 44(2): 171-176.)

[7] 王素娟, 崔鹏, 郑旭东, 等.气象卫星风矢量BUFR编码[J]. 气象科技, 2011, 39(3): 339-343.(WANG S J, CUI P, ZHENG X D, et al. Representing atmospheric motion vectors of meteorological satellites in BUFR[J]. Meteorological Science and Technology, 2016, 44(2): 171-176.)

[8] 杨丽鹏, 车永刚.基于HDF5的结构网格计算流体动力学程序并行I/O技术[J]. 计算机应用, 2013, 33(9): 2423-2427.(YANG L P, CHE Y G. HDF5 based parallel I/O technology for structure grid CFD applications[J]. Journal of Computer Applications, 2013, 33(9): 2423-2427.)

[9] 杨丽鹏, 车永刚. 基于HDF5实现多区结构网格CFD程序的并行I/O[J]. 计算机研究与发展, 2015, 52(4): 861-868.(YANG L P, CHE Y G. HDF5 based parallel I/O techniques for multi-zone structured grids CFD applications[J]. Journal of Computer Research and Development, 2015, 52(4): 861-868.)

[10] Hierarchical Data Format(HDF) group. HDF5 user’s guide release 1.10.0[EB/OL].(2016- 03- 01) [2017- 03- 29]. https: //support.hdfgroup.org/HDF5/doc/UG/HDF5_Users_Guide.pdf.

[11] 蔡昭权, 吴文忠, 卢庆武, 等.利用HDF5和Esper的高效外汇数据分析系统[J]. 计算机工程与科学, 2011, 33(4): 159-163.(CAI Z Q, WU W Z, LU Q W, et al. An effective data analy sis system of foreign exchange using HDF5 and esper[J]. Computer Engineering & Science, 2011, 33(4): 159-163.)

[12] Hierarchical Data Format(HDF) group. HDF5 reference manual release 1.8.8[EB/OL].(2011- 11- 01) [2017- 03- 29]. https: //support.hdfgroup.org/HDF5/doc/PSandPDF/HDF5_RefManual.PDF.

This work is partially supported by the Core Ability Enhancement Project of “LongTeng 2020” Technology Innovation Programme of China National Nuclear Corporation (LTJH-NESTORII-1405001), the Fund of Science and Technology on Reactor System Design Technology Laboratory (ZDSY-ZSYX-14-12-001).

猜你喜欢

堆芯中子群组
VVER机组反应堆压力容器中子输运计算程序系统的验证
新型堆芯捕集器竖直冷却管内间歇沸腾现象研究
模块式小型堆严重事故下堆芯应急注水策略研究
(70~100)MeV准单能中子参考辐射场设计
3D打印抗中子辐照钢研究取得新进展
Boids算法在Unity3D开发平台中模拟生物群组行为中的应用研究
物质构成中的“一定”与“不一定”