基于Python的大規(guī)模高性能LBM多相流模擬
發(fā)布時間:2021-06-24 19:06
Python由于具有豐富的第三方庫、開發(fā)高效等優(yōu)點,已成為數(shù)據(jù)科學(xué)、智能科學(xué)等應(yīng)用領(lǐng)域最流行的編程語言之一。Python強調(diào)了對科學(xué)與工程計算的支持,目前已積累了豐富的科學(xué)與工程計算庫和工具。例如,SciPy和NumPy等數(shù)學(xué)庫提供了高效的多維數(shù)組操作及豐富的數(shù)值計算功能。以往,Python主要作為腳本語言,起到連接數(shù)值模擬前處理、求解器和后處理的"膠水"功能,以提升數(shù)值模擬的自動化處理水平。近年來,國外已有學(xué)者嘗試采用Python代碼實現(xiàn)求解計算功能,并在高性能計算機上開展了超大規(guī)模并行計算研究,取得了不錯的效果。由于自身特點,高效大規(guī)模Python數(shù)值模擬的實現(xiàn)和性能優(yōu)化與傳統(tǒng)基于C/C++和Fortran的數(shù)值模擬等具有很大的不同。文中實現(xiàn)了國際上首個完全基于Python的大規(guī)模并行三維格子玻爾茲曼多相流模擬代碼PyLBMFlow,探索了Python大規(guī)模高性能計算和性能優(yōu)化方法。首先,利用NumPy多維數(shù)組和通用函數(shù)設(shè)計實現(xiàn)了LBM流場數(shù)據(jù)結(jié)構(gòu)和典型計算內(nèi)核,通過一系列性能優(yōu)化并對LBM邊界處理算法進行重構(gòu),大幅提升了Python的計算效率,相對于基準實現(xiàn),優(yōu)化后的串行性能提升...
【文章來源】:計算機科學(xué). 2020,47(01)北大核心CSCD
【文章頁數(shù)】:7 頁
【部分圖文】:
相鄰網(wǎng)格塊的MPI通信數(shù)據(jù)交換(電子版為彩色)
表1 各版本的描述Table 1 Descriptions of various versions 版本號 版本說明 v0 采用Python list實現(xiàn)多維數(shù)組 v1 采用narry代替list v2 使用ufunc進行數(shù)組運算 v3 優(yōu)化數(shù)據(jù)結(jié)構(gòu)(Aos到SoA) v4 采用item獲取數(shù)組元素 v5 使用where函數(shù)來進行邊界判定 v6 邊界反彈算法重構(gòu) v7 改用Cython編寫計算內(nèi)核 v8 numba即時編譯圖6給出了基于Cython版本(v5)實現(xiàn)的OpenMP線程并行的加速比。可以看出,OpenMP并行達到24個線程時仍然具有良好的并行可擴展性,獲得了最高達10倍左右的OpenMP并行加速比。
圖6給出了基于Cython版本(v5)實現(xiàn)的OpenMP線程并行的加速比?梢钥闯,OpenMP并行達到24個線程時仍然具有良好的并行可擴展性,獲得了最高達10倍左右的OpenMP并行加速比。圖7給出了在天河二號超級計算機上PyLBMFlow大規(guī)模MPI+OpenMP并行的弱并行可擴展性測試結(jié)果。實驗由64個計算節(jié)點擴展到1 024個計算節(jié)點,以64個計算節(jié)點作為性能基準,每個節(jié)點固定問題規(guī)模為256*256*256,總的最大問題規(guī)模約為170億網(wǎng)格單元?梢钥闯,擴展到1 024個節(jié)點時,并行可擴展性仍然保持在90%以上,充分證明了本文方法在并行實現(xiàn)和優(yōu)化方面的有效性。
本文編號:3247667
【文章來源】:計算機科學(xué). 2020,47(01)北大核心CSCD
【文章頁數(shù)】:7 頁
【部分圖文】:
相鄰網(wǎng)格塊的MPI通信數(shù)據(jù)交換(電子版為彩色)
表1 各版本的描述Table 1 Descriptions of various versions 版本號 版本說明 v0 采用Python list實現(xiàn)多維數(shù)組 v1 采用narry代替list v2 使用ufunc進行數(shù)組運算 v3 優(yōu)化數(shù)據(jù)結(jié)構(gòu)(Aos到SoA) v4 采用item獲取數(shù)組元素 v5 使用where函數(shù)來進行邊界判定 v6 邊界反彈算法重構(gòu) v7 改用Cython編寫計算內(nèi)核 v8 numba即時編譯圖6給出了基于Cython版本(v5)實現(xiàn)的OpenMP線程并行的加速比。可以看出,OpenMP并行達到24個線程時仍然具有良好的并行可擴展性,獲得了最高達10倍左右的OpenMP并行加速比。
圖6給出了基于Cython版本(v5)實現(xiàn)的OpenMP線程并行的加速比?梢钥闯,OpenMP并行達到24個線程時仍然具有良好的并行可擴展性,獲得了最高達10倍左右的OpenMP并行加速比。圖7給出了在天河二號超級計算機上PyLBMFlow大規(guī)模MPI+OpenMP并行的弱并行可擴展性測試結(jié)果。實驗由64個計算節(jié)點擴展到1 024個計算節(jié)點,以64個計算節(jié)點作為性能基準,每個節(jié)點固定問題規(guī)模為256*256*256,總的最大問題規(guī)模約為170億網(wǎng)格單元?梢钥闯,擴展到1 024個節(jié)點時,并行可擴展性仍然保持在90%以上,充分證明了本文方法在并行實現(xiàn)和優(yōu)化方面的有效性。
本文編號:3247667
本文鏈接:http://sikaile.net/kejilunwen/lxlw/3247667.html
最近更新
教材專著