案例分享|仿真軟件并行架構(gòu)升級(jí)——基于編譯優(yōu)化的風(fēng)雷軟件性能突破

動(dòng)圖


軟件介紹
風(fēng)雷軟件(PHengLEI,Platform for Hybrid ENGineering simulation of flows)是中國(guó)空氣動(dòng)力研究與發(fā)展中心(CARDC)研發(fā)的面向流體工程的混合CFD平臺(tái)。平臺(tái)以面向?qū)ο蟮脑O(shè)計(jì)理念,采用C++語(yǔ)言編程。2020年12月,風(fēng)雷軟件正式面向全國(guó)開源,與其他開源CFD軟件相比,風(fēng)雷軟件具有擴(kuò)展能力強(qiáng)、開發(fā)難度低、計(jì)算效率高等特點(diǎn),同時(shí)適用于前沿研究和大規(guī)模常規(guī)工程應(yīng)用。[1]

案例分享|性能提升突破25%!揭秘國(guó)產(chǎn)CFD——風(fēng)雷軟件并行架構(gòu)升級(jí)的圖2

一、背景概述:突破自主可控的CFD性能瓶頸

  風(fēng)雷軟件(PHengLEI)作為我國(guó)自主研發(fā)的通用CFD平臺(tái),具備結(jié)構(gòu)/非結(jié)構(gòu)/混合網(wǎng)格的全域求解能力,其核心數(shù)據(jù)結(jié)構(gòu)PHArray通過C++模擬Fortran多維數(shù)組特性,兼顧工程代碼的兼容性。然而,受限于C++默認(rèn)不實(shí)現(xiàn)向量化及索引冗余計(jì)算,PHArray的實(shí)際運(yùn)算效率顯著低于Fortran原生數(shù)組,串行性能測(cè)試中GFlop峰值比例不足問題尤為突出。為打破這一技術(shù)瓶頸,「神工坊」技術(shù)團(tuán)隊(duì)提出以編譯器深度優(yōu)化為核心的綜合性能提升方案,在保持用戶接口零改動(dòng)的前提下重構(gòu)底層數(shù)據(jù)訪問邏輯。


Tip :“用戶接口零改動(dòng)”
指在系統(tǒng)升級(jí)或架構(gòu)調(diào)整時(shí),保持用戶直接接觸的前端界面(UI/UX)和交互邏輯完全不變,用戶無(wú)需重新學(xué)習(xí)或適應(yīng)新界面,同時(shí)后臺(tái)技術(shù)棧、服務(wù)邏輯或數(shù)據(jù)架構(gòu)可能已發(fā)生重大變化。這種策略的核心是通過解耦前后端依賴,確保用戶體驗(yàn)的連續(xù)性和系統(tǒng)升級(jí)的透明性。[2]對(duì)于本項(xiàng)目指 PHarray容器的接口不變。

二、三大核心難題攻克:平衡兼容性、效率與跨平臺(tái)需求

  那么如何在不改動(dòng)接口的情況下,讓軟件跑得更快且適配所有平臺(tái)?「神工坊」技術(shù)團(tuán)隊(duì)迅速拆解出了三大核心需求:

  1. 接口穩(wěn)定性:PHArray作為風(fēng)雷軟件的核心數(shù)據(jù)容器,需確保優(yōu)化不改變現(xiàn)有數(shù)千行工程代碼的調(diào)用方式;性能瓶頸突破:C++隱式索引計(jì)算、內(nèi)存訪問模式不佳導(dǎo)致向量化率低下,需在不侵入業(yè)務(wù)邏輯的前提下重構(gòu)底層實(shí)現(xiàn);跨平臺(tái)適配:方案需兼容Linux/Windows系統(tǒng)及GNU/Intel編譯器,確保優(yōu)化效果普適性。

三、技術(shù)方案:編譯器賦能的多級(jí)優(yōu)化體系

  針對(duì)上述需求,我們提出采用“循環(huán)優(yōu)化+鏈接優(yōu)化”雙引擎驅(qū)動(dòng),通過編譯器技術(shù)釋放硬件算力。

1. 循環(huán)級(jí)緩存性能榨取

  • 向量化加速:重構(gòu)循環(huán)結(jié)構(gòu),利用Intel編譯器自動(dòng)向量化技術(shù)將標(biāo)量運(yùn)算轉(zhuǎn)化為SIMD指令(如AVX512),單指令處理多數(shù)據(jù);分塊與融合:通過循環(huán)分塊(Tiling)提升緩存命中率,融合獨(dú)立循環(huán)減少分支跳轉(zhuǎn)開銷;數(shù)據(jù)預(yù)取:優(yōu)化內(nèi)存訪問模式,引導(dǎo)編譯器自動(dòng)插入預(yù)取指令,減少CPU等待延遲。

2. 鏈接時(shí)全局優(yōu)化

  • LTO(鏈接時(shí)優(yōu)化):借助LLVM工具鏈對(duì)全程序代碼進(jìn)行跨模塊分析,內(nèi)聯(lián)關(guān)鍵函數(shù)、消除冗余計(jì)算;IPO(過程間優(yōu)化):跨函數(shù)邊界優(yōu)化寄存器分配與指令調(diào)度,提升指令級(jí)并行度。

3. 零侵入式代碼重構(gòu)

  • 多維數(shù)組底層訪問優(yōu)化:用多級(jí)指針替代傳統(tǒng)類封裝,減少隱式索引計(jì)算;編譯器指令嵌入:通過`pragma omp simd`等編譯制導(dǎo)語(yǔ)句引導(dǎo)編譯器生成高效機(jī)器碼。

四、結(jié)果測(cè)試:效率躍升與跨平臺(tái)驗(yàn)證

在完成編譯優(yōu)化方案的構(gòu)建后,我們迎來了至關(guān)重要的實(shí)戰(zhàn)驗(yàn)證階段。本次測(cè)試聚焦兩大核心目標(biāo):一是驗(yàn)證優(yōu)化后的風(fēng)雷結(jié)構(gòu)網(wǎng)格求解器在不同平臺(tái)上的計(jì)算效率是否實(shí)現(xiàn)顯著提升,二是確保優(yōu)化過程絲毫未影響程序的計(jì)算精度。

1. 測(cè)試方案全解

(1) 標(biāo)準(zhǔn)化測(cè)試環(huán)境:全面檢驗(yàn)跨平臺(tái)兼容性

基礎(chǔ)配置信息

CPU

Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz

操作系統(tǒng)

Ubuntu 22.04 LTS| Windows 10 專業(yè)版

(2) 多樣化算例模型:確保測(cè)試結(jié)果的普適性

案例分享|性能提升突破25%!揭秘國(guó)產(chǎn)CFD——風(fēng)雷軟件并行架構(gòu)升級(jí)的圖3

算例配置信息


(3)測(cè)試流程:嚴(yán)格遵循科學(xué)驗(yàn)證標(biāo)準(zhǔn)

  • 正確性驗(yàn)證:優(yōu)化前后各跑一遍,vimdiff對(duì)比氣動(dòng)力系數(shù)文件,考察是否滿足5位有效數(shù)字一致性能統(tǒng)計(jì):優(yōu)化前后跑10遍記錄時(shí)間,取平均值計(jì)算性能提升百分比

(4)測(cè)試舉例:典型結(jié)構(gòu)網(wǎng)格算例

  • Linux平臺(tái):
案例分享|性能提升突破25%!揭秘國(guó)產(chǎn)CFD——風(fēng)雷軟件并行架構(gòu)升級(jí)的圖4

Linux平臺(tái)正確性驗(yàn)證



案例分享|性能提升突破25%!揭秘國(guó)產(chǎn)CFD——風(fēng)雷軟件并行架構(gòu)升級(jí)的圖5

  平均優(yōu)化前耗時(shí)260.49s,優(yōu)化后耗時(shí)172.54s,優(yōu)化提速33.76%

  • Windows平臺(tái)
案例分享|性能提升突破25%!揭秘國(guó)產(chǎn)CFD——風(fēng)雷軟件并行架構(gòu)升級(jí)的圖6

Windows平臺(tái)正確性驗(yàn)證


案例分享|性能提升突破25%!揭秘國(guó)產(chǎn)CFD——風(fēng)雷軟件并行架構(gòu)升級(jí)的圖7

平均優(yōu)化前耗時(shí)1156.71s,優(yōu)化后耗時(shí)843.27s,優(yōu)化提速27.1%


  (5) 典型結(jié)構(gòu)網(wǎng)格算例性能測(cè)試結(jié)果

案例分享|性能提升突破25%!揭秘國(guó)產(chǎn)CFD——風(fēng)雷軟件并行架構(gòu)升級(jí)的圖8

  跨平臺(tái)驗(yàn)證顯示,氣動(dòng)外形算例(平板/2822翼型/30p30n)加速比普遍高于復(fù)雜幾何模型(球頭/雙橢球/RamC)。

通過插樁分析發(fā)現(xiàn):高自動(dòng)向量化函數(shù)占比(多采用PHArray單元素訪問的無(wú)依賴函數(shù))與加速比呈正相關(guān);湍流求解器因單元素接口調(diào)用更多且兩方程模型含可向量化的crossing/blending函數(shù),其優(yōu)化空間顯著優(yōu)于已充分優(yōu)化的層流求解器(依賴集合訪問及鏈接優(yōu)化)。整體表現(xiàn)為:湍流 > 層流,兩方程 > 一方程。

2. 測(cè)試結(jié)論

  當(dāng)前基于Intel編譯器自動(dòng)向量化和LLVM框架鏈接時(shí)優(yōu)化的編譯參數(shù)優(yōu)化方案,在典型的結(jié)構(gòu)網(wǎng)格算例中對(duì)風(fēng)雷結(jié)構(gòu)網(wǎng)格求解器的性能提升能達(dá)到25%以上,優(yōu)化方案在Windows和Linux操作系統(tǒng)上均有效,且程序的正確性不受影響。

五、總結(jié):風(fēng)雷軟件并行升級(jí)成果全景呈現(xiàn)

  歷經(jīng)數(shù)月的攻堅(jiān)克難,神工坊?團(tuán)隊(duì)針對(duì)風(fēng)雷軟件的并行架構(gòu)升級(jí)專項(xiàng),交出了一份硬核成績(jī)單:

  從達(dá)標(biāo)情況來看,性能上,30p30n翼型、2822翼型、球頭、雙橢球、RamC模型等算例在Linux平臺(tái)下,基于Intel/GCC/Clang編譯器均實(shí)現(xiàn)超25%性能提升,滿足預(yù)設(shè)指標(biāo);功能上,針對(duì)用戶提供的典型結(jié)構(gòu)網(wǎng)格算例,算例結(jié)果保證與優(yōu)化前的氣動(dòng)力系數(shù)有效位前5位保持一致。

  另外值得一提的是,本次優(yōu)化的三大亮點(diǎn)為國(guó)產(chǎn)工業(yè)軟件的發(fā)展樹立了新標(biāo)桿:

  • 跨平臺(tái)兼容性:Linux/Windows雙系統(tǒng)、Intel/GCC/Clang多編譯器全適配,優(yōu)化方案普適性強(qiáng);精度-效率雙優(yōu):氣動(dòng)力系數(shù)零偏差約束下實(shí)現(xiàn)性能躍升,兼顧工程實(shí)用性與計(jì)算效能;多維性能錨定:從單元素到集合訪問、從二維到四維數(shù)組,全維度覆蓋性能基線,為后續(xù)優(yōu)化提供量化基準(zhǔn)。

  本次優(yōu)化標(biāo)志著風(fēng)雷軟件在自主可控CFD內(nèi)核性能上實(shí)現(xiàn)里程碑式突破,為大規(guī)模工程仿真提供了更高效率的國(guó)產(chǎn)化解決方案。未來,神工坊?團(tuán)隊(duì)將持續(xù)深耕編譯器協(xié)同優(yōu)化技術(shù),推動(dòng)國(guó)產(chǎn)工業(yè)軟件躋身國(guó)際一流行列。



參考資料:
[1] 紅山開源社區(qū).關(guān)于風(fēng)雷[EB/OL].https://docs.osredm.com/phenglei/
[2] Faulkner, L. and Wick, D. (2005) Cross-User Analysis: Benefits of Skill Level Comparison in Usability Testing. Interacting with Computers, 17, 773-786.
案例分享|仿真軟件并行架構(gòu)升級(jí)——基于編譯優(yōu)化的風(fēng)雷軟件性能突破的圖9
登錄后免費(fèi)查看全文
立即登錄
App下載
技術(shù)鄰APP
工程師必備
  • 項(xiàng)目客服
  • 培訓(xùn)客服
  • 平臺(tái)客服

TOP