技術分享︱從 8192 到 10000:OpenRadioss 在國產超算上的一次關鍵突破

01 背景
OpenRadioss是由Altair公司開發、于2022年開源的一個多域多物理有限元求解器。該求解器被廣泛應用于汽車碰撞、沖擊爆炸和航空航天等領域的動態模擬。該模擬軟件支持復雜材料模型、接觸算法、復雜幾何關系和大規模并行計算。OpenRadioss核心代碼采用Fortran作為主要編程語言,部分功能使用C/C++實現,代碼架構整體模塊化,包含前處理模塊(starter)和求解器模塊(engine),最大能夠處理千萬網格數的大規模模型和輸出大型可視化文件。
在原始代碼中,數組定義、內存分配、并行通信上有“硬編碼限制”,使得并行上限固定為8192進程。當超過該進程數時,軟件并不會發生報錯,而是自動回退為8192進程。在我們最近的一次對于OpenRadioss的優化中,成功地突破了這個并行數上限,將最大并行數成功突破到了10000+進程,并成功地在國產太湖之光超算平臺進行了多次測試。為后期OpenRadioss處理大規模模擬問題提供了重要支持。
數值模擬流程圖
02 技術挑戰
突破這一限制的主要難點體現在以下方面:
1. 代碼層面
OpenRadioss在開發之時,內部的一些數組和進程數有著固定的限制,文件讀寫接口、數值方法、接觸算法、循環與判斷語句、優化算法等均與進程數強綁定。由于這些限制,需要完整找出限制并行擴展的代碼并進行修改,這一工作難度很大。
2. 編譯層面
在release模式下,編譯器會對代碼進行嚴格地優化和檢查,尤其是在一萬進程下某些數組和內存訪問方式會觸發警告,需要針對性進行優化。
3. 系統層面
在超算系統進行萬核測試時,往往會觸發ulimit限制和節點內存限制,導致作業直接被殺死。同時也可能會引發MPI庫的通信問題,因此需要對作業系統參數和作業命令進行針對性調整。
OpenRadioss模塊架構圖
03 成果展示
在完成代碼擴展后,我們將 OpenRadioss 移植至 太湖之光 超算,順利通過編譯,并完成了多個典型算例(如汽車碰撞、流固耦合等)的 一萬進程并行模擬。
所有算例均成功運行,輸出結果穩定,驗證了 OpenRadioss 在萬核規模下的可擴展性與可靠性。
汽車碰撞算例
汽車碰撞算例
汽車碰撞算例
04 項目意義
8192進程限制了OpenRadioss向更大規模仿真向前的腳步。我們通過調整代碼結構、優化編譯選項,讓 OpenRadioss 真正跨過了這個門檻,并且驗證了它在萬核級別的穩定性和可擴展性。
在平臺上,這是一次對國產超算的深度適配。
在太湖之光x86架構超算上順利跑通一萬進程,證明了國產超算平臺和開源軟件可以高效協同。這為未來更多工程級應用遷移到國產平臺提供了實踐依據。
應用上,這是邁向更大規模仿真的關鍵一步。
汽車碰撞、爆炸沖擊等復雜場景往往需要更精細的網格和更高的精度。只有并行規模上得去,才能真正支撐起這些復雜模擬。所以8192 是過去的極限,10000 是新的起點。
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















