蘆 韡,馮晉濤,潘俊杰
(中國核動力研究設(shè)計院 核反應(yīng)堆系統(tǒng)設(shè)計技術(shù)重點實驗室,四川 成都 610041)
擁有高質(zhì)量的設(shè)計工具是開展科研、工程設(shè)計任務(wù)的前提條件。核反應(yīng)堆專用科研、設(shè)計計算軟件匯集了人們對核反應(yīng)堆的理論方法、設(shè)計、建造和運行經(jīng)驗,它是核反應(yīng)堆研發(fā)設(shè)計的必備工具。隨著計算機技術(shù)與性能的發(fā)展和提升,各種高性能計算服務(wù)器的應(yīng)用,核反應(yīng)堆計算軟件的計算規(guī)模不斷增大,網(wǎng)格數(shù)量和精細度不斷增加,計算數(shù)據(jù)也越發(fā)龐大,對核反應(yīng)堆計算軟件進行海量數(shù)據(jù)存儲管理和輸入/輸出 (I/O)能力的需求急劇的增長,因此,對輸入輸出技術(shù)和數(shù)據(jù)存儲管理技術(shù)就提出了新的要求。
HDF是用于存儲和分發(fā)科學數(shù)據(jù)的一種自我描述、多對象文件格式,由美國國家高級計算應(yīng)用中心NCSA(National Center f or Superco mputing Applications,NCSA)創(chuàng)建,以滿足不同群體的科學家在不同工程項目領(lǐng)域的需要,其最新版本HDF5格式在氣象、遙感等領(lǐng)域已有較為深入應(yīng)用。本文針對反應(yīng)堆堆芯數(shù)據(jù)管理、存儲的需求,包括組件各項中子學參數(shù)、堆芯各項中子學參數(shù)以及堆芯各項熱工水力參數(shù)等,通過對HDF5數(shù)據(jù)格式及其編程技術(shù)的研究,將其成功應(yīng)用到中國核動力研究設(shè)計院自主研發(fā)的先進中子學柵格計算軟件KYLIN-2、先進節(jié)塊法堆芯三維少群中子學計算軟件CORCA-3D、堆芯熱工水力子通道分析軟件CORT H中,為反應(yīng)堆堆芯數(shù)值計算領(lǐng)域的數(shù)據(jù)存儲管理和高效I/O問題提供解決方案。
HDF5文件是一個由兩種基本數(shù)據(jù)對象 (分別為HDF5群組Groups與HDF5數(shù)據(jù)集Datasets)存放多種數(shù)據(jù)的容器,其中HDF5群組是包含0個或多個HDF5對象以及支持元數(shù)據(jù)(metadata)的一個群組結(jié)構(gòu),HDF5數(shù)據(jù)集是數(shù)據(jù)元素的一個多維數(shù)組以及支持元數(shù)據(jù)。
使用群組和數(shù)據(jù)集時在許多方面類似于使用UNIX的目錄和文件。HDF5文件里的對象經(jīng)常通過它的絕對路徑來引用。通過群組和數(shù)據(jù)集,可以存儲任意復雜的數(shù)據(jù)。HDF5文件以層次式的方式,有效地建立了文件內(nèi)各個對象之間的組織方式和邏輯包含關(guān)系,如圖1所示。
圖1 HDF5數(shù)據(jù)模型結(jié)構(gòu)Fig.1 Data model of HDF5
在創(chuàng)建HDF5數(shù)據(jù)格式文件時,需創(chuàng)建 “群組+數(shù)據(jù)集”,創(chuàng)建群組時需在應(yīng)用程序中指明群組的位置、名稱,而創(chuàng)建數(shù)據(jù)集時則需指明數(shù)據(jù)集的位置、名稱、數(shù)據(jù)類型、數(shù)據(jù)空間以及創(chuàng)建特性列表等信息。
1)數(shù)據(jù)類型:HDF5數(shù)據(jù)集包含兩種數(shù)據(jù)類型,元數(shù)據(jù)類型 (ato mic)和復合數(shù)據(jù)類型(co mposite)。元數(shù)據(jù)類型在API層面上不能分解稱更小的數(shù)據(jù)類型單位,它包括整型(integer),浮點型 (float),日期和時間 (date and ti me),字符串 (string),比特域 (bitfield),非透明 (opaque)等數(shù)據(jù)類型。復合數(shù)據(jù)類型是一個或多個元數(shù)據(jù)類型 (和/或這些數(shù)據(jù)類型的數(shù)組)的集合。如圖2所示。
圖2 HDF5數(shù)據(jù)類型Fig.2 Data type of HDF5
2)數(shù)據(jù)空間:HDF5數(shù)據(jù)空間描述了數(shù)據(jù)數(shù)組的維度。數(shù)據(jù)空間或者是數(shù)據(jù)點的有規(guī)則的N維數(shù)組 (稱為簡單數(shù)據(jù)空間),或者是由其他方式組成的更加通用的數(shù)據(jù)集合 (稱為復雜數(shù)據(jù)空間)。數(shù)據(jù)集的維數(shù)可以是固定的,也可以是可擴展的。數(shù)據(jù)空間也可以描述一個數(shù)據(jù)集的一部分,這就使得對選取的數(shù)據(jù)集進行局部I/O操作成為可能。
3)創(chuàng)建特性列表:創(chuàng)建數(shù)據(jù)集時,HDF5允許用戶指定原始數(shù)據(jù)在磁盤上如何組織和壓縮。這個信息存放在數(shù)據(jù)集創(chuàng)建特性列表中,并傳遞給數(shù)據(jù)集接口。磁盤上的這個原始數(shù)據(jù)集能被連續(xù)存放 (與內(nèi)存管理中的線性方式相同)、分成大塊 (chunks)存放、外部存放等。
反應(yīng)堆數(shù)值計算領(lǐng)域常用的計算數(shù)據(jù)文件組織形式為十進制或二進制文本文件。與傳統(tǒng)的數(shù)據(jù)存儲方式比較,HDF5文件能較好地解決了計算數(shù)據(jù)存儲管理中存在的眾多問題,HDF5文件在反應(yīng)堆數(shù)值計算領(lǐng)域的主要優(yōu)勢如下。
(1)數(shù)據(jù)存儲規(guī)模無限性
除去硬件條件的限制,HDF5數(shù)據(jù)格式不限制單個HDF5文件大小,常規(guī)數(shù)據(jù)文件一般不能超過2 GB,而HDF5對超過4 GB的數(shù)據(jù)仍然能夠流暢存儲。隨著反應(yīng)堆數(shù)值計算精細化程度的不斷提高,相應(yīng)的計算數(shù)據(jù)可能達到數(shù)GB的規(guī)模,HDF5文件能有效的解決反應(yīng)堆堆芯計算數(shù)據(jù)的存儲規(guī)模問題。
(2)跨平臺和可移植性
目前主流的核反應(yīng)堆計算軟件的編程語言包括C、C++、Fortran和Java等,運行平臺包括UNIX、Linux和Windows等。HDF5文件具有C、C++、Java和Fortran90程序接口,支持跨平臺在不同的計算環(huán)境中訪問數(shù)據(jù),很好地適用于不同編程語言及不同運行平臺的核反應(yīng)堆計算軟件。
(3)并行I/O和局部I/O機制
反應(yīng)堆堆芯計算數(shù)據(jù)規(guī)模較為龐大,I/O時間開銷較大。HDF5文件實現(xiàn)了一個虛擬文件層,提供了多I/O機制,HDF5并行I/O驅(qū)動器支持并行的將數(shù)據(jù)寫到HDF5文件中,局部I/O機制則能使開發(fā)者和用戶精確地讀寫需要的數(shù)據(jù),從而提高數(shù)據(jù)訪問效率。
此外,HDF5文件還具有自我描述性、數(shù)據(jù)模型通用性、數(shù)據(jù)存儲機制的靈活性等特點,豐富的層次結(jié)構(gòu)為用戶表達數(shù)據(jù)結(jié)構(gòu)提供了極大的靈活性。
HDF5函數(shù)庫 (HDF5 Librar y)提供了一系列應(yīng)用程序接口 (API)。這些API提供用于創(chuàng)建、存取、處理HDF5文件和對象的例程。HDF5函數(shù)庫是由C語言實現(xiàn)的,也包括使用Fortran90和Java編寫的外殼函數(shù),可通過以上3種編程語言在反應(yīng)堆數(shù)值計算軟件中進行HDF5庫文件的讀寫操作。
使用HDF5函數(shù)庫進行數(shù)據(jù)寫入的流程如圖3所示。
HDF5中用來存放數(shù)據(jù)與定位數(shù)據(jù)的結(jié)構(gòu)分別是DataSet與hyperslab,使用方式如下:
1)定義數(shù)據(jù)集之前,需指定數(shù)據(jù)類型、數(shù)據(jù)空間、存儲布局、未初始化數(shù)據(jù)的默認值等。數(shù)據(jù)集具有可擴展性,可以根據(jù)需要實時擴展數(shù)據(jù)空間的大小,從而改變數(shù)據(jù)集的容量。
2)讀或?qū)憯?shù)據(jù)都需要先定位到數(shù)據(jù)空間中將要讀寫的位置,然后調(diào)用write或者read函數(shù)進行存取。
在層次數(shù)據(jù)結(jié)構(gòu)中,訪問HDF5文件內(nèi)容類似Windows文件夾的訪問:首先指定文件名,然后以 “/”來表示層次。例如/Data/FEMData表示某文件內(nèi)名稱為Data的群組下面的一個名為FEMData的群組或者數(shù)據(jù)集。HDF5支持部分I/O,可以有選擇性的讀寫數(shù)據(jù)集中的一部分數(shù)據(jù),這個機制是通過Hyperslab來實現(xiàn)的。部分I/O避免多余的內(nèi)存數(shù)據(jù)拷貝,保證數(shù)據(jù)存儲效率。
圖3 HDF5文件數(shù)據(jù)寫入流程Fig.3 Write flow of HDF5
針對反應(yīng)堆組件中子學、堆芯中子學、堆芯熱工水力數(shù)據(jù)的特點,設(shè)計并實現(xiàn)了基于HDF5數(shù)據(jù)格式的組件中子學參數(shù)庫KYMRES(KYlin-2 Main RESults databank)、堆芯中子學參數(shù)庫COMRES(COrca-3D Main RESults databank)和堆芯熱工水力參數(shù)庫THMRES(Ther mal-Hydraulic subchannel Main RESults databank)。
HDF5文件的優(yōu)勢之一是能對數(shù)據(jù)進行分層分組的管理,上述參數(shù)庫的設(shè)計正是基于這一思路開展。
組件中子學參數(shù)庫KY MRES包含基礎(chǔ)數(shù)據(jù)和狀態(tài)點 (分支)數(shù)據(jù),其中基礎(chǔ)數(shù)據(jù)可劃分為幾何數(shù)據(jù)、選項數(shù)據(jù)等,狀態(tài)點數(shù)據(jù)則包括二維分布場:中子通量、功率、截面、核密度等。KYMRES庫具體形式如圖4所示。KYMRES庫成功應(yīng)用于先進中子學柵格 (組件)計算軟件KYLIN-2中,可用于軟件自身再啟動計算和下游堆芯計算。同時,KYMRES庫包含了KYLIN-2軟件所有的計算輸出信息,由于HDF5文件提供了專用的文件查看工具,因此KYMRES庫也可作為KYLIN-2軟件的輸出文件提供給用戶使用。
堆芯中子學參數(shù)庫COMRES是具備主要信息的堆芯三維數(shù)據(jù)庫,提供給堆芯后續(xù)計算使用,如首循環(huán)裝載計算、換料循環(huán)裝載計算提供給堆芯燃耗計算的堆芯數(shù)據(jù)庫、歷史循環(huán)的燃耗計算提供給換料循環(huán)裝載計算的堆芯數(shù)據(jù)庫。
COMRES庫包含基礎(chǔ)數(shù)據(jù)和燃耗步數(shù)據(jù),其中基礎(chǔ)數(shù)據(jù)包括不隨燃耗或堆芯狀態(tài)變化的堆芯幾何模型、燃料組件裝載等信息,燃耗步數(shù)據(jù)則包括隨燃耗或堆芯狀態(tài)變化的堆芯總體、組件、節(jié)塊、燃料棒等不同尺度下的各類參數(shù),如中子通量、功率、截面、核密度等參數(shù)的三維分布場。
COMRES庫具體結(jié)構(gòu)形式如圖5所示,COMRES庫已成功應(yīng)用于先進節(jié)塊法堆芯三維少群中子學計算軟件CORCA-3D中。
T H MRES庫用于存儲堆芯各項熱工水力參數(shù),依次按照時間步、子通道號、軸向節(jié)塊號的層次進行數(shù)據(jù)的存儲,存儲的數(shù)據(jù)主要包括流體物性 (流體密度、比焓、導熱率),堆芯熱工水力參數(shù) (溫度、壓力、流量),本構(gòu)關(guān)系式參數(shù)(摩擦系數(shù)、空泡份額、含氣率、換熱系數(shù)),DNBR參數(shù) (不同CHF關(guān)系式計算的結(jié)果)等。
T H MRES庫具備完整的堆芯三維熱工水力參數(shù)信息,成功應(yīng)用于堆芯熱工水力子通道分析軟件CORT H等軟件中,可用于CORT H軟件再啟動計算,堆芯溫場、流場三維顯示,同時也可作為堆芯多專業(yè)耦合系統(tǒng)的接口數(shù)據(jù)。
T H MRES庫第一層為瞬態(tài)時間步,第二層為各子通道編號,第三層為子通道內(nèi)軸向節(jié)塊,第四層為節(jié)塊內(nèi)各參數(shù),具體結(jié)構(gòu)形式如圖6所示。
圖4 KYMRES庫結(jié)構(gòu)Fig.4 Structure of KYMRES
圖6 THMRES庫結(jié)構(gòu)Fig.6 Structure of TH MRES
本文針對核反應(yīng)堆計算軟件對海量數(shù)據(jù)存儲管理和輸入輸出 (I/O)的需求,對HDF5數(shù)據(jù)格式進行了深入研究,掌握了HDF5數(shù)據(jù)格式的結(jié)構(gòu)、特點、優(yōu)勢,以及HDF5文件的編程接口。針對中國核動力研究設(shè)計院自主研發(fā)的先進中子學柵格計算軟件KYLIN-2、先進節(jié)塊法堆芯三維少群中子學計算軟件CORCA-3D、堆芯熱工水力子通道分析軟件CORT H對數(shù)據(jù)存儲和處理的需求,設(shè)計并實現(xiàn)了基于HDF5文件格式的組件參數(shù)庫KY MRES、堆芯參數(shù)庫COMRES、子通道參數(shù)庫T H MRES。
KY MRES、COMRES和T H MRES庫對數(shù)據(jù)進行了分層分組的管理和存儲,KYLIN-2、CORCA-3D和CORT H軟件能夠十分便捷的對指定的群組或數(shù)據(jù)集進行存取,無需將數(shù)據(jù)庫整體讀入,節(jié)省了內(nèi)存開銷,并且軟件能夠同時對多個群組或數(shù)據(jù)集進行存取操作。對局部I/O和并行I/O的支持使得上述數(shù)據(jù)庫I/O效率得到了大幅提升。滿足了反應(yīng)堆堆芯數(shù)值計算軟件的數(shù)據(jù)存儲管理和高效I/O的要求。