馮晉濤,蘆 韡,柴曉明,涂曉蘭,尹 強,陳定勇,劉 遠
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。
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]。
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軟件對組件庫的需求。
根據KYLIN-2軟件對組件庫的需求,本文共設計了兩種類型的組件庫,分別是:用于自身再啟動計算的組件再啟動庫KYMRES_Restart和用于下游堆芯計算的組件多參數庫KYMRES_Core。
HDF5文件的優勢之一是能對數據進行分層分組的管理,組件庫KYMRES的設計正是基于這一思路開展。
同時,為增強KYMRES庫的可用性,提高檢索效率,在設計時將軟件數據結構直接映射到KYMRES庫的結構中,同一軟件模塊的數據設計為一個群組,群組內以結構體為單位設計子群組,結構體內變量則設計為子群組內的數據集。這樣設計的好處在于,可十分便捷高效地在軟件數據結構和KYMRES庫之間交換數據。
根據上述設計思路,將再啟動計算所需數據劃分為基礎數據和燃耗數據,其中基礎數據可劃分為幾何數據、選項數據、截面庫數據和用于輸出的信息數據,燃耗數據可劃分為材料相關數據和每個燃耗步相關數據。這樣繼續分層劃分,直到變量這一層形成數據集,KYMRES_Restart庫具體形式如圖2所示。以幾何數據為例,將幾何數據按照其對應的結構體劃分為問題邊界條件、粗網格、射線等群組,每個群組內部再按各結構體成員變量形成數據集。
由于組件再啟動庫KYMRES_Restart對數據進行了分層分組的管理和存儲,KYLIN-2軟件能夠十分便捷地對指定的群組或數據集進行存取,無需將組件庫整體讀入,節省了內存開銷,并且軟件能夠同時對多個群組或數據集進行存取操作。對局部I/O和并行I/O的支持使得組件庫I/O效率得到了大幅提升。
KYMRES_Restart庫包含了KYLIN-2軟件所有的計算輸出信息,由于HDF5文件提供了專用的文件查看工具,因此KYMRES_Restart庫也可作為KYLIN-2軟件的輸出文件提供給用戶使用。
組件多參數庫KYMRES_Core用于向下游堆芯計算軟件提供必要的數據,根據下游堆芯計算軟件提出的數據需求,KYMRES_Core庫中包含了各分支計算數據和初始數據,其中,初始數據包含了柵格數量、裂變反應的核素數量、能群數量等一系列計算初始信息,每個分支計算數據由各燃耗步計算數據和與燃耗計算無關的狀態參數組成,燃耗步計算數據則包含不連續因子、燃耗形狀因子、宏觀截面、微觀截面等一系列參數。KYMRES_Core庫具體結構形式如圖3所示。

圖2 KYMRES_Restart庫結構

圖3 KYMRES_Core庫結構
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庫的讀取操作。
使用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庫可以有效地解決核反應堆組件計算軟件數據讀寫瓶頸問題。
本文針對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).