基于非結構網格的仿真——太湖之光上的巨大挑戰
在過去數十年中非結構網格被廣泛應用于工業仿真領域,例如著名商業CFD軟件Fluent以及開源CFD軟件OpenFOAM都采用了基于非結構網格的有限體積法,而大多數結構分析軟件例如Abaqus、Nastran等都采用了基于非結構網格的有限元法。非結構網格的流行不是沒有原因的。幾乎所有的工程幾何結構都是非常復雜的,結構化網格雖然在精度和收斂性等方面有優勢,但復雜幾何高質量結構化網格生成的難度和效率卻限制了其通用性。相反,非結構網格以其生成快速和適應復雜幾何的特性,成為工業仿真領域的主流。
結構化網格(上)與非結構化網格(下)
由于數據結構的原因,非結構網格相比于結構化網格,其算法計算訪存比更低,同時訪存更加離散。另一方面,隨著超級計算機架構演變,相較浮點性能的大幅提升,內存帶寬日益成為瓶頸,讓非結構網格仿真計算更加受限。架構演變也催生了多樣的編程模型和加速庫。在太湖之光等先進超級計算機上,對非結構網格算法進行優化加速,往往十分復雜且開發量巨大。這四方面的問題,讓非結構網格仿真計算在太湖之光上的性能,成為一個巨大的挑戰。
太湖之光上非結構網格“四大問題”
離散訪存:非結構網格不同于結構化網格,其相關數據在內存中無法以規則的方式存儲,導致訪問具有分散和不連續的特性。換句話說,在仿真計算中,我們需要進行大量的臨近插值積分,但是非結構網格單元的鄰居卻無法像結構網格一樣連續規則地在內存中找到。離散訪存的結果,就是讓連續獲取數據中有大量無效數據,或者只能跳躍地獲取數據片段,從而損失有效的內存帶寬。
低計算密度:非結構網格拓撲復雜,同時仿真對數值穩定性要求較高。因此,在非結構網格上進行仿真計算,一般采用緊致的數值格式,其階數相對較低。簡單來理解,就是在進行插值積分時,用盡量少的網格單元鄰居,鄰居的鄰居以及更遠的臨近關系基本不考慮。這樣一來,在網格單元數據上執行的計算操作就少了。因此,非結構網格上的算法往往具有較低的計算訪存比。以四面體網格有限體積離散的稀疏矩陣向量乘為例,其訪存與計算之比僅為1/12浮點操作/字節。
近年芯片浮點性能和內存帶寬增長曲線[1]
內存帶寬瓶頸:限于單個核心性能提升的瓶頸,高性能計算機處理器架構由多核全面轉向異構眾核。例如,“神威·太湖之光”超級計算機就是采用純國產異構眾核芯片研制的千萬核心計算系統。但是近年來,高性能處理器的浮點性能保持近似對數增長的同時,內存帶寬卻呈現出極為緩慢的增長態勢。以太湖之光sw26010芯片為例,目前的浮點性能-內存帶寬比,已高達20浮點操作/字節。這意味著1/12浮點操作/字節計算密度的稀疏矩陣向量乘,在sw26010芯片內存帶寬滿載時,僅能發揮出0.4%的理論浮點性能。
算法與硬件間失衡的性能天平
巨量開發:太湖之光絕大部分性能來自異構眾核芯片sw26010上的8x8從核陣列,因此利用好從核是發揮太湖之光性能的核心。然而,以數十行代碼的稀疏矩陣向量乘為例,直接利用在太湖之光上的基礎加速庫進行眾核加速開發,如欲達到較為理想的性能,一般需要上千行代碼和大量調試。對于復雜的工業仿真軟件來說,這樣的開發量是無法接受的。以開源CFD軟件OpenFOAM為例,其代碼量高達數百萬行,熱點核心遍布。如果全面采用手動加速開發,工作量無疑等同于再開發一個OpenFOAM。
UNAT全稱為“UNstructured Acceleration Toolkit”,是在太湖之光超級計算機進行非結構網格仿真計算加速開發的工具套件。UNAT具有友好接口,方便開發者快速在太湖之光上進行加速開發。UNAT底層實現了自動的數據結構優化,自動的并行遍歷算法,用戶只需關心具體操作實現,并免于大量調試。這些都大大緩解了,太湖之光上非結構網格計算加速的巨量開發問題和離散訪存問題。UNAT更是通過一套耦合算子機制,將熱點進行分解融合,采用循環時空二維分解,跨循環數據復用等策略,有效緩解了非結構網格計算密度低的問題和硬件上的內存帶寬瓶頸。其中原理較為復雜,具體可以參考文末論文[2](見文章底部“閱讀原文”)。
UNAT原理圖
下面通過幾個典型應用,看一下UNAT的應用效果。
稀疏矩陣向量乘:用COO格式稀疏矩陣向量乘進行測試。隨著矩陣元素維度變化,UNAT最高加速比和單核組Flops分別達到近27 倍和3.5 GFlops(0.46%理論性能)。與手工優化的代碼相比,UNAT API實現了其大約70%的性能。考慮到兼容性和通用性帶來的額外開銷,其效果是相當可觀的。
COO稀疏矩陣向量乘加速比及浮點性能
某CFD求解器加速:一個開發者僅用1周時間,采用UNAT對其中主要6個熱點核心進行了加速開發。熱點核心眾核加速比平均在19倍左右,整體加速也達到了10倍。
某CFD求解器優化加速
OpenFOAM風資源評估應用:利用UNAT加速工具,我們對OpenFOAM某風資源評估應用大部分熱點進行了加速,眾核加速比在8-15倍之間。由于UNAT卓越貢獻,最終該應用在太湖之光上取得了整體4倍加速。
OpenFOAM風資源評估應用優化加速
燃燒仿真應用:利用UNAT加速工具,單個開發者 2周內完成了15萬行某燃燒仿真程序優化,使得該程序最終在太湖之光上取得了整體5.4倍加速。由于性能提升,該軟件可使用10億級網格,在合理的時間內,進行航空發動機全環燃燒室高保真數值模擬。
燃燒仿真應用優化加速
參考文獻:
[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. , et al. "UNAT: UNstructured Acceleration Toolkit on SW26010 many-core processor." Engineering Computations: Int J for Computer-Aided Engineering (2020).
十四五期間,工業數字化將是工業轉型升級的主路線。“神工坊”秉持“算力賦能、協同創新”的理念,爭做“先進算力到仿真算能的轉換器”、“離散機理和垂直仿真場景的連接器”,助力我國工程仿真技術實現跨越發展,支撐重大裝備研制創新和工業設計研發數字化轉型。
推薦閱讀
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















