软件介绍
风雷软件(PHengLEI,Platform for Hybrid ENGineering simulation of flows)是中国空气动力研究与发展中心(CARDC)研发的面向流体工程的混合CFD平台。平台以面向对象的设计理念,采用C++语言编程。2020年12月,风雷软件正式面向全国开源,与其他开源CFD软件相比,风雷软件具有扩展能力强、开发难度低、计算效率高等特点,同时适用于前沿研究和大规模常规工程应用。[1]
风雷软件(PHengLEI)作为我国自主研发的通用CFD平台,具备结构/非结构/混合网格的全域求解能力,其核心数据结构PHArray通过C++模拟Fortran多维数组特性,兼顾工程代码的兼容性。然而,受限于C++默认不实现向量化及索引冗余计算,PHArray的实际运算效率显著低于Fortran原生数组,串行性能测试中GFlop峰值比例不足问题尤为突出。为打破这一技术瓶颈,「神工坊」技术团队提出以编译器深度优化为核心的综合性能提升方案,在保持用户接口零改动的前提下重构底层数据访问逻辑。
Tip :“用户接口零改动”
指在系统升级或架构调整时,保持用户直接接触的前端界面(UI/UX)和交互逻辑完全不变,用户无需重新学习或适应新界面,同时后台技术栈、服务逻辑或数据架构可能已发生重大变化。这种策略的核心是通过解耦前后端依赖,确保用户体验的连续性和系统升级的透明性。[2]对于本项目指 PHarray容器的接口不变。
那么如何在不改动接口的情况下,让软件跑得更快且适配所有平台?「神工坊」技术团队迅速拆解出了三大核心需求:
接口稳定性:PHArray作为风雷软件的核心数据容器,需确保优化不改变现有数千行工程代码的调用方式;
性能瓶颈突破:C++隐式索引计算、内存访问模式不佳导致向量化率低下,需在不侵入业务逻辑的前提下重构底层实现;
跨平台适配:方案需兼容Linux/Windows系统及GNU/Intel编译器,确保优化效果普适性。
针对上述需求,我们提出采用“循环优化+链接优化”双引擎驱动,通过编译器技术释放硬件算力。
向量化加速:重构循环结构,利用Intel编译器自动向量化技术将标量运算转化为SIMD指令(如AVX512),单指令处理多数据;
分块与融合:通过循环分块(Tiling)提升缓存命中率,融合独立循环减少分支跳转开销;
数据预取:优化内存访问模式,引导编译器自动插入预取指令,减少CPU等待延迟。
LTO(链接时优化):借助LLVM工具链对全程序代码进行跨模块分析,内联关键函数、消除冗余计算;
IPO(过程间优化):跨函数边界优化寄存器分配与指令调度,提升指令级并行度。
多维数组底层访问优化:用多级指针替代传统类封装,减少隐式索引计算;
编译器指令嵌入:通过`pragma omp simd`等编译制导语句引导编译器生成高效机器码。
在完成编译优化方案的构建后,我们迎来了至关重要的实战验证阶段。本次测试聚焦两大核心目标:一是验证优化后的风雷结构网格求解器在不同平台上的计算效率是否实现显著提升,二是确保优化过程丝毫未影响程序的计算精度。
(1) 标准化测试环境:全面检验跨平台兼容性
基础配置信息 | |
CPU | Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz |
操作系统 | Ubuntu 22.04 LTS| Windows 10 专业版 |
(2) 多样化算例模型:确保测试结果的普适性
(3)测试流程:严格遵循科学验证标准
正确性验证:优化前后各跑一遍,vimdiff对比气动力系数文件,考察是否满足5位有效数字一致
性能统计:优化前后跑10遍记录时间,取平均值计算性能提升百分比
(4)测试举例:典型结构网格算例
Linux平台:
平均优化前耗时260.49s,优化后耗时172.54s,优化提速33.76%
Windows平台
平均优化前耗时1156.71s,优化后耗时843.27s,优化提速27.1%
(5) 典型结构网格算例性能测试结果
跨平台验证显示,气动外形算例(平板/2822翼型/30p30n)加速比普遍高于复杂几何模型(球头/双椭球/RamC)。
通过插桩分析发现:高自动向量化函数占比(多采用PHArray单元素访问的无依赖函数)与加速比呈正相关;湍流求解器因单元素接口调用更多且两方程模型含可向量化的crossing/blending函数,其优化空间显著优于已充分优化的层流求解器(依赖集/合访问及链接优化)。整体表现为:湍流 > 层流,两方程 > 一方程。
当前基于Intel编译器自动向量化和LLVM框架链接时优化的编译参数优化方案,在典型的结构网格算例中对风雷结构网格求解器的性能提升能达到25%以上,优化方案在Windows和Linux操作系统上均有效,且程序的正确性不受影响。
历经数月的攻坚克难,「神工坊」团队针对风雷软件的并行架构升级专项,交出了一份硬核成绩单:
从达标情况来看,性能上,30p30n翼型、2822翼型、球头、双椭球、RamC模型等算例在Linux平台下,基于Intel/GCC/Clang编译器均实现超25%性能提升,满足预设指标;功能上,针对用户提供的典型结构网格算例,算例结果保证与优化前的气动力系数有效位前5位保持一致。
另外值得一提的是,本次优化的三大亮点为国产工业软件的发展树立了新标杆:
跨平台兼容性:Linux/Windows双系统、Intel/GCC/Clang多编译器全适配,优化方案普适性强;
精度-效率双优:气动力系数零偏差约束下实现性能跃升,兼顾工程实用性与计算效能;
多维性能锚定:从单元素到集/合访问、从二维到四维数组,全维度覆盖性能基线,为后续优化提供量化基准。
本次优化标志着风雷软件在自主可控CFD内核性能上实现里程碑式突破,为大规模工程仿真提供了更高效率的国产化解决方案。未来,「神工坊」团队将持续深耕编译器协同优化技术,推动国产工业软件跻身国际一流行列。
参考资料:
[1] 红山开源社区.关于风雷[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.