神威OpenFOAM——最流行的開源CFD軟件與神威·太湖之光的珠聯(lián)璧合

神威OpenFOAM——最流行的開源CFD軟件與神威·太湖之光的珠聯(lián)璧合的圖1    
   背   景         

OpenFOAM(Open-source Field Operation And Manipulation,開源的場(chǎng)運(yùn)算與操作)是一款基于C++編寫的面向?qū)ο驝FD類庫,被廣泛用于流體、傳熱、分子動(dòng)力學(xué)、電磁流體甚至金融等領(lǐng)域問題的模擬,擁有廣泛的用戶基礎(chǔ)。作為一款開源軟件,OpenFOAM的誕生可追溯至二十世紀(jì)八十年代末期,它支持模版化編程、多面體網(wǎng)格與大規(guī)模并行計(jì)算,用戶可以非常方便地進(jìn)行二次開發(fā)。悠久的歷史、活躍的用戶社群、完善的文檔、強(qiáng)大的性能與可擴(kuò)展性,讓OpenFOAM成為了最受歡迎的開源CFD軟件

神威OpenFOAM——最流行的開源CFD軟件與神威·太湖之光的珠聯(lián)璧合的圖2

OpenFOAM與CFD(素材來源于網(wǎng)絡(luò)

神威·太湖之光是世界首臺(tái)峰值性能超過每秒十億億次量級(jí)的超級(jí)計(jì)算機(jī),作為“國之重器”,它為超大規(guī)模的科學(xué)與工程計(jì)算、更高保真度的數(shù)值模擬提供了強(qiáng)有力的硬件支撐。swOpenFOAM(基于神威平臺(tái)的OpenFOAM)正是與此強(qiáng)大硬件配套的CFD軟件。它不是簡(jiǎn)單的代碼移植,而是根據(jù)神威超算的架構(gòu)與特性,特別為OpenFOAM量身定制了一整套的優(yōu)化方案。神威與OpenFOAM二者強(qiáng)強(qiáng)聯(lián)合,真正實(shí)現(xiàn)了1+1>2的效果。

神威OpenFOAM——最流行的開源CFD軟件與神威·太湖之光的珠聯(lián)璧合的圖3  

神威OpenFOAM——最流行的開源CFD軟件與神威·太湖之光的珠聯(lián)璧合的圖4


 swOpenFOAM優(yōu)化之道                


    OpenFOAM求解CFD問題主要包括“預(yù)處理-求解-后處理”三個(gè)步驟,每個(gè)步驟的關(guān)鍵流程與面臨的問題如下圖所示。為了讓swOpenFOAM充分發(fā)揮神威的性能優(yōu)勢(shì),需要根據(jù)神威處理器的特點(diǎn)——異構(gòu)眾核,詳細(xì)定制代碼移植與優(yōu)化方案。同時(shí),OpenFOAM求解過程中的三個(gè)關(guān)鍵環(huán)節(jié):并行剖分、方程離散與方程求解,其對(duì)應(yīng)的負(fù)載均衡數(shù)據(jù)訪存代數(shù)求解算法選擇等問題又與處理器架構(gòu)息息相關(guān)。綜上所述,這“三位一體”的問題共同構(gòu)成了swOpenFOAM所面臨的最大挑戰(zhàn)。

神威OpenFOAM——最流行的開源CFD軟件與神威·太湖之光的珠聯(lián)璧合的圖5

OpenFOAM在神威上的求解流程與關(guān)鍵性能瓶頸




 
01   
    基于處理器架構(gòu)的優(yōu)化     

神威·太湖之光使用中國自主研制的“申威 26010”處理器,其特點(diǎn)是片上融合的異構(gòu)眾核架構(gòu)。每塊處理器包含四個(gè)“核組”,一個(gè)核組中集成了一個(gè)主核與64個(gè)從核。一個(gè)“申威 26010”處理器總共集成了260個(gè)運(yùn)算核心,因此利用好從核是發(fā)揮神威性能的關(guān)鍵。

神威OpenFOAM——最流行的開源CFD軟件與神威·太湖之光的珠聯(lián)璧合的圖6      

“申威 26010”異構(gòu)眾核處理器架構(gòu)圖

與處理器架構(gòu)相關(guān)的問題是數(shù)據(jù)訪存。高性能處理器內(nèi)存帶寬的增長遠(yuǎn)滯后于其浮點(diǎn)性能的提升[1](如下圖所示),這一性能瓶頸對(duì)于“申威 26010”處理器顯得更為突出。同時(shí),由于一些圖計(jì)算或稀疏矩陣特殊的數(shù)據(jù)結(jié)構(gòu),致使其迭代運(yùn)算中存在內(nèi)存訪問不連續(xù)的問題。在神威·太湖之光上運(yùn)行時(shí),造成從核緩存空間的浪費(fèi)和內(nèi)存訪問次數(shù)的增多,從而導(dǎo)致程序性能嚴(yán)重下降。

神威OpenFOAM——最流行的開源CFD軟件與神威·太湖之光的珠聯(lián)璧合的圖7

近年芯片浮點(diǎn)性能與內(nèi)存帶寬增長曲線

神威OpenFOAM——最流行的開源CFD軟件與神威·太湖之光的珠聯(lián)璧合的圖8

解決上述問題,首先需要從算法、算子和基礎(chǔ)運(yùn)算符等各個(gè)層面開展性能優(yōu)化工作,其中的關(guān)鍵是根據(jù)眾核并行的特點(diǎn)定制數(shù)據(jù)訪存策略。其次直接利用神威上的基礎(chǔ)加速庫進(jìn)行眾核加速將帶來巨大的開發(fā)量,針對(duì)計(jì)算模式較為類似的向量計(jì)算函數(shù),神工坊團(tuán)隊(duì)通過開發(fā)統(tǒng)一的從核加速接口(如下圖所示)有效地解決了該問題。該統(tǒng)一接口節(jié)省了數(shù)萬行代碼的開發(fā)量,且極大提升了優(yōu)化代碼的可維護(hù)性。最終取得了可觀的加速效果,向量操作至少加速6倍,部分向量操作函數(shù)達(dá)到19倍。

神威OpenFOAM——最流行的開源CFD軟件與神威·太湖之光的珠聯(lián)璧合的圖9

向量操作統(tǒng)一加速接口

與此同時(shí),針對(duì)運(yùn)算中耗費(fèi)時(shí)間長、資源需求大的通量計(jì)算稀疏矩陣計(jì)算熱點(diǎn),專門定制核優(yōu)化加速方案。這些熱點(diǎn)的優(yōu)化涉及訪存不連續(xù)的問題,神工坊團(tuán)隊(duì)根據(jù)“申威 26010”處理器的特點(diǎn),使用行分段(Row-subsections, RSS)策略,來提升眾核并行下的數(shù)據(jù)訪存效率。RSS策略的核心思想是通過對(duì)矩陣非零元素建立一層索引來標(biāo)記,記錄若干行連續(xù)存儲(chǔ)的非零元素對(duì)應(yīng)列上元素具有局部聚集性的索引段起止地址[2]。按照列上的連續(xù)索引段起始地址進(jìn)行訪存,可以大大降低離散訪存帶來的內(nèi)存帶寬浪費(fèi)。

神威OpenFOAM——最流行的開源CFD軟件與神威·太湖之光的珠聯(lián)璧合的圖10

RSS策略中的兩級(jí)分解

神威OpenFOAM——最流行的開源CFD軟件與神威·太湖之光的珠聯(lián)璧合的圖11        


最終加速效果如下圖所示,某SIMPLE層流算例使用從核加速,各常用算子與函數(shù)操作實(shí)現(xiàn)了最低4倍,最高近16倍的性能提升。

神威OpenFOAM——最流行的開源CFD軟件與神威·太湖之光的珠聯(lián)璧合的圖12

不同網(wǎng)格下計(jì)算熱點(diǎn)的眾核加速比

神威OpenFOAM——最流行的開源CFD軟件與神威·太湖之光的珠聯(lián)璧合的圖13  

 
02   
        負(fù)載均衡優(yōu)化         

OpenFOAM使用scotch對(duì)計(jì)算域進(jìn)行網(wǎng)格剖分,但是對(duì)于同一算例,不同的網(wǎng)格剖分方法對(duì)最終性能的影響很大。例如下圖為某算例的各進(jìn)程通信操作占比統(tǒng)計(jì)圖,紅色為等待操作,灰色為接受操作,綠色為發(fā)送操作。該算例采用scotch默認(rèn)參數(shù)進(jìn)行網(wǎng)格分割,可以看到出現(xiàn)了多個(gè)進(jìn)程等待一個(gè)進(jìn)程的情況,性能受到極大影響。雖然表面上各個(gè)進(jìn)程的計(jì)算負(fù)載是均勻的,但通信負(fù)載的不均衡導(dǎo)致部分進(jìn)程空閑等待大量時(shí)間,實(shí)際上負(fù)載極不均衡。因此需要對(duì)網(wǎng)格剖分進(jìn)行精細(xì)參數(shù)化控制。

神威OpenFOAM——最流行的開源CFD軟件與神威·太湖之光的珠聯(lián)璧合的圖14            
         
使用scotch默認(rèn)參數(shù)導(dǎo)致通信負(fù)載不均衡          

神威OpenFOAM——最流行的開源CFD軟件與神威·太湖之光的珠聯(lián)璧合的圖15

神工坊團(tuán)隊(duì)根據(jù)算例的特點(diǎn),對(duì)scotch網(wǎng)格剖分參數(shù)進(jìn)行細(xì)致調(diào)整,實(shí)現(xiàn)了較好的通信負(fù)載均衡,極大提升程序性能。如下圖所示,使上述算例通信等待時(shí)間大大縮短至原來的十分之一。


       

       
神威OpenFOAM——最流行的開源CFD軟件與神威·太湖之光的珠聯(lián)璧合的圖16        

優(yōu)化scotch參數(shù)實(shí)現(xiàn)負(fù)載均衡



 
03  
      代數(shù)求解算法優(yōu)化       

GAMG(Generalised geometric/algebraic multi-grid, 代數(shù)幾何多重網(wǎng)格求解器)是OpenFOAM中常用的線性方程組求解方法,其關(guān)鍵步驟光順(Smooth)耗時(shí)比例最大。OpenFOAM使用Gauss-Seidel迭代作為光順過程中的算法(Smoother),如下圖所示,這種算法強(qiáng)烈依賴于迭代產(chǎn)生的新值,不易在神威從核上開展并行計(jì)算,限制了系統(tǒng)性能的發(fā)揮,因此需要改用更易并行的算法。

神威OpenFOAM——最流行的開源CFD軟件與神威·太湖之光的珠聯(lián)璧合的圖17

Gauss-Seidel迭代不易于并行計(jì)算

神威OpenFOAM——最流行的開源CFD軟件與神威·太湖之光的珠聯(lián)璧合的圖18

神工坊團(tuán)隊(duì)使用Chebyshev迭代法代替了GAMG中原有的Gauss-Seidel迭代。與原Smoother 相比,Chebyshev迭代法的特點(diǎn)是無空間依賴,沒有全局同步點(diǎn),易并行收斂速度快[3]。如下圖所示,通過使用Chebyshev迭代,某算例的求解時(shí)間縮短了70%。


 
神威OpenFOAM——最流行的開源CFD軟件與神威·太湖之光的珠聯(lián)璧合的圖19    

Chebyshev偽代碼及其與Gauss-Seidel的性能對(duì)比


 



 

神威OpenFOAM——最流行的開源CFD軟件與神威·太湖之光的珠聯(lián)璧合的圖20


            s wOpenFOAM應(yīng)用案例        



   

   

   

   

   
神威OpenFOAM——最流行的開源CFD軟件與神威·太湖之光的珠聯(lián)璧合的圖21    

   

   

   

   

   

   

計(jì)算域網(wǎng)格與流場(chǎng)分布示意圖


   

如上圖所示為某風(fēng)資源預(yù)測(cè)應(yīng)用,對(duì)大小為30 km × 30 km × 7.5 km區(qū)域內(nèi)的風(fēng)場(chǎng)進(jìn)行模擬。該算例在神威·太湖之光上使用256個(gè)核組,5000萬非結(jié)構(gòu)網(wǎng)格進(jìn)行,具體算法與求解器參數(shù)如下表所示。

神威OpenFOAM——最流行的開源CFD軟件與神威·太湖之光的珠聯(lián)璧合的圖22

算例相關(guān)參數(shù)

該算例的性能優(yōu)化過程中的效果統(tǒng)計(jì)如下圖所示。通過一系列的加速措施,包含手動(dòng)緩存、網(wǎng)格剖分優(yōu)化,代數(shù)求解器優(yōu)化,最終使算例的綜合運(yùn)行效率提升了4.1倍,同時(shí)神威上每核組的運(yùn)行速率也達(dá)到了同期主流Intel x86處理器的1.18倍

神威OpenFOAM——最流行的開源CFD軟件與神威·太湖之光的珠聯(lián)璧合的圖23

應(yīng)用一系列加速方法后的算例運(yùn)行時(shí)間與加速比

swOpenFOAM是神威·太湖之光上CFD模擬的重要組件,在此基礎(chǔ)上部署的某風(fēng)電場(chǎng)仿真平臺(tái),已完成包括中國、法國、土耳其的全球部分地區(qū)中尺度數(shù)據(jù)模擬,并產(chǎn)品化地為風(fēng)資源工程師完成了超過2000個(gè)風(fēng)資源項(xiàng)目的設(shè)計(jì)和評(píng)估。swOpenFOAM讓最受歡迎的開源CFD軟件在神威·太湖之光上煥發(fā)新的活力,成為高性能仿真計(jì)算的重要助力。

神威OpenFOAM——最流行的開源CFD軟件與神威·太湖之光的珠聯(lián)璧合的圖24

基于swOpenFOAM的某智慧風(fēng)場(chǎng)平臺(tái)

   

   

     
神威OpenFOAM——最流行的開源CFD軟件與神威·太湖之光的珠聯(lián)璧合的圖25      
 參 考 文 獻(xiàn)        

[1] Vincent, P., Witherden, F., Vermeire, B., Park, J. S., & Iyer, A. (2016). Towards Green Aviation with Python at Petascale. SC16: International Conference for High Performance Computing, Networking, Storage and Analysis. doi:10.1109/sc.2016.1

[2] Liu, H., Ren, H., Gu, H., Gao, F. and Yang, G. (2020), "UNAT: UNstructured Acceleration Toolkit on SW26010 many-core processor", Engineering Computations, Vol. 37 No. 9, pp. 3187-3208. https://doi.org/10.1108/EC-09-2019-0401.

[3] Martin H. Gutknecht, Stefan R?llin, The Chebyshev iteration revisited, Parallel Computing, Volume 28, Issue 2, 2002, Pages 263-283, ISSN 0167-8191, https://doi.org/10.1016/S0167-8191(01)00139-9.


十四五期間,工業(yè)數(shù)字化將是工業(yè)轉(zhuǎn)型升級(jí)的主路線?!吧窆し弧北帧八懔x能、協(xié)同創(chuàng)新”的理念,爭(zhēng)做“先進(jìn)算力到仿真算能的轉(zhuǎn)換器”、“離散機(jī)理和垂直仿真場(chǎng)景的連接器”,助力我國工程仿真技術(shù)實(shí)現(xiàn)跨越發(fā)展,支撐重大裝備研制創(chuàng)新和工業(yè)設(shè)計(jì)研發(fā)數(shù)字化轉(zhuǎn)型。

我的咨詢引導(dǎo)圖.png


登錄后免費(fèi)查看全文
立即登錄
App下載
技術(shù)鄰APP
工程師必備
  • 項(xiàng)目客服
  • 培訓(xùn)客服
  • 平臺(tái)客服

TOP

1