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