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

?

ARM計算環(huán)境下堆芯程序的移植*

2021-05-11 02:00明平洲李治剛余紅星
計算機工程與科學(xué) 2021年4期
關(guān)鍵詞:計算環(huán)境堆芯結(jié)點

明平洲,李治剛,劉 婷,蘆 韡,劉 東,曾 輝,余紅星

(1.中國核動力研究設(shè)計院,四川 成都 610213;2.中國核動力研究設(shè)計院核反應(yīng)堆系統(tǒng)設(shè)計技術(shù)重點實驗室,四川 成都 610213)

1 引言

堆芯計算涉及到的學(xué)科主要有反應(yīng)堆物理、熱工水力、力學(xué)和燃料性能等,它們的單學(xué)科計算或者多學(xué)科耦合計算均用于論證和分析堆芯內(nèi)部存在的大量異質(zhì)現(xiàn)象[1]。由于真實堆芯的解析解極難獲得,采用不同的數(shù)值離散方法對各種物理數(shù)學(xué)方程進行工程求解成為計算相關(guān)研究人員的核心工作[2]?,F(xiàn)階段中國核動力研究設(shè)計院引進的基礎(chǔ)集群計算設(shè)施采用異構(gòu)設(shè)計,國產(chǎn)飛騰處理器組成的計算分區(qū)能夠通過SLURM集群資源管理系統(tǒng)進行計算作業(yè)的分區(qū)投遞。目前國內(nèi)高端處理器市場主要有龍芯、飛騰和兆芯等品牌,其中天津飛騰信息有限公司研制的CPU已加入到開放的ARM生態(tài)系統(tǒng),飛騰64位通用處理器產(chǎn)品兼容ARMv8指令集[3],采用28 nm工藝流片,具備高性能和低功耗等特點,定位為中高端Intel至強服務(wù)器芯片的替代品。區(qū)別于Intel商用處理器使用的X86復(fù)雜指令集體系,ARM是典型的精簡指令集體系,這使得集群計算機有不同特點的計算資源可使用。不同指令集體系下的處理器存在著不同特點[4],在商用處理器受限或計算資源緊張的情況下,ARM計算資源有可能成為一種補充的數(shù)值計算資源。

本文研究移植的4個軟件描述為:

(1)NACK-R是使用粗網(wǎng)節(jié)塊法求解穩(wěn)態(tài)中子擴散方程的C/C++程序[5],常用于充當(dāng)堆芯燃料管理軟件的核心求解器,提供堆芯各個工況點下的通量分布和功率分布。

(2)中國核動力研究設(shè)計院堆芯熱工水力分析軟件CORTH(CORe Thermal-Hydraulics)是用于堆芯熱工水力分析的子通道程序,可用于分析研究反應(yīng)堆及其回路系統(tǒng)中冷卻劑的流動特性、熱量傳輸特性和燃料元件的傳熱特性,且正在持續(xù)進行新功能開發(fā)和細節(jié)改進[6]。

(3)特征線中子輸運計算方法具有計算精度高、幾何適應(yīng)性強和形式簡單等優(yōu)點。美國麻省理工學(xué)院研制的開源特征線輸運程序OpenMOC(Open Method Of Characteristics neutral particle transport code)使用Python和C++進行混合編程,內(nèi)部的數(shù)值計算核心采用C++編程語言,早期版本用于任意二維幾何區(qū)域的輸運計算[7]。

(4)全堆芯的中子物理參數(shù)求解在多個層面上存在著均勻化計算。KYLIN2程序現(xiàn)階段在組件級別為堆芯程序提供組件庫的計算,其核心為使用特征線方法的中子輸運求解器,具備多種參數(shù)的計算功能[8]。

2 計算環(huán)境說明

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

硬件描述:飛騰FT-1500A是基于ARM64位架構(gòu)的服務(wù)器芯片,面向計算服務(wù)器市場。在本單位購置的集群計算機上,每個邏輯上的飛騰計算結(jié)點使用1個飛騰FT-1500A處理器,具備16個處理器核心,每個處理器核心運行單個線程。每個飛騰計算結(jié)點上的內(nèi)存為32 GB,具備16 MB的緩存。根據(jù)供應(yīng)商提供的文檔可以獲知該通用計算處理器的主頻為1.6 GHz。

軟件描述:圍繞麒麟操作系統(tǒng)建立系統(tǒng)環(huán)境,關(guān)聯(lián)集群計算機的各個軟件層次。其中開發(fā)環(huán)境主要為GCC 4.9.3,安裝Glibc 2.19、make 4.0和開發(fā)工具鏈Binutils 2.24.90[9]。

待移植程序或軟件的部分數(shù)值求解內(nèi)容依賴于第三方數(shù)值函數(shù)庫,因此移植過程需要圍繞2類軟件進行移植、修訂和測試。一類是底層系統(tǒng)軟件,用于為上層的堆芯數(shù)值計算提供通用計算功能,在ARM計算環(huán)境中擺脫對商業(yè)處理器環(huán)境中的函數(shù)庫依賴;另一類是堆芯計算本身的求解內(nèi)容,需要進行程序代碼改寫和修訂,從而以同一套程序代碼適應(yīng)不同硬件的計算環(huán)境。表1統(tǒng)計了真實移植過程所涉及的軟件。

Table 1 Softwares to be ported

本文首先驗證飛騰處理器在ARM環(huán)境中進行移植的可行性和正確性,記錄上述軟件的移植過程和數(shù)值實驗。然后利用OpenMP對KYLIN2程序并行進行優(yōu)化,論證單結(jié)點多個飛騰處理器核心的并行能力。這里選取的對比對象為Intel商用處理器,其中Intel商用處理器的主頻約為飛騰處理器主頻的2倍,理論上飛騰處理器的串行運行效率為Intel商用處理器串行運行效率的一半。分析KYLIN2程序并行優(yōu)化時,按照最多使用12個處理器核心進行討論。

3 移植和測試

整個移植工作采用自底向上的流程以適應(yīng)由飛騰處理器所構(gòu)建的集群計算機單結(jié)點ARM計算環(huán)境。測試過程將對比Intel商用處理器所在計算環(huán)境和ARM計算環(huán)境的效率、數(shù)值穩(wěn)定性和正確性。

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

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

參與數(shù)值計算的PETSc、SparseLib++、Lapack和SuperLU在移植過程中重點用于求解線性方程組和參與特征值計算等數(shù)值問題,這些函數(shù)庫由多個模塊組成,底層依賴于向量、矩陣和索引集等數(shù)據(jù)結(jié)構(gòu),內(nèi)部采用C/C++語言和Fortran語言混合編程。本文將其移植到飛騰計算結(jié)點后使用GNU編譯器(gcc,g++和gfortran)以及基于GNU編譯器生成的并行編譯器(mpicc,mpicxx和mpifort)進行編譯,能夠正常生成靜態(tài)庫和動態(tài)庫。與此同時,基于已獲取的熱工分析相關(guān)線性方程組的研究工作[10],本文使用移植的庫進行線性方程組求解例題的測試,以證明飛騰處理器構(gòu)建的ARM通用計算環(huán)境能夠正常完成基本的數(shù)值計算,且收斂精度均可達到預(yù)期。

3.2 NACK-R

NACK-R是用于堆芯燃料管理分析的C/C++版本的粗網(wǎng)節(jié)塊法擴散計算程序(CORCA-3D擴散計算模塊的參考原型),本文將其移植到ARM環(huán)境中,并參照NACK-F的測試內(nèi)容,使用4個例題進行對比測試,計算結(jié)果主要統(tǒng)計有效增殖因子keff和例題的運行時間(各個粗網(wǎng)節(jié)塊的通量值也進行了對比,計算結(jié)果保持一致)。Intel商用處理器的計算環(huán)境和飛騰處理器的計算環(huán)境所使用的編譯器均選擇g++。

編譯的優(yōu)化選項首先選取為O0,保證不引入編譯器的特定優(yōu)化行為,統(tǒng)計結(jié)果如表2所示。

Table 2 Test Comparison of NACK-R using O0 optimization in Intel environment and Phytium environment

編譯的優(yōu)化選項為O2,相應(yīng)的統(tǒng)計結(jié)果如表3所示。

Table 3 Test comparison of NACK-R using O2 optimization in Intel environment and Phytium environment

編譯的優(yōu)化選項為O3,相應(yīng)的統(tǒng)計結(jié)果如表4所示。

Table 4 Test comparison of NACK-R using O3 optimization in Intel environment and Phytium environment

該程序移植使用C/C++編程語言,從統(tǒng)計數(shù)據(jù)來看,串行運行時飛騰處理器隨著編譯優(yōu)化等級的變化能夠持續(xù)對效率進行改善,O3優(yōu)化等級比起O2優(yōu)化等級仍然有10%左右的性能提升。Intel商用處理器在O3優(yōu)化等級和O2優(yōu)化等級的計算效率基本相同。整體上Intel商用處理器性能高于飛騰計算結(jié)點的飛騰處理器,O0優(yōu)化等級情況下數(shù)據(jù)量較小時兩者相差約7倍,在數(shù)據(jù)量較大時相差約9倍,高于頻率之間的2倍差異。隨著編譯優(yōu)化等級的提升,飛騰處理器本身的運行效率有了較大提升,2種處理器之間的性能差異在縮小,這表明C/C++數(shù)值計算程序在使用精簡指令集的情況下可以通過編譯優(yōu)化等級的改變來明顯提升計算效率,此時2種硬件之間性能差距也接近頻率差距的2倍。移植和測試結(jié)果也表明2種硬件環(huán)境中的數(shù)值計算結(jié)果保持一致,遵循IEEE的浮點數(shù)標(biāo)準(zhǔn)規(guī)范。

3.3 CORTH

CORTH程序采用矩陣形式求解具有滑速比的四方程均勻流模型,可以實現(xiàn)按照全堆芯柵元級別劃分子通道的數(shù)值計算,求解整個堆芯的焓升和壓降。本文移植的CORTH版本為0.8.4,其主要編程語言為C/C++。為了保證數(shù)值穩(wěn)定性以及Intel處理器環(huán)境和飛騰處理器環(huán)境能夠針對同一套程序代碼進行編譯,向ARM環(huán)境的移植過程需要對CORTH 0.8.4版本完成以下2方面的代碼修訂工作:

(1)去除Intel 商業(yè)函數(shù)庫MKL(Math Kernel Library)的依賴。CORTH程序使用MKL函數(shù)庫內(nèi)的mkl_dcsrgemv函數(shù)對能量守恒和動量守恒形成的線性方程組進行迭代求解,這里將求解函數(shù)替換為SparseLib++提供的GMRES函數(shù)。該函數(shù)同樣使用廣義最小殘差的Krylov子空間方法來迭代求解線性方程組,能夠獲得與原函數(shù)mkl_dcsrgemv相同的計算精度,且串行計算效率更高。

(2)編譯過程需要在ARM環(huán)境中重新編譯CORTH程序使用的第三方內(nèi)容,例如2.1節(jié)列出的DATA類和熱工物性函數(shù)庫。該移植過程涉及到Fortran和C++混合編程,為了獲得不同硬件環(huán)境中程序代碼的一致性,需要按照GNU編譯器推薦的標(biāo)準(zhǔn)混合編程規(guī)范重寫計算函數(shù)的聲明,例如熱工物性函數(shù)庫中的func函數(shù),重寫的頭文件聲明如下所示:

#ifdef__cplusplus

extern"C"

{

#endif

externdoublefunc_(double*,double*,double*);

#ifdef__cplusplus

}

#endif

它在Intel處理器環(huán)境和ARM處理器環(huán)境中均能夠被正確識別和混合編程應(yīng)用。

當(dāng)C/C++編程語言內(nèi)調(diào)用Fortran語言形式的熱工物性函數(shù)接口時,需要在函數(shù)名稱func后添加下劃線“_”,且形參均為引用傳遞。

完成CORTH移植后,本文針對ACP1000的堆芯構(gòu)造4種子通道劃分的例題進行串行計算的正確性和效率測試。2種硬件環(huán)境下均使用GNU編譯器,根據(jù)3.2節(jié)的移植分析結(jié)論,編譯優(yōu)化等級統(tǒng)一設(shè)置為O2。

Table 5 Results and running time of CORTH

從表5的統(tǒng)計數(shù)據(jù)來看,引入SparseLib++的迭代法后,其數(shù)值穩(wěn)定性和正確性在以飛騰結(jié)點代表的ARM環(huán)境和Intel處理器環(huán)境中保持一致,表明了飛騰處理器具備通用計算的特點。計算性能方面,Intel處理器明顯高于飛騰處理器,但不同的問題規(guī)模下飛騰處理器與Intel處理器的效率差距始終保持在3~4倍,略高于兩者之間的處理器頻率差異。這是由于ARM環(huán)境中飛騰處理器具有更小的緩存,間接影響CORTH程序在執(zhí)行數(shù)值計算時的性能。

3.4 OpenMOC

本文將中子輸運的偏微分方程轉(zhuǎn)換為常微分方程,然后使用特征線形式進行數(shù)值求解。相比其它中子輸運理論數(shù)值計算方法,特征線方法具有計算精度高、幾何適應(yīng)性強和形式簡單等優(yōu)點。麻省理工學(xué)院研制的二維特征線輸運程序OpenMOC使用Python和C++進行混合編程,內(nèi)部的數(shù)值計算核心采用C++語言編程,用于任意二維幾何區(qū)域的輸運計算。本文將OpenMOC 0.1.4b版本移植到ARM環(huán)境之后使用C5G7 1/4堆芯問題進行串行運行測試,以探究特征線方法的運行特點。在Intel處理器環(huán)境中使用相同程序?qū)Ρ闰炞C,記錄keff的數(shù)值和計算效率。各個網(wǎng)格柵元的通量經(jīng)過可視化顯示后可以快速觀察2種環(huán)境中運行結(jié)果是否相同。圖1所示移植結(jié)果表明在Intel處理器與飛騰處理器上的計算保持一致。

Figure 1 Core layout and flux distribution of 2D C5G7 quarter core圖1 二維C5G7 1/4堆芯的布置和標(biāo)通量分布

2種硬件環(huán)境下的編譯器均選擇GNU編譯器,編譯過程支持C++0x特性。固定C5G7例題的數(shù)值計算分辨率參數(shù)(能群數(shù)7,方位角個數(shù)16,特征線間距0.1 cm),編譯優(yōu)化選項首先取為O0等級,OpenMOC性能對比如表6所示。

Table 6 Test comparison of OpenMOC using O0 optimization in Intel environment and Phytium environment

編譯優(yōu)化選項為O2等級,OpenMOC性能對比如表7所示。

Table 7 Test comparison of OpenMOC using O2 optimization in Intel environment and Phytium environment

編譯優(yōu)化選項為O3等級,OpenMOC性能對比如表8所示。

Table 8 Test comparison of OpenMOC using O3 optimization in Intel environment and Phytium environment

上述測試完成之后可以明確,OpenMOC在飛騰結(jié)點和Intel處理器環(huán)境中的計算結(jié)果保持一致,但在每種編譯優(yōu)化等級條件下飛騰結(jié)點的計算效率均低于Intel處理器的計算效率,比值相差約為3~4倍,高于兩者之間的頻率差異。隨著編譯優(yōu)化等級的提升,2種計算環(huán)境中的效率差距有所縮小,不同于3.2節(jié)移植程序的特點,O2選項和O3選項在2種硬件環(huán)境下對于計算效率的改善相差不大,說明OpenMOC程序編程實現(xiàn)的特征線方法使用O3的優(yōu)化等級并不會對生成的可執(zhí)行程序的效率有更好的改善。

3.5 KYLIN2

KYLIN2程序使用二維特征線輸運算法集成燃耗計算用于生成組件截面庫,本文選取0.8.8版本KYLIN2移植到ARM環(huán)境中,源代碼按照多個目錄進行組織,每個目錄代表一個功能模塊,其整體計算步驟如下所示:

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

(2)讀取輸入文件;

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

(4)判斷計算類型,執(zhí)行組件計算或燃料分支計算;

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

移植過程的主要工作分為2個方面,一方面是重寫編譯腳本來對這種多目錄組織的源代碼進行定制編譯和鏈接,規(guī)范化整個程序的軟件結(jié)構(gòu)和執(zhí)行順序;另一方面是移植和修訂程序使用的第三方內(nèi)容。在飛騰計算環(huán)境中不能使用MKL函數(shù)庫,因此需要對KYLIN2的程序代碼進行調(diào)整,去除依賴性。為了不破壞已有的程序代碼,在移植修訂過程中通過宏開關(guān)來對改動代碼進行處理,宏的判斷標(biāo)準(zhǔn)為是否是ARM64硬件平臺。

#ifdef__aarch64__

(新增的修訂代碼)

#else

(原有代碼)

#endif

調(diào)用的MKL求解函數(shù)LAPACKE_dgesv用于求解Ax=B,其中A和B為矩陣。實質(zhì)為使用LAPACKE中的求解函數(shù),安裝Netlib提供的LAPACK和LAPACKE,替換MKL求解函數(shù)。調(diào)用MKL求解函數(shù)PARDISO,該函數(shù)使用直接消去法求解稀疏線性方程組Ax=b,其中A為矩陣,b為右手向量。使用SuperLU軟件(SuperLU軟件較為知名,是由勞倫斯伯克利國家實驗室研制的稀疏矩陣直接法求解函數(shù)庫)來應(yīng)用直接消去法進行求解,替換MKL的求解函數(shù)。

移植完成之后,可在Intel結(jié)點和飛騰結(jié)點上使用同一套KYLIN2程序代碼。本文使用表9列舉的2個組件例題進行數(shù)值測試和驗證,統(tǒng)計相應(yīng)的計算結(jié)果來論證其正確性和計算效率。

Table 9 Assembly testing examples for KYLIN2 program

正確性方面的對比按照燃耗深度與有效增殖因子(keff)的關(guān)系圖給出,計算效率則給出同一例題在不同計算環(huán)境中的總運行時間。2個例題均需要迭代多個燃耗步,有限增殖因子隨燃耗深度的變化趨勢如圖2所示,其中參考解選取的是原始KYLIN2程序使用MKL函數(shù)庫在Intel環(huán)境中的運行結(jié)果,根據(jù)3.4節(jié)的分析結(jié)果,統(tǒng)一選取的編譯優(yōu)化選項為O2等級。圖2中橫坐標(biāo)均為“燃耗步數(shù)”,縱坐標(biāo)均為“有效增殖因子”,二者均無單位。

Figure 2 Burn-up change trend graph of two examples圖2 2個例題的燃耗變化趨勢圖

從圖2中可以看到,2種硬件環(huán)境中增殖因子隨燃耗深度的變化趨勢互相吻合,經(jīng)過較長時間的迭代計算之后數(shù)值穩(wěn)定性均未發(fā)生變化。2個例題在2種硬件環(huán)境中的串行運行時間如表10所示。

根據(jù)以上的移植和測試,可以得出KYLIN2程序運行這2個例題在飛騰計算環(huán)境與Intel計算環(huán)境中的效率差距在6~8倍,遠高于處理器頻率之間的差別。這一方面是由于組件計算過程中使用的數(shù)據(jù)量較大;另一方面是由于ARM精簡指令的運行方式在數(shù)值計算的細節(jié)上相比Intel處理器略有不足,KYLIN2程序可供優(yōu)化的數(shù)值操作較多。盡管如此,KYLIN2程序底層的數(shù)值求解方法的替換對數(shù)值穩(wěn)定性沒有影響,飛騰計算結(jié)點上數(shù)值計算的準(zhǔn)確性與Intel計算環(huán)境沒有明顯差異。

Table 10 Serial running time of two examples

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

實際工程應(yīng)用需要反復(fù)調(diào)用KYLIN2,生成不同工況點下的大量組件截面庫,計算效率成為了應(yīng)用的瓶頸。由飛騰處理器構(gòu)建的集群計算機結(jié)點通常具備多個處理器核心,具備共享式內(nèi)存并行的能力。對KYLIN2的輸運計算模塊編寫相應(yīng)的OpenMP共享式內(nèi)存并行版本KYLIN2-OpenMP,一方面在飛騰處理器為代表的ARM計算環(huán)境中提升KYLIN2程序的計算效率;另一方面也用于論證單個飛騰計算結(jié)點的并行性能,增強國產(chǎn)芯片的實用性。本文使用2種常見于學(xué)術(shù)論文的組件基準(zhǔn)例題(壓水堆組件AFA3G和C5G7基準(zhǔn)例題UO2組件)進行測試,給出對正確性和計算效率的對比結(jié)果。

先對KYLIN2程序不使用粗網(wǎng)加速算法的情況進行統(tǒng)計,根據(jù)3.4節(jié)和3.5節(jié)的討論,編譯優(yōu)化選項選為O2等級,相應(yīng)的計算結(jié)果和串行計算效率統(tǒng)計如表11所示。飛騰計算結(jié)點在求解AFA3G組件問題時耗時較長,與Intel環(huán)境中的耗時相差1個數(shù)量級(10倍)。

Table 11 Results and running time of KYLIN2 without GCMFD表11 無粗網(wǎng)加速的KYLIN2運行結(jié)果和時間統(tǒng)計

粗網(wǎng)加速算法將減少數(shù)值迭代次數(shù),縮短串行運行時間。表12統(tǒng)計相應(yīng)的運行時間,編譯優(yōu)化選項仍然選為O2等級。

Table 12 Results and running time of KYLIN2 with GCMFD表12 粗網(wǎng)加速的KYLIN2運行結(jié)果和時間統(tǒng)計

特征線方法內(nèi)數(shù)值方法的局部改變并不會改變程序內(nèi)數(shù)據(jù)的內(nèi)存布局,處理器之間的性能差異仍然保持在1個數(shù)量級左右?,F(xiàn)階段實際應(yīng)用KYLIN2程序時往往在Intel處理器環(huán)境中使用單個處理器核心來運行例題,表12中數(shù)據(jù)表明飛騰處理器不能直接應(yīng)用于堆芯程序的研發(fā)階段,因其有可能降低程序的運行效率??紤]到KYLIN2程序在特征線非模塊化布置情況下,對組件問題的能群循環(huán)參數(shù)引入OpenMP共享式內(nèi)存并行是論證ARM環(huán)境中使用飛騰處理器多個處理器核心的較好選擇。特征線方法內(nèi)能群并行的OpenMP并行算法偽代碼列舉如下:

setcurrent←0;

setangular_flux←0;

#pragma omp parallel for default(shared) private(current) schedule(guided)

forg=1:GROUPS

forray=1:RAYS

forp=1:POLARS

current←FC(g,ray,p);

#pragma omp parallel reduction(+:sum)

angularflux←sweepFC(g,ray,p,current);

current←FB(g,ray,p);

#pragma omp parallel reduction(+:sum)

mesh_angular_flux←sweepFB(g,ray,p,current);

endfor

endfor

endfor

該算法中函數(shù)FC和FB不存在數(shù)據(jù)爭用的情況,遍歷特征線更新角中子通量密度的操作sweepFC和sweepFB需要使用OpenMP的互斥操作。KYLIN2-OpenMP多線程版本在2種硬件環(huán)境中進行了較多測試,限于篇幅這里僅給出C5G7 UO2組件例題不使用粗網(wǎng)加速算法的統(tǒng)計結(jié)果(AFA3G組件例題有類似結(jié)果)。實驗時考慮使用的最多處理器核心數(shù)量為12個,線程數(shù)取值參數(shù)取為1,2,4,8或12。2種硬件環(huán)境中的計算結(jié)果保持一致,這里重點分析計算所消耗的時間。

如圖3所示,2種硬件環(huán)境下C5G7組件例題的計算效率在O2優(yōu)化等級下均通過多線程并行取得效率的提升(處理器核數(shù)超過8個之后并不能帶來計算效率的改善,這是由于C5G7例題的能群循環(huán)結(jié)構(gòu)只有7個,超過數(shù)量7之后OpenMP并行增益達到上限)。使用單個線程運行時飛騰計算結(jié)點耗時11 123 s,在Intel環(huán)境中耗時1 205 s。使用8個線程時飛騰計算結(jié)點運行時間為1 598 s,Intel環(huán)境下的運行時間為120 s。整體趨勢上飛騰計算結(jié)點的計算效率與在Intel環(huán)境中的計算效率差距在縮小,且使用8個線程后飛騰處理器運行C5G7組件例題的效率與參照對象Intel處理器的單核運行時間接近。當(dāng)集群計算機的商用計算資源緊張時,由于國產(chǎn)計算結(jié)點使用人數(shù)較少,此多線程并行版本的臨時解決方案可達成使用ARM計算環(huán)境臨時替換商用計算環(huán)境來執(zhí)行工程計算任務(wù)的需求(現(xiàn)階段商用處理器計算結(jié)點經(jīng)常使用單線程來運行KYLIN2程序)。

Figure 3 Running time of assembly example after OpenMP programming圖3 引入OpenMP并行后的組件例題運行時間

5 結(jié)束語

在內(nèi)部集群計算機的飛騰計算結(jié)點上進行堆芯程序的移植和測試,探討國產(chǎn)芯片構(gòu)建的計算環(huán)境應(yīng)用于工程計算的可行性,形成的結(jié)論為:

(1)所有的程序均移植成功,由飛騰處理器構(gòu)建的ARM計算環(huán)境具備通用計算的特點,適用于堆芯數(shù)值計算程序的研制和運行。移植的程序在飛騰計算結(jié)點上的串行計算效率均低于在參照對象Intel處理器上的串行計算效率,且不管在何種編譯優(yōu)化等級條件下,計算時間的比值均超過處理器頻率之間的2倍差異,小規(guī)模堆芯例題的差異保持在3~4倍,較大規(guī)模堆芯例題的串行計算效率差異更大。

(2)移植過程的堆芯程序能夠在不同硬件環(huán)境中獲得一致的計算結(jié)果(偏差范圍內(nèi)),確保了數(shù)值計算的穩(wěn)定性。

(3)飛騰計算結(jié)點上的數(shù)值計算運行效率較低,一方面是由于底層函數(shù)庫為了適應(yīng)精簡指令集特性和通用計算的特性,需要執(zhí)行更多的指令來完成某些數(shù)值計算;另一方面也由于飛騰處理器本身與參照對象Intel處理器之間的硬件架構(gòu)差異。Intel商用處理器的復(fù)雜指令集存在多種復(fù)合指令,完成部分計算需要更少的指令周期,但通過對KYLIN2程序進行局部的OpenMP多線程優(yōu)化,可以使得國產(chǎn)飛騰處理器對應(yīng)的ARM計算環(huán)境能夠臨時替換商用處理器的串行運行環(huán)境,成為工程計算的補充資源。

現(xiàn)階段各個樣本程序在集群計算機的飛騰計算結(jié)點上逐步開展移植和運行,以期充分利用這部分計算資源。國產(chǎn)處理器及其生態(tài)環(huán)境持續(xù)發(fā)展拓寬了核反應(yīng)堆工程計算與計算機科學(xué)的融合領(lǐng)域。橫向借鑒日本、美國等經(jīng)驗,核反應(yīng)堆工程計算在后續(xù)發(fā)展過程可以覆蓋更多的計算硬件,提升適用性和交叉驗證,更快和更準(zhǔn)確地為反應(yīng)堆設(shè)計和應(yīng)用進行服務(wù)。本文形成的結(jié)論和記錄的技術(shù)細節(jié)將隨著后續(xù)在國產(chǎn)計算結(jié)點上開展程序研制和移植的工作進行深化和擴展。

致 謝

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

猜你喜歡
計算環(huán)境堆芯結(jié)點
云計算環(huán)境下網(wǎng)絡(luò)安全等級保護的實現(xiàn)途徑
基于八數(shù)碼問題的搜索算法的研究
應(yīng)用CDAG方法進行EPR機組的嚴重事故堆芯損傷研究
Ladyzhenskaya流體力學(xué)方程組的確定模與確定結(jié)點個數(shù)估計
大數(shù)據(jù)云計算環(huán)境下的數(shù)據(jù)安全
基于Hoogenboom基準(zhǔn)模型的SuperMC全堆芯計算能力校驗
云計算環(huán)境中任務(wù)調(diào)度策略
壓水堆堆芯中應(yīng)用可燃毒物的兩個重要實驗
基于SOP規(guī)程的大亞灣堆芯冷卻監(jiān)測系統(tǒng)改造
基于云計算環(huán)境下的分布存儲關(guān)鍵技術(shù)探討
南部县| 随州市| 新泰市| 芦山县| 滨海县| 南郑县| 枞阳县| 五家渠市| 永兴县| 五寨县| 平湖市| 株洲县| 和顺县| 信丰县| 巴东县| 蓬莱市| 高邑县| 伊金霍洛旗| 松滋市| 嵊泗县| 霍山县| 南昌县| 三门县| 拜泉县| 高碑店市| 日喀则市| 盐边县| 吴川市| 武乡县| 灵山县| 牙克石市| 阳东县| 莎车县| 龙州县| 视频| 铁力市| 新津县| 金堂县| 沙洋县| 孟州市| 吴川市|