蘇適 謝芹 陳珍平 謝金森 曾文杰 劉紫靜 趙鵬程 何麗華 于濤
?
基于OpenMC執(zhí)行碼的編譯檢測及臨界基準驗證
蘇適 謝芹 陳珍平 謝金森 曾文杰 劉紫靜 趙鵬程 何麗華 于濤
(南華大學核科學與技術學院 衡陽 421001)
開源蒙特卡羅程序OpenMC (Open Monte Carlo code)只提供源代碼而沒有執(zhí)行碼,在編譯OpenMC的過程中發(fā)現(xiàn)不同版本的輔助程序與之存在兼容性問題。本文通過分析OpenMPI、Mpich及HDF5各版本輔助程序,對0.6.2版本OpenMC源代碼的支持情況進行研究,為正確編譯OpenMC執(zhí)行碼給出了直接參考。為進一步驗證OpenMC執(zhí)行碼計算臨界問題的正確性,選擇國際臨界安全基準評價實驗手冊(The International Criticality Safety Benchmark Evaluation Project, ICSBEP)中的96道代表性例題進行基準校驗,與通用蒙特卡羅程序的計算結果進行對比并以實驗值作為參考。結果表明,OpenMC計算值與實驗值及其他程序計算值吻合較好,驗證了OpenMC臨界計算的可行性和正確性,上述結論將為程序以后的實際應用及完善奠定基礎。
OpenMC,OpenMPI,Mpich,HDF5,國際臨界安全基準評價實驗手冊
蒙特卡羅方法具有方法簡單直觀、受幾何條件限制小、收斂速度與維度無關等優(yōu)點,所以很早就被用于中子輸運、反應堆數(shù)值計算等方面。幾十年來,隨著計算機性能的不斷提高,其在反應堆數(shù)值模擬方面的應用也越來越廣泛[1]。大規(guī)模全堆計算是新一代蒙特卡羅程序的目標,在臨界計算問題中,首要問題是巨額的內(nèi)存占用,其次是大量的時間消耗,而并行計算技術是解決蒙特卡羅的內(nèi)存占用和計算時間消耗重要手段[2]。傳統(tǒng)蒙特卡羅程序計算大規(guī)模全堆模型效率低,而新型蒙特卡羅程序MC21[3]、OpenMC[4]和RMC (Reactor Monte Carlo code)[5]等在超過一千核的計算平臺上計算效率不會降低[6],具有極大并行可擴展性,使蒙特卡羅程序可以充分利用大規(guī)模并行計算資源,大大縮短計算時間。
OpenMC程序是新型開源、針對大規(guī)模并行運算的蒙特卡羅中子輸運模擬軟件,由麻省理工學院的反應堆物理計算小組自2011年開始研發(fā)[7]。OpenMC程序的使用需要多種輔助程序的支持,如使用MPI (Message Passing Interface)進程并行運算、使用HDF5 (Hierarchical Data Format-5)輸出并行化數(shù)據(jù)格式文件和使用PETSc (Portable, Extensible Toolkit for Scientific Computation)來支持CMFD (Coarse Mesh Finite Difference)計算程序,OpenMC需要的輔助程序見圖1。由于OpenMC在網(wǎng)上只有源代碼而沒有執(zhí)行碼,而編譯OpenMC的過程中需要一些輔助程序進行支持,但各支持程序的版本與OpenMC之間存在支持性問題,對于不同版本輔助程序與蒙特卡羅程序存在的支持性問題,國內(nèi)尚無對此的文獻發(fā)表,所以對此進行研究對蒙特卡羅程序的正確編譯具有啟發(fā)意義,并對其他蒙特卡羅程序與不同版本輔助程序的兼容性提供了思考。
圖1 OpenMC的相關輔助程序
為了能夠編譯正常使用的OpenMC,需要將OpenMPI、Mpich、HDF5對OpenMC的支持性進行研究,對這些程序在虛擬機Linux (Ubuntu-15.04)系統(tǒng)下進行編譯,并在OpenMC-0.6.2下自檢,得出了能否成功編譯與自檢通過的結果,找出了自檢錯誤項并對自檢錯誤值和正確值進行了對比,結果對編譯能自檢通過的OpenMC運行環(huán)境提供了直接參考。并選擇國際臨界安全基準評價實驗手冊(The International Criticality Safety Benchmark Evaluation Project, ICSBEP)中的96道代表性例題對OpenMC進行基準校驗,使用的核數(shù)據(jù)庫為ENDF/B-VII.0庫,將OpenMC的計算結果與SuperMC (Super Monte Carlo Simulation Program for Nuclear and Radiation Process)和MCNP (Monte Carlo Neutron Particle transport code)的結果以及實驗結果進行了對比驗證。
目前,最新版本OpenMC可應用于固定源與eff問題的計算;可以描述一階、二階曲面構成的幾何體,可以描述重復柵格并可以對柵元進行旋轉和移動,使輸入卡的書寫更為簡便。
使用XML輸入文件格式[8],包括幾何卡(geometry.xml)、材料卡(materials.xml)、粒子數(shù)卡(settings.xml)、計數(shù)卡(tallies.xml)和制圖卡(plots.xml)等。其中OpenMC使用碰撞估計與徑跡長度估計兩種計數(shù)方式,可以根據(jù)計數(shù)卡對面和體積進行網(wǎng)格計數(shù);同時,OpenMC具備二維與三維的標準圖片輸出模塊,可以根據(jù)制圖卡做出體素圖。OpenMC使用的截面格式為通用的ACE (A Compact ENDF)格式,可以使用MCNP或Serpent[9]中提供的截面數(shù)據(jù)庫。OpenMC自帶了Python腳本[10]用于提取輸出文件中的有效數(shù)據(jù)并進行運用,如statepoint_3d.py、voxel.py等,其輸出的Statepoint文件、Voxel文件等經(jīng)過Python腳本數(shù)據(jù)提出后可進一步使用VisIt和ParaView軟件進行數(shù)據(jù)可視化處理。作為一款開源、開發(fā)中的程序,OpenMC通過GitHub的代碼托管并跟蹤bug,有利于其他使用者進行接口的編寫與擴展開發(fā)。
OpenMC主要針對于大規(guī)模計算機應用而開發(fā),使用約40000行的Fortran 2008代碼編寫,基于蒙特卡羅方法本身的優(yōu)點,OpenMC能有效地還原真實的物理過程;基于其開發(fā)目的,能適應于并行框架與數(shù)據(jù)結構,可以使用OpenMPI/Mpich用于支持MPI并行計算,其中MPI是信息傳遞應用程序接口[11],采用基于信息傳遞的并行編程技術,可以將一個大型任務分解成多個進程,再把這些進程分配給多個節(jié)點進行并行處理,通過計算結果的綜合得到最終結果,OpenMPI和Mpich是MPI的應用實現(xiàn)。同時,OpenMC可以使用HDF5分層數(shù)據(jù)格式輸出,HDF5是HDF系列的最新版本,由美國國家超級計算機中心進行開發(fā),一般用來儲存不同類型的圖形與數(shù)據(jù)信息,用于滿足各個領域需求的高效存儲與科學數(shù)據(jù)的分發(fā)[12]。
OpenMC可以在Linux、Mac OS X或Windows操作系統(tǒng)下編譯和運行,但縱觀全世界的大規(guī)模計算平臺,大多使用Linux系統(tǒng),因此在Linux下編譯OpenMC,并分析輔助程序?qū)penMC的支持性顯得十分有意義,選擇Linux系統(tǒng)對OpenMC進行計算模塊檢測。使用的系統(tǒng)為虛擬機下的Linux系統(tǒng)(Ubuntu-15.04),OpenMC版本為0.6.2。
對OpenMPI/Mpich的自檢包括6種自檢類型:mpi-normal、mpi-debug、mpi-optimize、mpi-omp- normal、mpi-omp-debug、mpi-omp-optimize。每種自檢類型均要自檢OpenMC自帶的85道例題,每道例題均包括geometry.xml、materials.xml、settings.xml基本計算模塊,這三種基本模塊缺一不可。有的例題還包括tallies.xml(計數(shù)模塊)、cmfd.xml(粗網(wǎng)格有限差分法模塊)等。其中normal、debug、optimize為OpenMC的三種編譯方式,normal為未優(yōu)化的編譯方式,debug為在編譯時進行調(diào)試的編譯方式,optimize為在編譯時能高度優(yōu)化的編譯方式,對gfortran和Intel Fortran編譯器使用-O3優(yōu)化方式。對HDF5的自檢使用全環(huán)境檢測,包括33種自檢類型:basic-normal、basic-debug、basic- optimize、omp-normal、omp-debug、omp-optimize、HDF5-normal、HDF5-debug、HDF5-optimize、omp- HDF5-normal、omp-HDF5-debug、omp-HDF5- optimize、mpi-normal、mpi-debug、mpi-optimize、mpi-omp-normal、mpi-omp-debug、mpi-omp- optimize、pHDF5-normal、pHDF5-debug、pHDF5- optimize、pHDF5-omp-normal、pHDF5-omp-debug、pHDF5-omp-optimize、petsc-normal、petsc-debug、petsc-optimize、pHDF5-petsc-normal、pHDF5-petsc- debug、pHDF5-petsc-optimize、omp-pHDF5-petsc- normal、omp-pHDF5-petsc-debug、omp-pHDF5-petsc- optimize,每種自檢類型也均要自檢OpenMC自帶的85道例題。在以下的自檢中針對85道例題及上述各種自檢類型都進行了編譯自檢。
OpenMPI、Mpich、HDF5開發(fā)的版本很多,在本研究中,針對每個程序的代碼均下載了超過20個版本進行檢測,但對于早期的版本未對其進行測試,因考慮其在對現(xiàn)有軟件的適用性上可能存在差異,所以對其不進行更多的測試,具體測試的程序版本見下文。
測試的是其官網(wǎng)上能下載到的最新20個版本,由于早期的版本不太適用于后期開發(fā)的軟件,所以對早前的版本不進行測試。
對不同版本的OpenMPI進行編譯,并在OpenMC下自檢,結果見表1。從表1結果可看出,自檢通過的版本為:1.8.4、1.8.3、1.8.2、1.8.1、1.8.0、1.7.5、1.7.4。發(fā)生自檢錯誤的例題及結果見表2,其中,自檢為Fail的不同版本發(fā)生自檢錯誤的自檢例題均相同,同時不同版本間對應的相同自檢錯誤例題產(chǎn)生的eff錯誤結果也相同,都包含三種發(fā)生自檢錯誤的自檢類型:mpi-omp-normal、mpi-omp- debug、mpi-omp-optimize。每種發(fā)生自檢錯誤的自檢類型均含有自檢錯誤例題:
1) test_void.py
2) test_reflective_cylinder.py
3) test_confidence_intervals.py
表1 不同版本OpenMPI的編譯自檢結果
注:Fail為編譯通過,但自檢出錯;Not為無法成功編譯;Ok為成功編譯,并可以并行,自檢通過
Notes: “Fail” represents it can be compiled but failed in self checking; “Not” means it can not be compiled successfully; “Ok” means can be successfully compiled and executed parallelly, and passed the self checking.
表2 自檢錯誤項及結果
對不同版本的Mpich進行編譯,并在OpenMC下自檢,結果為各版本的Mpich均不能通過自檢,其中Mpich-3.2?Mpich-1.3的16個版本均為編譯通過,但自檢為Fail;Mpich-1.2.1?Mpich-0.9的20個版本均為不能成功編譯。Mpich和OpenMPI自檢為Fail的計算結果相同。
由于MIT對OpenMC的基準測試結果采用的是OpenMPI編譯環(huán)境下的計算結果,只有當OpenMC計算結果與基準結果完全一樣時才能通過自檢。雖然Mpich可以實現(xiàn)并行,但由于Mpich存儲時保存數(shù)位和傳遞過程中保存等問題,可能對計算產(chǎn)生一定的影響,導致計算結果與基準結果存在一定差異,最終體現(xiàn)自檢結果為Fail,但這并不代表其結果是不正確的,而我們更傾向于使用OpenMPI的編譯環(huán)境。
HDF5并行版需要MPI進行編譯,選擇OpenMPI-1.8.4編譯不同版本的HDF5并行版并使用OpenMC全環(huán)境檢測,得到結果見表4。從表4中結果可看出,自檢通過的HDF5版本為:1.10.0、1.8.17、1.8.16、1.8.15、1.8.14、1.8.13、1.8.12,其他版本均無法成功編譯。
表3 使用OpenMPI-1.8.4編譯不同版本HDF5的OpenMC自檢結果
經(jīng)上述分析可知,OpenMPI自檢通過的版本為:1.8.4、1.8.3、1.8.2、1.8.1、1.8.0、1.7.5、1.7.4。Mpich各版本均不能通過自檢。HDF5自檢通過的版本為:1.10.0、1.8.17、1.8.16、1.8.15、1.8.14、1.8.13、1.8.12。使用以上自檢通過的版本的輔助程序能夠編譯計算結果正確的OpenMC執(zhí)行碼,對于OpenMC的MPI并行不建議使用Mpich程序。
使用OpenMC自帶的例題能夠初步驗證編譯成執(zhí)行碼的OpenMC的臨界計算的正確性,為了進一步驗證OpenMC執(zhí)行碼對于臨界安全計算的可行性和正確性,選擇ICSBEP基準題來進行驗證。
ICSBEP是由OECD-NEA (Organisation for Economic Co-operation and Development-Nuclear Energy Agency)組織編撰,目的是為校驗進行具有裂變材料裝置的臨界計算方法和技術,以及確定臨界預警的需求[13]。從該手冊中選取了96道典型例題。例題組包括多種裂變材料、反射材料和能譜。物理形式的裂變材料包括金屬系統(tǒng)(Metal Systems, MET)、化合物(Compound, COMP)、溶液(Solution, SOL)和混合系統(tǒng)(Miscellaneous Systems, MISC)?;鶞暑}涉及各種反射材料,如C、Be、BeO、Al、W、Ni、Fe以及裸堆和溶液堆?;鶞暑}的例題組包括三種主要的裂變同位素:233U、235U、239Pu。此外,根據(jù)燃料中的235U富集度,將235U基準題類分成三類:高富集度鈾(Highly Enriched Uranium, HEU≥60%)、中等富集度鈾(10% 選取的96道例題均有實驗值作為參考,計算的粒子代數(shù)為3000代,非活躍代數(shù)為20,每代10000個粒子。使用OpenMC-0.6.2計算96道基準題,使用與文獻中SuperMC和MCNP相同的ENDF/B-VII.0[14]核數(shù)據(jù)庫,將計算結果與文獻[15]中的結果進行對比,并使用實驗值作為參考。所有基準題的計算結果和eff的實驗值及不確定度見圖2(使用ICSBEP例題的首字母來簡化例題名稱,例如,例題名HEU-MET-FAST-001簡化為hmf1)。結果表明,OpenMC計算值與實驗值及其他程序計算值吻合較好,驗證了OpenMC臨界安全問題計算的可行性和正確性。 本文在Linux系統(tǒng)下對OpenMPI、Mpich及HDF5各版本程序?qū)?.6.2版本OpenMC源代碼的支持情況進行研究,對編譯并能通過自檢的OpenMC執(zhí)行碼給出了直接參考。選擇ICSBEP中的96道代表性例題對OpenMC進行臨界基準校驗,將OpenMC與通用蒙特卡羅程序的計算結果進行了對比驗證并以實驗值作為參考,結果表明OpenMC計算值與實驗值及其他程序計算值吻合較好,驗證了OpenMC臨界計算的可行性和正確性,上述結論將為程序以后的實際應用及完善奠定基礎。 1 汪暉, 宋婧, 孫光耀, 等. 基于鈉冷快堆BN-600的SuperMC基準校驗分析[J]. 原子能科學技術, 2015, 49(增1): 17?21. DOI: 10.7538/yzk.2015.49.S0.0016. WANG Hui, SONG Jing, SUN Guangyao,. Benchmarking of SuperMC based on sodium cooled fast reactor BN-600[J]. Atomic Energy Science and Technology, 2015, 49(Suppl 1): 17?21. DOI: 10.7538/yzk. 2015.49.S0.0016. 2 梁金剛. 反應堆蒙卡程序RMC大規(guī)模計算數(shù)據(jù)并行方法研究[D]. 北京: 清華大學, 2015. LIANG Jingang. Research on data parallel methods for large-scale calculations with reactor Monte Carlo code RMC[D]. Beijing: Tsinghua University, 2015. 3 Sutton T M, Donovan T J, Trumbull T H,. The MC21 Monte Carlo transport code[C]. ANS Mathematics & Computation Division Topical Meeting, 2007. 4 MIT Computational Reactor Physics Group. OpenMC documentation release 0.6.2[EB/OL]. [2015-05-04]. https://github.com/mit-crpg/openmc/tree/v0.6.2/docs. 5 Wang K, Li Z, She D,. RMC: a Monte Carlo code for reactor physics analysis[C]. Joint International Conference on Supercomputing in Nuclear Applications and Monte Carlo (SNA+MC), Paris, France: French Alternative Energies and Atomic Energy Commission, 2013. 6 Romano P K, Forget B. Parallel fission bank algorithms in Monte Carlo criticality calculations[J]. Nuclear Science and Engineering, 2012, 170(2): 125?135. 7 Romano P K, Forget B. The OpenMC Monte Carlo particle transport code[J]. Annals of Nuclear Energy, 2013, 51: 274?281. 8 Extensible Markup Language (XML) 1.0.2 edition[EB/OL]. [2016-10-20].http://www.w3. orgTRREC-xml. 9 Jaakko Lepp?nen. Serpent progress report 2010[R]. VTT-R-01362-11, 2010. 10 肖建, 林海波. Python編程基礎[M]. 北京: 清華大學出版社, 2003.XIAO Jian, LIN Haibo. Based on Python programming[M]. Beijing: Tsinghua University Press, 2003. 11 張治宏. 基于MPI的并行計算研究[D]. 北京: 中國地質(zhì)大學(北京), 2006. ZHANG Zhihong. The study of parallel computing based on MPI[D]. Beijing: China University of Geosciences (Beijing), 2006. 12 The HDF Group. HDF5 file format specification[EB/OL]. [2016-10-6]. http://www.hdfgroup.org/HDF5. 13 宋婧,孫光耀, 陳珍平, 等. 蒙特卡羅有效增殖因子計算方法研究[J]. 核科學與工程, 2015, (2): 241?245.DOI: 10.3969/j.issn.0258-0918.2015.02.008. SONG Jing, SUN Guangyao, CHEN Zhenping,. Study on Monte Carlo-effective calculation method[J]. Nuclear Science and Engineering, 2015, (2): 241?245. DOI: 10.3969/j.issn.0258-0918.2015.02.008. 14 Chadwick M B, Oblo?insky P, Herman M,. ENDF/B-VII.0: next generation evaluated nuclear data library for nuclear science and technology[J]. Nuclear Data Sheets, 2006, 107: 2931?3060. 15 Zhang B, Song J, Sun G,. Criticality validation of SuperMC with ICSBEP[J]. Annals of Nuclear Energy, 2016, 87: 494?499. Compiling validity and critical benchmark verification based on OpenMC execution code SU Shi XIE Qin CHEN Zhenping XIE Jinsen ZENG Wenjie LIU Zijing ZHAO Pengcheng HE Lihua YU Tao (School of Nuclear Science and Technology, University of South China, Hengyang 421001, China) The open source Monte Carlo code (OpenMC) released by Massachusetts Institute of Technology (MIT) only provides source code rather than executable code.This study aims at the compatibility issues for different versions of the auxiliary programs in the compilation of OpenMC.The various versions of OpenMPI, Mpich and HDF5 programs that support OpenMC were compiled and checked, and the complied OpenMC was validated using 96 representative routines recommended in the international criticality safety benchmark evaluation project (ICSBEP). The calculation results were compared with those of the ICSBEP experiments using general MC code.The calculated values by complied OpenMC are in line with the experimental values of the ICSBEP benchmarks, as well as calculations by other programs.This study provides a reference for the correct compilation of the OpenMC with feasibility. It is useful in future applications and improvements of these programs. OpenMC, OpenMPI, Mpich, HDF5, ICSBEP SU Shi, male, born in 1991, graduated from University of South China in 2014, master student, focusing on Monte Carlo particle transport procedures, methods and applications YU Tao, E-mail: yutao29@sina.com 2017-05-18, accepted date: 2017-07-08 TL32 10.11889/j.0253-3219.2017.hjs.40.100501 蘇適,男,1991年出生,2014年畢業(yè)于南華大學,現(xiàn)為碩士研究生,從事蒙特卡羅粒子輸運程序方法及應用研究 于濤,E-mail: yutao29@sina.com 2017-05-18, 2017-07-08 Supported by National Natural Science Foundation of China (No.11575079, No.11605085) 國家自然科學基金(No.11575079、No.11605085)資助4 結語