首页/文章/ 详情

性能提升突破25%!揭秘国产CFD——风雷软件并行架构升级

4天前浏览82
软件介绍
风雷软件(PHengLEI,Platform for Hybrid ENGineering simulation of flows)是中国空气动力研究与发展中心(CARDC)研发的面向流体工程的混合CFD平台。平台以面向对象的设计理念,采用C++语言编程。2020年12月,风雷软件正式面向全国开源,与其他开源CFD软件相比,风雷软件具有扩展能力强、开发难度低、计算效率高等特点,同时适用于前沿研究和大规模常规工程应用。[1]

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

风雷软件(PHengLEI)作为我国自主研发的通用CFD平台,具备结构/非结构/混合网格全域求解能力,其核心数据结构PHArray通过C++模拟Fortran多维数组特性,兼顾工程代码的兼容性。然而,受限于C++默认不实现向量化及索引冗余计算,PHArray的实际运算效率显著低于Fortran原生数组,串行性能测试中GFlop峰值比例不足问题尤为突出。为打破这一技术瓶颈,「神工坊」技术团队提出以编译器深度优化为核心的综合性能提升方案,在保持用户接口零改动的前提下重构底层数据访问逻辑。

Tip :“用户接口零改动”
指在系统升级或架构调整时,保持用户直接接触的前端界面(UI/UX)和交互逻辑完全不变,用户无需重新学习或适应新界面,同时后台技术栈、服务逻辑或数据架构可能已发生重大变化。这种策略的核心是通过解耦前后端依赖,确保用户体验的连续性和系统升级的透明性。[2]对于本项目指 PHarray容器的接口不变。

二、三大核心难题攻克:平衡兼容性、效率与跨平台需求

那么如何在不改动接口的情况下,让软件跑得更快且适配所有平台?「神工坊」技术团队迅速拆解出了三大核心需求:

  1. 接口稳定性:PHArray作为风雷软件的核心数据容器,需确保优化不改变现有数千行工程代码的调用方式

  2. 性能瓶颈突破:C++隐式索引计算、内存访问模式不佳导致向量化率低下,需在不侵入业务逻辑的前提下重构底层实现

  3. 跨平台适配:方案需兼容Linux/Windows系统及GNU/Intel编译器,确保优化效果普适性。

三、技术方案:编译器赋能的多级优化体系

针对上述需求,我们提出采用“循环优化+链接优化”双引擎驱动,通过编译器技术释放硬件算力。

1. 循环级缓存性能榨取

  • 向量化加速:重构循环结构,利用Intel编译器自动向量化技术将标量运算转化为SIMD指令(如AVX512),单指令处理多数据;

  • 分块与融合:通过循环分块(Tiling)提升缓存命中率,融合独立循环减少分支跳转开销;

  • 数据预取:优化内存访问模式,引导编译器自动插入预取指令,减少CPU等待延迟。

2. 链接时全局优化

  • LTO(链接时优化):借助LLVM工具链对全程序代码进行跨模块分析,内联关键函数、消除冗余计算;

  • IPO(过程间优化):跨函数边界优化寄存器分配与指令调度,提升指令级并行度。

3. 零侵入式代码重构

  • 多维数组底层访问优化:用多级指针替代传统类封装,减少隐式索引计算;

  • 编译器指令嵌入:通过`pragma omp simd`等编译制导语句引导编译器生成高效机器码。

四、结果测试:效率跃升与跨平台验证

在完成编译优化方案的构建后,我们迎来了至关重要的实战验证阶段。本次测试聚焦两大核心目标:一是验证优化后的风雷结构网格求解器在不同平台上的计算效率是否实现显著提升,二是确保优化过程丝毫未影响程序的计算精度。

1. 测试方案全解

(1) 标准化测试环境:全面检验跨平台兼容性

基础配置信息
CPUIntel(R) Core(TM) i7-6700 CPU @ 3.40GHz
操作系统Ubuntu 22.04 LTS| Windows 10 专业版

(2) 多样化算例模型:确保测试结果的普适性

算例配置信息

(3)测试流程:严格遵循科学验证标准

  • 正确性验证:优化前后各跑一遍,vimdiff对比气动力系数文件,考察是否满足5位有效数字一致

  • 性能统计:优化前后跑10遍记录时间,取平均值计算性能提升百分比

(4)测试举例:典型结构网格算例

  • Linux平台:

Linux平台正确性验证


平均优化前耗时260.49s,优化后耗时172.54s,优化提速33.76%


  • Windows平台

Windows平台正确性验证


平均优化前耗时1156.71s,优化后耗时843.27s,优化提速27.1%

(5) 典型结构网格算例性能测试结果

跨平台验证显示,气动外形算例(平板/2822翼型/30p30n)加速比普遍高于复杂几何模型(球头/双椭球/RamC)。

通过插桩分析发现:高自动向量化函数占比(多采用PHArray单元素访问的无依赖函数)与加速比正相关;湍流求解器因单元素接口调用更多且两方程模型含可向量化的crossing/blending函数,其优化空间显著优于已充分优化的层流求解器(依赖集/合访问及链接优化)。整体表现为:湍流 > 层流,两方程 > 一方程。

2. 测试结论

当前基于Intel编译器自动向量化和LLVM框架链接时优化的编译参数优化方案,在典型的结构网格算例中对风雷结构网格求解器的性能提升能达到25%以上,优化方案在Windows和Linux操作系统上均有效,且程序的正确性不受影响。

五、总结:风雷软件并行升级成果全景呈现

历经数月的攻坚克难,「神工坊」团队针对风雷软件的并行架构升级专项,交出了一份硬核成绩单:

从达标情况来看,性能上,30p30n翼型、2822翼型、球头、双椭球、RamC模型等算例在Linux平台下,基于Intel/GCC/Clang编译器均实现超25%性能提升,满足预设指标;功能上,针对用户提供的典型结构网格算例,算例结果保证与优化前的气动力系数有效位前5位保持一致

另外值得一提的是,本次优化的三大亮点为国产工业软件的发展树立了新标杆:

  • 跨平台兼容性:Linux/Windows双系统、Intel/GCC/Clang多编译器全适配,优化方案普适性强;

  • 精度-效率双优:气动力系数零偏差约束下实现性能跃升,兼顾工程实用性与计算效能;

  • 多维性能锚定:从单元素到集/合访问、从二维到四维数组,全维度覆盖性能基线,为后续优化提供量化基准。

本次优化标志着风雷软件在自主可控CFD内核性能上实现里程碑式突破,为大规模工程仿真提供了更高效率的国产化解决方案。未来,「神工坊」团队将持续深耕编译器协同优化技术,推动国产工业软件跻身国际一流行列。


参考资料:

[1] 红山开源社区.关于风雷[EB/OL].docs.osredm.com/phengle

[2] Faulkner, L. and Wick, D. (2005) Cross-User Analysis: Benefits of Skill Level Comparison in Usability Testing. Interacting with Computers, 17, 773-786.


HPC流体基础网格处理后处理分析二次开发云计算求解技术创新方法
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-04-11
最近编辑:4天前
神工坊(高性能仿真)
神工坊,提供高性能仿真解决方案...
获赞 216粉丝 48文章 117课程 3
点赞
收藏
作者推荐

案例分享|复杂仿真应用定制——TankSimulator液体灌箱仿真APP

(一)问题及背景描述罐箱是由箱体框架和压力容器罐体组成的设备,具有广泛用途和高效空间利用率,运输成本低廉。罐箱已被国际标准化,可用于公路、铁路、水路等交通方式。全球市场对罐箱需求巨大,其中我国是最大生产国,因此罐箱仿真模拟存在巨大市场需求。对靖江某压力容器生产制造企业的产品设计制造及运行场景进行分析,总结其需要通过仿真解决的问题是,罐箱在运输过程中受到的冲击作用导致内部液体晃动并对罐箱结构造成冲击,易造成罐体结构损伤需要在设计之初即对相关场景进行仿真模拟,并优化设计。这是典型的流固耦合问题,内部液体冲击(流体部分还是气液两相流问题)可能引起应力集中、大变形以及与罐箱缺陷等结合问题导致失稳破坏,对安全性产生影响。企业目前存在的问题主要有以下几点:1.使用商业仿真前后处理软件、仿真求解器软件,需要支付高昂的License费用,企业前期投入会非常高。2.目前没有专门用于罐体冲击仿真的软件,只能使用通用仿真软件,这就要求工程师掌握较多理论知识和软件使用经验,而流固耦合仿真需要熟悉结构和流体仿真,进一步提高了企业人力成本。3.仿真过程需要硬件资源的支撑,流固耦合计算量也比常规仿真计算量大很多,企业自主采购搭建仿真集群成本高昂,且需要专人运维。针对以上问题,国家超级计算无锡中心先进制造部基于一系列开源代码进行了二次开发和自主研发,以开展定制化应用开发。在本期文章中,就我们的定制应用开发平台深度集成开源仿真程序CalculiX、OpenFoam以及preCICE后形成的流固耦合罐箱设计TankSimulatorAPP进行详细介绍。(二)解决方案什么是流固耦合问题流固耦合现象在工程中有许多实际案例,如航空领域的气动弹性问题,桥梁领域的颤振问题,都是流固耦合存在的场景。以模拟仿真的角度看,流-固耦合(以下简称FSI)是分别描述流体动力学和结构力学的定律之间的多物理场耦合。这种现象的特点是变形结构或运动结构与周围或内部的流体流动之间的相互作用,这种相互作用既可以是稳定的,也可以是振荡的[1]。流固耦合问题的求解面临以下几个主要难点:1.物理场的相互作用:流体和固体之间发生相互作用的过程往往十分复杂。2.交界面确定及网格生成:FSI问题的求解需要确定流体和固体之间的交界面。这通常涉及到交界面的几何形状、位置和边界条件等问题。3.耦合算法:FSI求解器需要设计有效的耦合算法来解决流体和固体之间的相互作用。这包括将流体和固体的方程耦合起来,处理界面条件,以及确保数值求解的稳定性和收敛性。4.流体和固体求解在自身领域中已经具有一定的挑战性,而在FSI问题中更加复杂。流体求解中常见的问题包括数值不稳定性、边界条件的处理和网格质量等。而固体求解中需要考虑非线性材料行为、接触与摩擦等因素。5.计算资源和计算效率:FSI问题通常涉及大规模计算和复杂的物理过程,对计算资源的需求较高。解决大规模FSI问题可能需要使用高性能计算平台,并优化计算算法和策略,以提高计算效率和减少计算成本。我们的解决方案在介绍解决方案之前,首先介绍一下TankSimulatorAPP的仿真场景。仿真对象是一个圆柱形罐箱,内部带有防波板,用于缓解流体晃动程度,几何模型示例如下图所示:模拟的是压力容器在载具刹车过程中和刹停后内部液体自由晃动两个阶段中,内部液体的晃动过程及其对容器壁面冲击导致的容器壁面发生变形,这是一个双向FSI模拟仿真。求解器选择及调试结构固体力学求解器采用CalculiX,它是一个对标著名非线性结构分析商软ABAQUS的免费、开源的3D结构非线性分析程序[2]。本算例采用动力学求解模块,封头、容器壁、方波板采用壳单元,不考虑几何非线性。流体力学求解器采用OpenFOAM,它是应用最广的开源计算流体力学软件,具有较好的二次开发特性。本算例采用的是interFoam求解器,基于VOF方法进行两相流仿真。针对仿真场景,调试优化仿真参数设置,并通过实际算例进行验证,最终将与产品无关的仿真参数固化在求解器配置文件中,并实现全流程仿真自动化脚本开发。耦合软件选择及开发通过充分调研了两款仿真求解器的代码结构和运行特性,最终选择preCICE作为耦合软件,并基于官方适配器对求解器和适配器进行了二次开发,提高两个求解器的耦合效率。(适配器是用于在流体和固体之间实现耦合关系的组件或接口。它允许流体和结构两个求解器进行信息交换和数据传递,以模拟流体和固体之间的相互作用,包括了流体和固体的边界条件、位移、速度、压力等参数互相传递的标准接口。)流固耦合方案决定了各求解器的解是如何组合的。一般分为串行/并行显式、串行/并行隐式四种耦合方案。压力容器自由晃动过程,属于几何结构简单、非稳态、较大时间步长的仿真问题,显式方案可以提供较好的计算效率和数值稳定性。因此,我们选择串行/并行显式耦合方案。我们也对耦合器关键环节的参数及模式进行了定义:1.数据映射。在多域仿真时,各个域通常独立的离散化,这样交接面处网格会出现不一致现象。因此,耦合器需要在不同网格之间进行数据插值、外推或者重构,以便流体和固体模拟可以在不同网格间进行信息传递。我们采用最近邻点插值方法将流体网格面上的信息传递到固体模拟中;采用最近点投影方法将固体模拟中的信息传递到流体网格面上。2.数据交换。流体仿真和结构仿真需要建立通信,为了实现流固耦合的高效求解,需要超算集群多个计算节点之间的高效数据交换和协同计算,同时提高并行计算的效率和吞吐量,为此我们专门开发了一种优化后的分布式数据通信策略。定制化界面开发TankSimulatorAPP界面部分基于我们开发的定制应用开发框架快速搭建。对于框架本身,在前几期文章中已经有过详细介绍,这里就不展开介绍了。定制应用开发案例之结构形状优化APP前后处理平台介绍及二次开发案例TankSimulatorAPP包括从几何模型导入的自动化前处理、仿真参数设置以及自动化后处理及报告生成。其中,根据实际工程和业务需要,我们设计了仿真参数输入界面,极大地简化了相关工程师进行繁杂的参数配置工作,降低了仿真的门槛。除此之外,自动化报告生成也使得仿真报告流程化和规范化。(三)TankSimulator液体灌箱仿真APP操作演示1、登陆网址SimForge高性能仿真云进行账号注册2、登陆平台后,找到对应图形应用图标(TankSimulator),双击即可打开使用神工坊2.0页面下面是APP的界面展示,具体操作手册请登陆SimForge平台试用并查看。TankSimulatorAPP界面展示前处理及边界设置一、固体/流体/仿真设置Tanksimulator已为用户大幅简化了仿真流程,用户直接输入如下的参数即可计算监控在控制区选择队列和CPU核数。接下来需先点击计算准备按钮开始流体网格的生成并开启流体计算,如果是第一次生成流体网格,需要较长时间。观察到如下图的提示,说明已经准备就绪。当计算准备过程完成后就可以点击开始计算开始流固双向耦合计算,计算过程会显示在中间及右边的文本框内,供观察计算进度。Paraview后处理计算完成后在计算监控面板中点击生成后处理结果。之后进入Paraview后处理标签页,相关页面已经准备好,用户可进行流体和固体的后处理。自动生成报告计算完成后,在计算监控面板标签页点击生成后处理结果,随后点击生成.docx报告,Tanksimulator将在后台自动提取分析数据,并绘图,自动生成完整的报告.docx文档。如下图所示,生成的报告可以从云桌面的文件系统中下载。(四)结语除TankSimulator液体灌箱仿真APP外,依托「SimForgeHSF高性能数值模拟引擎」等技术,「神工坊」为不同行业、拥有特定仿真需求的客户快速定制复杂仿真应用,帮助客户实现设计研发、性能测试等过程的优化,从而降低成本、缩短周期、提高产品质量。“仿真驱动创新,计算引领未来”,「神工坊」将始终践行“创新驱动、追求卓越、价值导向、开放合作”的价值观,继续保持对技术研发与创新的高度热情,与更多企业合作,探索更广泛、更深入的高性能数值模拟应用场景。参考资料[1]COMSOL.多物理场仿真百科[EB/OL].https://cn.comsol.com/multiphysics

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈