MFC 5.0:一款用于求解百亿亿次计算级别多物理场流动问题的软件

时间:2026年2月9日
来源:Computer Physics Communications

编辑推荐:

MFC 5.0 是面向工程、医学及基础科学的开放源计算流体力学(CFD)求解器重大升级,支持ExaScale计算,集成GPU/APU加速、六种新相变模型、WENO-Z数值方法及低马赫数处理,在OLCF Frontier等超算实现90%以上强 Scaling效率,完成200万亿网格点公开最大规模CFD仿真并入围2025 Gordon Bell奖。

广告
   X   

本杰明·威尔冯(Benjamin Wilfong)|亨利·A·勒贝雷(Henry A. Le Berre)|阿南德·拉达克里希南(Anand Radhakrishnan)|安什·古普塔(Ansh Gupta)|丹尼尔·J·维克斯(Daniel J. Vickers)|迭戈·瓦卡-雷维洛(Diego Vaca-Revelo)|迪米特里奥斯·亚当(Dimitrios Adam)|于浩成(Haocheng Yu)|李赫克苏(Hyeoksu Lee)|何塞·罗多尔福·克雷姆(Jose Rodolfo Chreim)|米雷利斯·卡尔卡纳·巴尔博萨(Mirelys Carcana Barbosa)|张彦军(Yanjun Zhang)|埃斯特万·西斯内罗斯-加里巴伊(Esteban Cisneros-Garibay)|阿斯温·格纳纳斯坎丹(Aswin Gnanaskandan)|小毛罗·罗德里格斯(Mauro Rodriguez Jr)|鲁本·D·布迪阿尔贾(Reuben D. Budiardja)|斯蒂芬·阿博特(Stephen Abbott)|蒂姆·科洛尼乌斯(Tim Colonius)|斯宾塞·H·布林格尔森(Spencer H. Bryngelson)
佐治亚理工学院计算科学与工程学院,美国亚特兰大,30332,GA

摘要

在工程、医学和基础科学中,许多问题都依赖于高保真的流体模拟,这使得高性能的计算流体动力学求解器成为开源软件社区的核心。之前的MFC 3.0版本由布林格尔森等人通过《Comp. Phys. Comm.》(2021年)发表、文档化并开源,具备多种物理特性、数值方法和可扩展的基础设施。MFC 5.0是对MFC 3.0的重大升级,增加了大量成熟和创新的物理模型及数值方法,并引入了GPU和APU(或超级芯片)加速技术。我们在首批两台百亿亿次级超级计算机OLCF Frontier和LLNL El Capitan上展示了其先进的性能和理想的扩展性。结合MFC的单加速器性能,MFC实现了实际的百亿亿次级计算,并在2025年成为ACM Gordon Bell奖的决赛选手,完成了迄今为止最大的公共CFD模拟(200万亿个网格点)。新的物理特性包括浸没边界法、N流体相变、Euler-Euler和Euler-Lagrange子网格气泡模型、流体-结构相互作用、低弹性和高弹性材料、化学反应流、双材料表面张力以及磁流体力学(MHD)等。数值技术代表了当前的最先进水平,包括通用松弛特征边界条件、WENO变体、针对刚性子网格流动特征的Strang分裂方法以及低马赫数处理。在OLCF Summit和Frontier以及LLNL El Capitan上,MFC在数万颗GPU上的扩展效率达到了理想值的5%到90%以上。当设备数量增加16倍时,在OLCF Frontier上的并行效率超过90%。MFC的软件栈进一步得到了改进,包括持续集成(确保代码的稳定性和正确性,通过了300多次回归测试)、元编程(减少代码长度同时保持性能可移植性)以及用于计算化学反应的代码生成。

项目名称:MFC 5.0

CPC库链接到项目文件: https://doi.org/10.17632/8y55zscjd3.2 开发者仓库链接: https://github.com/MFlowCode/MFC 许可条款: MIT许可证 编程语言: Fortran08和Python 先前版本的期刊参考: Comput. Phys. Commun. 266 (2021) 107396, https://doi.org/10.1016/j.cpc.2020.107396 新版本是否取代了旧版本?:是 新版本的原因: 新增了大量难以在学术文章中详细阐述的特性和功能。 问题性质: 可压缩流的模拟需要仔细选择物理模型并处理空间导数,以保持解的物理一致性并避免数值伪影。相关方法应具有高阶精度以降低计算成本。 解决方法: 该软件使用多种物理模型和数值方案来处理多相、多组分、化学反应和磁流体力学流动。还包括额外的物理效应和模型。数值方法基于有限体积法。 代码来源: https://github.com/MFlowCode/MFC

引言

MFC由布林格尔森等人首次引入文献和开源社区[1],其中描述了MFC 3.0的软件设计和特性,这是一个基于CPU的可压缩多组分流动代码,适用于Kapila等人[2]和Allaire等人[3]提出的五方程扩散界面方法,以及Saurel等人[4]提出的六方程扩散界面模型。MFC 3.0还包括本文讨论的其他特性。自MFC 3.0发布以来,MFC社区增加了大量的物理模型、数值方法、GPU卸载功能和性能优化。本文全面概述了MFC在过去四年中的发展,包括物理模型、数值方法、有效性、软件稳健性、测试以及在百亿亿次级及以上架构上的性能。
MFC代码库的历史可以追溯到21世纪中叶。当时,MFC是由Eric Johnsen开发的一个未命名的求解器,使用扩散界面方法处理多组分流动(见Jensen [5]和Jensen与Colonius [6])。随后Vedran Coralic对代码进行了重大重写并为其命名。这些改进为MFC添加了多维数值重建功能(见Coralic和Colonius [7])。Jomela Meng添加了圆柱坐标系和高速冲击波-液滴相互作用的模拟[8]。Maeda Kazuki添加了子网格气泡动力学的Euler-Lagrange表示[9]和声波生成[10]。Kevin Schmidmayer和Spencer Bryngelson加入了Kapila等人[2]的五方程模型和Saurel等人[4]的六方程模型。这些工作是在加州理工学院的Tim Colonius研究小组中完成的。Spencer Bryngelson后来在佐治亚理工学院领导了对MFC的重组,增加了更多的建模和数值特性。这些努力最终促成了MFC 3.0在2020年的开源,详细内容见Bryngelson等人[1]。随后几年中,又增加了建模、方法和软件的可扩展性和可移植性(见本文)。
为了使高保真CFD成为解决当今多物理问题的实用工具,求解器必须能够处理液体、气体和固体(至少),并适应复杂的几何形状以及广泛的时间和长度尺度分离。同时,这需要在现代加速器上高效实现,而这些加速器是当前超级计算中心的支柱。MFC 5.0正是基于这一理念设计的。新功能统一了成熟和创新的模型。每种功能都配备了先进的数值技术和GPU/APU卸载能力,使得同一代码能够在从低马赫数、几何复杂的流动到百亿亿次级下的冲击波和爆炸主导的流动环境中进行转换。从这个意义上说,新功能旨在为工程、医学和科学领域提供可靠的端到端模拟基础设施。
MFC现在包含了更强大的物理模型和数值方法,通过持续集成和部署增强了软件的稳定性,通过GPU和APU设备实现了计算加速。利用这些技术,MFC完成了目前已知的最大规模CFD模拟(200T网格点,即1千万亿个自由度[11]),并成为ACM 2025年Gordon Bell奖的决赛选手。新的物理特性包括六种新的相变模型、非多项式子网格气泡动力学、弹性材料处理、化学反应和燃烧、表面张力处理,以及支持从解析级集合或STL文件创建的复杂几何形状的浸没边界法。新的数值方法包括通用特征边界条件、改进的冲击波捕获技术(TENO和WENO-Z构造)、针对刚性子网格流动的Strang分裂方法以及低马赫数流动的处理。显著的软件改进使MFC能够在各种CPU、GPU和APU上高效运行,包括Intel、AMD和NVIDIA的产品。运行时间的减少部分得益于元编程和静态代码生成。
MFC曾被用于旗舰超级计算机的早期访问程序,例如JSC JUPITER(JUREAP)和LLNL El Capitan及OLCF Frontier的最终和早期访问系统,还包括LLNL Tioga(AMD MI300A测试平台)和OLCF Spock及Crusher(AMD MI100和MI250X测试平台)。MFC在商业集群中的使用也非常广泛,包括ACCESS-CI [12](前身为XSEDE [13])集群(PSC Bridges [14]和Bridges2 [15]、SDSC Comet [16]和Expanse [17]、Purdue Anvil [18]、NCSA Delta [19]和DeltaAI [20]、TACC Stampede1–3 [21]、[22]、[23]等大学集群、云计算系统(Intel的AI云[24]),以及AMD和Cray的内部系统等。MFC还是SPEChpc基准测试的候选者,用于评估超级计算机的性能[25];它还用于OLCF Test Harness,以评估OLCF Frontier的性能和稳健性[26]。
第2节介绍了MFC 5.0,描述了其基于MFC 3.0的代码和方法。第3节讨论了MFC所依赖的成熟数值方法。第4节介绍了新的特性,包括物理模型、数值方法和软件工具。第5节展示了MFC的示例模拟。第6节讨论了具有类似特性的其他开源流动求解器。第7节总结了本文和MFC 5.0的内容。

多组分处理

MFC使用Baer–Nunziato模型的简化版本[27]和扩散界面方法来模拟多相流动。本小节描述的方法核心与MFC 3.0[1]保持一致,读者可以参考那里的内容以获得更基础的理解和详细的算法策略。基本扩散界面方法的变更有限,主要是为了性能改进、代码测试策略和新增的物理特性。

数值方法

接下来我们描述了MFC用于求解多组分模型中的对流和扩散项的方法。这里采用的方法与Bryngelson等人的工作[1]一致,更多细节可参考该文献。

更新的功能

本节按每种额外的物理、数值或性能功能在提供端到端先进模拟平台中的作用进行组织,以解决广泛的流动问题。首先,我们将MFC 3.0的物理覆盖范围扩展到(见Bryngelson等人[1]),以捕捉控制实际流动的耦合(复杂几何的浸没边界;N流体相变;Euler-Euler和Euler-Lagrange气泡模型;流体-结构相互作用)

示例模拟

下面包含了使用MFC 5.0进行的示例模拟。许多这些模拟在之前的MFC版本中无法实现,或者由于计算成本过高而无法进行。MFC 5.0改进了分布式计算,并增加了对非NVIDIA GPU硬件的支持。

具有某些共享功能的求解器

还存在其他开源CFD代码。这里简要讨论了这些代码与MFC 5.0的比较和优缺点。URANOS-2.0(De Vanna和Baldan [103])是一个现代Fortran代码,使用OpenACC实现GPU卸载到NVIDIA和AMD GPU。URANOS-2.0结合了MFC的一些冲击波捕获功能和可压缩湍流模型。STREAmS-2(Sathyanarayana等人[104])也是一个Fortran代码,用于可压缩流动,利用CUDA Fortran和hipFORT进行卸载。

结论

自MFC 3.0[1]以来,该代码已从专用研究代码发展成为具备百亿亿次级计算能力的多物理和多相流动框架。物理模型、数值方法、软件基础设施和高性能计算工具的实现体现了这一转变。
版本5.0引入了六种蒸汽-液体系统的相变公式和反应流动的处理方法。实现还包括非多项式子网格气泡动力学模型。

数据可用性声明

MFC根据MIT许可证永久免费提供,链接为:github.com/MFlowCode/MFC

CRediT作者贡献声明

本杰明·威尔冯(Benjamin Wilfong):撰写 - 原始草稿、可视化、软件开发、研究、数据整理、概念化。 亨利·A·勒贝雷(Henry A. Le Berre):软件开发、方法论、形式分析。 阿南德·拉达克里希南(Anand Radhakrishnan):软件开发、方法论、研究、概念化。 安什·古普塔(Ansh Gupta):撰写 - 原始草稿、可视化、软件开发。 丹尼尔·J·维克斯(Daniel J. Vickers):撰写 - 审稿与编辑、方法论、研究、形式分析。 迭戈·瓦卡-雷维洛(Diego Vaca-Revelo):撰写 - 原始草稿、软件开发、方法论。 迪米特里奥斯·亚当(Dimitrios Adam):

利益冲突声明

作者声明他们没有已知的财务利益或个人关系可能影响本文所述的工作。

生物通微信公众号
微信
新浪微博


生物通 版权所有