国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

ARM計(jì)算環(huán)境下堆芯程序CORTH和KYLIN2的移植1)

2021-03-13 07:17明平洲余紅星
中國(guó)核電 2021年1期
關(guān)鍵詞:堆芯數(shù)值組件

明平洲,蘆 韡,劉 東,曾 輝,余紅星

(1.中國(guó)核動(dòng)力研究設(shè)計(jì)院,四川 成都 610213;2.中國(guó)核動(dòng)力研究設(shè)計(jì)院核反應(yīng)堆系統(tǒng)設(shè)計(jì)技術(shù)重點(diǎn)實(shí)驗(yàn)室,四川 成都 610213)

中國(guó)核動(dòng)力研究設(shè)計(jì)院開(kāi)展的軟件自主化項(xiàng)目已進(jìn)入到第三期,其成果形式主要是NESTOR軟件包等涵蓋核反應(yīng)堆多個(gè)學(xué)科所需的計(jì)算程序。堆芯計(jì)算涉及的學(xué)科主要有反應(yīng)堆物理、熱工水力、力學(xué)以及燃料性能等,它們的單學(xué)科計(jì)算或者多學(xué)科耦合計(jì)算均用于論證和分析堆芯內(nèi)部存在的大量異質(zhì)現(xiàn)象[1]。由于真實(shí)堆芯的解析解極難獲得,不同的數(shù)值離散方法對(duì)各種物理數(shù)學(xué)方程的工程求解成為計(jì)算相關(guān)研究人員的核心工作[2]?,F(xiàn)階段中國(guó)核動(dòng)力研究設(shè)計(jì)院引進(jìn)的基礎(chǔ)集群計(jì)算設(shè)施采用Intel商用處理器和國(guó)產(chǎn)飛騰處理器混合組成的結(jié)構(gòu),能夠通過(guò)SLURM集群資源管理系統(tǒng)進(jìn)行計(jì)算作業(yè)的分區(qū)投遞。目前國(guó)內(nèi)高端處理器市場(chǎng)主要有龍芯、飛騰和兆芯等品牌,其中飛騰研制的CPU已加入開(kāi)放的ARM生態(tài)系統(tǒng),指令集兼容ARMv8-A[3]。區(qū)別于Intel商用處理器使用的X86復(fù)雜指令集體系,ARM是典型的精簡(jiǎn)指令集體系。這使得集群計(jì)算機(jī)有不同特點(diǎn)的計(jì)算資源可供使用。不同指令集體系下的處理器存在著不同特點(diǎn)[4],在商用處理器受限或計(jì)算資源緊張的情況下,ARM計(jì)算資源有可能成為一種補(bǔ)充的數(shù)值計(jì)算資源。

研究涉及移植的兩個(gè)軟件描述為[5]:

1)CORTH是用于堆芯熱工水力分析的子通道程序,可用于分析研究反應(yīng)堆及其回路系統(tǒng)中冷卻劑的流動(dòng)特性、熱量傳輸特性和燃料元件的傳熱特性,正在持續(xù)進(jìn)行開(kāi)發(fā)和改進(jìn)。

2)反應(yīng)堆物理涉及穩(wěn)態(tài)計(jì)算和動(dòng)態(tài)計(jì)算兩大類(lèi),它們根據(jù)某一層面的均勻化處理結(jié)果進(jìn)行全堆芯的中子物理參數(shù)求解。KYLIN2程序現(xiàn)階段在組件級(jí)別為堆芯程序提供組件庫(kù)的計(jì)算,其核心為使用特征線方法的中子輸運(yùn)求解器,具備多種計(jì)算功能。

1 計(jì)算環(huán)境說(shuō)明

現(xiàn)階段中國(guó)核動(dòng)力研究設(shè)計(jì)院引進(jìn)的集群計(jì)算機(jī)具備多個(gè)計(jì)算節(jié)點(diǎn),分為多個(gè)分布式內(nèi)存計(jì)算區(qū)域,兩個(gè)主要類(lèi)別對(duì)應(yīng)于Intel商業(yè)處理器環(huán)境和國(guó)產(chǎn)飛騰處理器環(huán)境。前者在運(yùn)行穩(wěn)定性和配套軟件上較為成熟;后者面向通用計(jì)算,但計(jì)算效率和運(yùn)行穩(wěn)定性略為不同,通常ARM處理器結(jié)構(gòu)主要應(yīng)用于嵌入式數(shù)字設(shè)備等領(lǐng)域,在數(shù)值分析計(jì)算領(lǐng)域尚處于局部應(yīng)用狀態(tài)。

硬件描述:飛騰FT-1500 A是基于ARM64位架構(gòu)的服務(wù)器芯片,面向計(jì)算服務(wù)器市場(chǎng)。在集群計(jì)算機(jī)上,每個(gè)邏輯上的飛騰計(jì)算節(jié)點(diǎn)使用了一個(gè)飛騰FT-1500 A處理器,具備16個(gè)處理器核心,每個(gè)處理器核心運(yùn)行單個(gè)線程。處理器打開(kāi)了FP和ASIMD、SHA1,SHA2等標(biāo)志位。每個(gè)飛騰計(jì)算節(jié)點(diǎn)上的內(nèi)存為64 GB;

軟件描述:操作系統(tǒng)為麒麟操作系統(tǒng),開(kāi)發(fā)環(huán)境主要為GCC 4.9.3,安裝Glibc 2.19、make 4.0和開(kāi)發(fā)工具鏈Binutils 2.24.90[6]。

子通道計(jì)算軟件CORTH和堆芯組件程序KYLIN2作為專業(yè)應(yīng)用軟件在開(kāi)發(fā)過(guò)程中依賴于第三方數(shù)值函數(shù)庫(kù)等。因此,移植過(guò)程需要圍繞兩類(lèi)軟件進(jìn)行移植和測(cè)試,一類(lèi)是底層系統(tǒng)軟件,用于為軟件自主化的上層應(yīng)用軟件提供通用計(jì)算功能的接口,并在ARM計(jì)算環(huán)境下擺脫對(duì)商業(yè)函數(shù)庫(kù)的依賴;另一類(lèi)是堆芯計(jì)算本身的內(nèi)容,需要進(jìn)行程序代碼改寫(xiě)和修訂,適應(yīng)新的計(jì)算環(huán)境。在本文中將對(duì)CORTH和KYLIN2展開(kāi)分析和計(jì)算。

表1 待移植軟件Table 1 Software to be ported

研究首先驗(yàn)證飛騰處理器所在ARM環(huán)境下移植的可行性和正確性,然后給出移植堆芯程序的過(guò)程和實(shí)驗(yàn)來(lái)展開(kāi)討論。考慮集群計(jì)算機(jī)商用計(jì)算節(jié)點(diǎn)配置參數(shù)的涉密性,這里選取的商用處理器對(duì)比對(duì)象為HP Z800服務(wù)器計(jì)算環(huán)境,其處理器為Intel Xeon X5540,共計(jì)12個(gè)核心,處理器頻率為2.53 GHz,約為飛騰處理器的兩倍。

2 移植和測(cè)試

整個(gè)移植工作采用自底向上的流程以適應(yīng)ARM計(jì)算環(huán)境,測(cè)試過(guò)程則將對(duì)比Intel處理器環(huán)境(HP Z800服務(wù)器)和ARM計(jì)算環(huán)境(集群系統(tǒng)的飛騰計(jì)算節(jié)點(diǎn))的效率、數(shù)值穩(wěn)定性和正確性。

2.1 系統(tǒng)軟件的移植

參與數(shù)據(jù)前后處理的DATA和HDF5函數(shù)庫(kù)直接使用ARM計(jì)算環(huán)境提供的C/C++編譯器進(jìn)行編譯和軟件提供的基準(zhǔn)程序進(jìn)行測(cè)試,確保文本文件或二進(jìn)制文件的正確讀寫(xiě)。

參與數(shù)值計(jì)算的PETSc、SparseLib++、Lapack和SuperLU在移植過(guò)程中重點(diǎn)用于求解線性方程組和參與特征值計(jì)算等數(shù)值問(wèn)題。各個(gè)函數(shù)庫(kù)由多個(gè)模塊組成,底層依賴于向量、矩陣和索引集等數(shù)據(jù)結(jié)構(gòu),內(nèi)部采用C/C++語(yǔ)言和Fortran語(yǔ)言混合編程。這里移植到飛騰計(jì)算節(jié)點(diǎn)后使用GNU編譯器(gcc,g++和gfortran)以及基于GNU編譯器生成的并行編譯器(mpicc,mpicxx和mpifort)進(jìn)行編譯,能夠正常生成靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)。與此同時(shí),基于已有的熱工分析內(nèi)的守恒控制方程和特征線方法內(nèi)的提取的全局粗網(wǎng)加速線性方程組的研究工作[7],使用移植的庫(kù)進(jìn)行例題測(cè)試。ARM計(jì)算環(huán)境能夠正常完成數(shù)值計(jì)算,且收斂精度均達(dá)到預(yù)期的需求。

2.2 CORTH

CORTH程序?qū)崿F(xiàn)全堆芯柵元級(jí)別的子通道計(jì)算,僅使用C/C++編程。移植過(guò)程中需要去掉MKL函數(shù)庫(kù)的依賴和改寫(xiě)Fortran語(yǔ)言部分,例如將線性方程組的求解改用SparseLib++進(jìn)行求解。此外在ARM64平臺(tái)上重新編譯DATA類(lèi)和熱工物性函數(shù)庫(kù)Thermal_lib,移植過(guò)程涉及Fortran和C++在ARM環(huán)境下的相互調(diào)用,例如熱工物性函數(shù)庫(kù)中的func函數(shù),在書(shū)寫(xiě)GNU編譯器對(duì)應(yīng)的頭文件聲明為:

#ifdef __cplusplus

extern"C"

{

#endif

extern double func_(double*,double*,double*);

#ifdef __cplusplus

}

#endif

移植完成后針對(duì)ACP1000壓水堆四種子通道劃分的例題進(jìn)行串行計(jì)算效率的測(cè)試。兩種硬件環(huán)境下均使用GNU編譯器,編譯優(yōu)化等級(jí)統(tǒng)一設(shè)置為O2。

表2 CORTH運(yùn)行時(shí)間統(tǒng)計(jì)Table 2 Runtime statistics of CORTH

串行計(jì)算情況下Intel商用節(jié)點(diǎn)的效率明顯高于ARM計(jì)算節(jié)點(diǎn),隨著子通道劃分的數(shù)量增加,ARM計(jì)算節(jié)點(diǎn)的效率與Intel計(jì)算環(huán)境的差距由7.8倍變?yōu)?.7倍。經(jīng)過(guò)測(cè)試之后可以明確子通道分析程序的運(yùn)行特點(diǎn):隨著問(wèn)題規(guī)模的提升,ARM計(jì)算節(jié)點(diǎn)與Intel計(jì)算環(huán)境的效率差距在減小。

2.3 KYLIN2

KYLIN2用于生成組件截面庫(kù),內(nèi)部的燃耗計(jì)算提供不同工況點(diǎn),因此KYLIN2的核心計(jì)算功能體現(xiàn)為二維特征線輸運(yùn)計(jì)算和點(diǎn)燃耗計(jì)算。KYLIN2程序的主要計(jì)算步驟為:

1)計(jì)算參數(shù)的初始化和分配內(nèi)存空間;

2)讀取輸入文件;

3)獲取基干數(shù)據(jù)庫(kù)文件;

4)判斷計(jì)算類(lèi)型,執(zhí)行組件基干計(jì)算或燃料分支計(jì)算;

5)燃耗步是否結(jié)束,結(jié)束則整個(gè)計(jì)算完成,否則轉(zhuǎn)回步驟2)。

串行KYLIN2程序的移植過(guò)程主要涉及替換燃耗計(jì)算的線性方程組求解部分,即使用SuperLU函數(shù)庫(kù)提供的直接消去法函數(shù)進(jìn)行線性方程組的求解。

表3 組件例題Table 3 Assembly examples

以上兩個(gè)例題將在HPZ800服務(wù)器和內(nèi)部集群計(jì)算機(jī)的飛騰計(jì)算節(jié)點(diǎn)運(yùn)行。數(shù)值穩(wěn)定性和正確性將對(duì)比按照燃耗深度與有效增殖因子值的關(guān)系圖形給出(限于篇幅,每個(gè)燃耗步下的功率分布和燃耗分布不在論文中給出)。計(jì)算效率方面則給出同一例題在HP Z800服務(wù)器和飛騰計(jì)算節(jié)點(diǎn)的各自串行總計(jì)算時(shí)間。

(1)31016B例題

該例題增殖因子隨燃耗深度的變化趨勢(shì)如圖1所示。

圖1 31016B問(wèn)題的燃耗變化趨勢(shì)圖Fig.1 Burn-up change trend of 31016B example

從圖1中可以看到,兩種硬件平臺(tái)下增殖因子隨燃耗深度的變化趨勢(shì)保持吻合,數(shù)值穩(wěn)定性在誤差范圍內(nèi)。該例題在兩類(lèi)硬件環(huán)境中的串行計(jì)算時(shí)間統(tǒng)計(jì)如表4所示,兩者相差約在6倍左右。

表4 31016B問(wèn)題的計(jì)算時(shí)間Table 4 Calculation time of 31016B example

(2)42000_Grey例題

該例題增殖因子隨燃耗深度的變化趨勢(shì)如圖2所示。

圖2 42000_Grey問(wèn)題的燃耗變化趨勢(shì)圖Fig.2 Burn-up change trend of 24000_Grey example

從圖2中可以看到,兩種硬件平臺(tái)下增殖因子隨燃耗深度的變化趨勢(shì)保持吻合,數(shù)值穩(wěn)定性在誤差范圍內(nèi)。另外該例題在兩類(lèi)硬件環(huán)境中的串行計(jì)算時(shí)間統(tǒng)計(jì)如表5所示,兩者相差約在7倍左右。

表5 42000_Grey問(wèn)題的計(jì)算時(shí)間Table 5 Calculation time of 42000_Grey example

根據(jù)以上的移植和測(cè)試,可以得出結(jié)論: KYLIN2程序在ARM計(jì)算節(jié)點(diǎn)與Intel計(jì)算環(huán)境的效率差距在6~8倍,仍然遠(yuǎn)高于CPU頻率之間的差別,這一方面由于ARM精簡(jiǎn)指令的運(yùn)行方式在數(shù)值計(jì)算方面相比Intel處理器使用的復(fù)雜指令集在處理數(shù)值計(jì)算的時(shí)候存在差異,另一方面也由于飛騰處理器FT-1500 A的緩存較小。整個(gè)計(jì)算結(jié)果表明數(shù)值求解方法的替換對(duì)數(shù)值穩(wěn)定性沒(méi)有影響,ARM計(jì)算節(jié)點(diǎn)上數(shù)值計(jì)算的準(zhǔn)確性與Intel計(jì)算環(huán)境沒(méi)有明顯差異。

3 KYLIN2的OpenMP并行優(yōu)化

實(shí)際工程應(yīng)用時(shí)需要對(duì)KYLIN2反復(fù)調(diào)用,生成不同工況點(diǎn)下的大量組件截面庫(kù)。為了在飛騰處理器為代表的ARM計(jì)算環(huán)境下提升計(jì)算效率,對(duì)KYLIN2的輸運(yùn)計(jì)算模塊編制OpenMP共享式內(nèi)存并行版本KYLIN2-OpenMP,增強(qiáng)國(guó)產(chǎn)芯片的實(shí)用性。使用兩種常見(jiàn)于學(xué)術(shù)論文的組件基準(zhǔn)例題(壓水堆組件AFA3G和C5G7基準(zhǔn)例題UO2組件)進(jìn)行測(cè)試,同時(shí)對(duì)比有效增殖因子值的正確性和計(jì)算效率。

首先對(duì)不使用粗網(wǎng)加速的情況進(jìn)行統(tǒng)計(jì),編譯優(yōu)化選項(xiàng)選為-O2,相應(yīng)的計(jì)算結(jié)果和串行計(jì)算效率統(tǒng)計(jì)如表6所示。飛騰計(jì)算節(jié)點(diǎn)在求解AFA3 G組件問(wèn)題時(shí)耗時(shí)較長(zhǎng)(約兩天時(shí)間仍然沒(méi)有計(jì)算完成),與HP Z800相差一個(gè)數(shù)量級(jí)(10倍)。

表6 無(wú)粗網(wǎng)加速的計(jì)算時(shí)間統(tǒng)計(jì)Table 6 Calculation time without GCMFD

使用粗網(wǎng)加速之后將減少數(shù)值迭代次數(shù),表7統(tǒng)計(jì)相應(yīng)的運(yùn)行時(shí)間,編譯優(yōu)化選項(xiàng)仍然選為-O2。數(shù)值方法的改變并不會(huì)改變數(shù)據(jù)的內(nèi)存布局,處理器的差異仍然保持在一個(gè)數(shù)量級(jí)左右。

表7 粗網(wǎng)加速的計(jì)算時(shí)間統(tǒng)計(jì)Table 7 Calculation time of GCMFD

接下來(lái)固定優(yōu)化等級(jí)為O2,然后測(cè)試OpenMP多線程版本在兩種硬件環(huán)境下的實(shí)際并行效率,限于篇幅這里僅給出C5 G7 UO2組件例題的統(tǒng)計(jì)結(jié)果(AFA3 G組件例題有類(lèi)似結(jié)果)。實(shí)驗(yàn)時(shí)考慮HP Z800服務(wù)器最多有12個(gè)處理器核心,因此線程數(shù)取值范圍取為[1,12]。

如圖3所示趨勢(shì),兩種硬件環(huán)境下C5 G7例題的計(jì)算效率在O2優(yōu)化等級(jí)下均通過(guò)多線程并行取得效率的提升,但處理器核數(shù)超過(guò)8個(gè)之后并不能帶來(lái)計(jì)算效率的改善,這一方面由于C5 G7例題的能群循環(huán)結(jié)構(gòu)只有7個(gè)能群,能群并行的算法存在著增益上限,另一方面多線程的管理開(kāi)銷(xiāo)隨著線程增多逐漸變得不可忽略。借助于OpenMP共享式內(nèi)存并行,單個(gè)計(jì)算方案在飛騰計(jì)算節(jié)點(diǎn)內(nèi)的計(jì)算效率與HP Z800服務(wù)器的差距在縮小,此時(shí)統(tǒng)計(jì)計(jì)算時(shí)間可以明確使用8個(gè)線程后飛騰處理器運(yùn)行兩個(gè)例題的效率與HP Z800服務(wù)器上單個(gè)Intel處理器的運(yùn)行時(shí)間接近。當(dāng)集群計(jì)算機(jī)的商用計(jì)算資源緊張時(shí),由于國(guó)產(chǎn)計(jì)算節(jié)點(diǎn)使用人數(shù)較少,此多線程并行版本的臨時(shí)解決方案可滿足使用ARM計(jì)算環(huán)境臨時(shí)替換商用計(jì)算環(huán)境執(zhí)行計(jì)算的需求(核工程計(jì)算過(guò)程中,Intel商用處理器經(jīng)常使用單線程來(lái)運(yùn)行早期版本的KYLIN2程序)。

圖3 引入OpenMP并行后的組件例題運(yùn)行時(shí)間Fig.3 Runtime statistics ofassembly example after OpenMP programming

4 結(jié)論

在內(nèi)部集群計(jì)算機(jī)的飛騰計(jì)算節(jié)點(diǎn)進(jìn)行移植應(yīng)用,探討國(guó)產(chǎn)芯片構(gòu)建的計(jì)算環(huán)境應(yīng)用于工程計(jì)算的可行性,形成的結(jié)論如下所述:

1)所有初步移植的程序在飛騰計(jì)算節(jié)點(diǎn)上的串行計(jì)算效率均低于HP Z800這類(lèi)Intel處理器商用服務(wù)器,且超過(guò)處理器頻率之間的差異。更改編譯優(yōu)化等級(jí)之后,計(jì)算效率的差異保持不變;

2)現(xiàn)階段串行CORTH 0.8.4版本和KYLIN2 0.8.8版本的程序已被成功移植到飛騰計(jì)算節(jié)點(diǎn),且能夠正常運(yùn)行和開(kāi)展工程計(jì)算。移植過(guò)程使用的計(jì)算例題均能夠正常完成計(jì)算,計(jì)算結(jié)果與Intel硬件環(huán)境下保持一致(偏差范圍內(nèi));

3)飛騰計(jì)算節(jié)點(diǎn)上的數(shù)值計(jì)算運(yùn)行效率較低,一方面是由于使用的是底層函數(shù)庫(kù),另一方面也由于飛騰處理器本身的精簡(jiǎn)指令集特性和較小的緩存。相比Intel處理器復(fù)雜指令集存在多種復(fù)合指令,完成部分計(jì)算需要更多的指令周期,但通過(guò)引入局部的OpenMP多線程優(yōu)化,可以使得國(guó)產(chǎn)飛騰這種ARM計(jì)算環(huán)境成為工程計(jì)算的補(bǔ)充資源。

國(guó)產(chǎn)處理器及其生態(tài)環(huán)境在持續(xù)發(fā)展,核反應(yīng)堆工程計(jì)算在后續(xù)發(fā)展過(guò)程可以橫向借鑒日本、美國(guó)等經(jīng)驗(yàn),覆蓋更多的計(jì)算硬件,提升適用性和交叉驗(yàn)證計(jì)算方案的正確性。本文形成的結(jié)論和記錄的技術(shù)細(xì)節(jié)將隨著后續(xù)在國(guó)產(chǎn)計(jì)算節(jié)點(diǎn)上開(kāi)展的計(jì)算分析工作進(jìn)行深化和擴(kuò)展。

致謝

本研究工作感謝中國(guó)核動(dòng)力研究設(shè)計(jì)院設(shè)計(jì)所九室提供的樣本程序和集群運(yùn)行環(huán)境,同時(shí)也感謝相關(guān)人員對(duì)論文的建議。

猜你喜歡
堆芯數(shù)值組件
Android系統(tǒng)上移動(dòng)組件化應(yīng)用框架設(shè)計(jì)
體積占比不同的組合式石蠟相變傳熱數(shù)值模擬
數(shù)值大小比較“招招鮮”
創(chuàng)建Vue組件npm包實(shí)戰(zhàn)分析
智能機(jī)械臂
艦載雷達(dá)TR組件沖擊計(jì)算方法分析
艦船測(cè)風(fēng)傳感器安裝位置數(shù)值仿真
鋁合金加筋板焊接溫度場(chǎng)和殘余應(yīng)力數(shù)值模擬
岢岚县| 兴仁县| 司法| 靖州| 玛曲县| 南雄市| 榆社县| 得荣县| 孙吴县| 达孜县| 淮北市| 高尔夫| 宁远县| 大关县| 中阳县| 新巴尔虎左旗| 广平县| 辛集市| 肃南| 渭南市| 勐海县| 英吉沙县| 手游| 威信县| 乐安县| 邢台县| 剑川县| 安顺市| 额尔古纳市| 崇礼县| 肇庆市| 阳高县| 常德市| 固原市| 芜湖市| 始兴县| 清镇市| 道孚县| 镇康县| 绥江县| 封开县|