【智算芯闻】GPU频借力,CFD上青云
扫描二维码
随时随地手机看文章
摘要
随着计算机技术的不断发展,模拟仿真已经成为科学研究和工业应用的核心工具。计算流体力学(Computational Fluid Dynamics,简称CFD)作为仿真领域最具技术含量,算力需求最大的方向,深刻影响着航空航天、汽车制造、芯片设计、医疗健康、生物制药等领域的发展。而GPU的出现,则让CFD得以突破算力瓶颈,朝着更高效率、更高精度、更多领域的方向迈进。本文将详细梳理CFD的发展现状和趋势,阐述GPU将如何借力,CFD又会登上哪些青云。
前言
图1 无处不在的流动现象
图片来源:A., Jameson, AIAA Presentation 2015 – CFD Past, Present, Future
在我们的大气、海洋乃至外太空的星云中,流体无处不在。自有记载的历史开始以来,流体就让人类着迷,水流的魔力和不断变化的天气甚至影响了人类历史的进程。早慧的古埃及和古中国文明都有规模巨大的灌溉系统;伟大的罗马帝国则因其地下水系统而流芳百世。可以说,古代文明的演进离不开人们对于流体应用技术的不断进步。然而,直到19 世纪的早期,数学家Claude Navier和George Stokes提出Navier-Stokes方程,人们才真正完成了对流体流动、热量和质量传递的现代数学理解。这些复杂的非线性偏微分方程,我们现在称之为 N-S 方程,描述了所有流体的流动,包括最引人注目的未解之谜——湍流。湍流现象是经典物理最后一个未解难题,它令物理学家们十分头痛,乃至传闻诺贝尔奖得主海森堡有句名言:“When I die and go to Heaven there are two matters on which I hope enlightenment. One is quantum electrodynamics and the other is turbulence. About the former, I am really rather optimistic.”
过去近200年的历史告诉我们,N-S方程很难解析求解。而随着现代数字计算机的发展,我们能够使用数值方法有效地求解这些方程。这一进步为我们称为计算流体动力学(CFD)的现代学科铺平了道路。
白玉堂前春解舞,东风卷得均匀。
CFD的起源
使用数值方法求解流体问题的思想可上溯至Lewis Fry Richardson (1881-1953),他开发了第一个数值天气预报系统。Richardson提出将气象空间划分成若干区域,并在一个巨大体育场内塞满计算人员,每个人都配备机械计算器,执行部分流量计算。中心的领导者使用彩色信号灯和电报通信来协调预报。事实上,他是在描述一个CPU的原型。虽然Richardson的计划并没有成功,但这种通过差分方式求解微分方程的构想却为后来的CFD发展提供了思想源泉。
图2 Richardson 设想的数值天气预报系统
图片来源:https://www.emetsoc.org/resources/rff/
大部分我们今天熟知的经典算法和程序源自美国洛斯阿拉莫斯国家实验室 (Los Alamos National Laboratory) T-3 流体动力学研究小组从1958年起一直开展的工作,以及伦敦帝国理工学院 (Imperial College London) D. B. Spalding 教授于上世纪60-70年代领导的研究活动。前者的研究成果后来被广泛应用于NASA以及一些航空公司如波音中,还有一些算法如PIC(particle in cell)甚至影响了后来影视动画领域物理模拟引擎的发展。后者则致力于推广CFD在工程领域的应用,更加注重不可压缩稳态流动的求解,并提出了著名的SIMPLE算法和最流行的湍流模型,孵化了最早的商业CFD软件。至此,CFD沿着两条主线在飞速发展,一条更专注于研究可压缩流动的高精度格式,以解决航空航天领域常见的激波捕捉和湍流模拟。另一条更专注于研究不可压缩流动的快速稳定求解,以处理日常生活中广泛存在的传热传质问题。
图3 早期CFD 时间线
图片来源:Hanna, K., Parry, J. (2011), Back to the Future: Trends in Commercial CFD [Mentor white paper]
1980年代,这些研究都开花结果,到了收获的时候了。著名的计算流体力学大神Anthony Jameson 推动了可压缩领域CFD技术和应用的大发展,他不仅贡献了很多精妙的数值格式和思想,如中心差分有限体积、人工粘性等,还将其落实为工程可用的程序Flo和SYN系列,这两个系列程序被直接用于波音公司的设计中,开创了使用CFD进行设计的先河。而得益于CFD技术的飞速发展,商业CFD也开始如雨后春笋般出现。Suhas Patankar 1980 年著名的 CFD 教科书催生了数百个新兴 CFD 行业中的 CFD 代码,例如FIDAP、FLUENT、PHOENICS、FLOW3D、FloTHERM、STAR-CD。这些商业软件大多借鉴了Spalding团队在不可压缩领域的研究成果,为了编码方便,它们通常使用有限体积法。时至今日,有限体积法也因其容易实现而仍是商业软件的主流选择。紧接着,CFD进入到百花齐放、繁荣但却混乱的新时代。
蜂围蝶阵乱纷纷。几曾随逝水?岂必委芳尘?
CFD的发展
1990 年代,CFD软件和各种仿真的条件经历了翻天覆地的变化,CPU速度和内存容量迅速提升,价格不断下降,为工业用户带来了全新易得的硬件资源,CFD的使用出现了爆炸式增长。CFD的重点从数值技术研究变成了商业拓展,各大CFD软件公司开始走出科研的小圈子,接触工程客户,并试图缩短网格生成时间,完善后处理功能以提供可视化的结果。因此非结构网格逐步成熟化和工程化,成为了CFD求解器主流网格离散的选择。此时的CFD行业还有一个突出特征,那就是并购和重组频发。由于工程客户的需求开始呈现多样化,从航空航天到汽车制造,从室外风场到室内温控,从涡轮机械模拟电子器件的散热,各种不同流体模拟需求不断涌现。由于此时CFD的有限体积方法发展已经相当成熟,而更高精度的算法还没有被验证,那么谁能更贴近用户需求,完善自己的前后处理,谁就能获得订单。经过一番激烈竞争,市场上出现了很多针对不同领域的专业CFD软件,而实力雄厚的厂商也开始试图并购以扩大自己的市场。各种不同来历的针对不同行业的求解器不断被开发又不断被整合,共同组成了这个乱纷纷的时代。通过与电磁、声场、结构等其他领域的求解器耦合,CFD得以应用于更多领域。
图4 CFD模拟能力的不断增长——以F1赛车为例
图片来源:Hanna, K., Parry, J. (2011), Back to the Future: Trends in Commercial CFD [Mentor white paper]
这一阶段,我们见证了各种IT技术的大发展,这些技术加速了全球 CFD 应用和使用的增长。从工作站到个人计算机再到笔记本电脑,CFD 首次脱离了专家用户和大型集群服务,并集成了更有效的可视化工具。预处理工具的激增和CAD 工具的出现提高了 CFD 工程师的生产力,CFD能够方便地处理更现实的几何形状。当CFD技术已经充分发展的时候,最能够提升CFD应用广度和深度的或许是摩尔定律。如图所示,以F1方程式赛车模拟为例,CFD模拟能力的增长几乎完全同步于摩尔定律,这也因此带来CFD模拟产生的巨大效益。CFD相较于风洞模拟无论是成本还是效率都有极其明显的优势,结合CAD工具,CFD也日益成为工程设计制造领域必不可少的一环。
在花团锦簇、烈火烹油的行业繁荣景象的背后,我们必须清醒认识,这些商业领域的成功与CFD技术本身的发展并无太大关系。Hanna, K.在一次报告中悲哀地评论,CFD数值离散方法本身则已经停滞了20年之久。商家的夸大宣传加上最初工业用户对CFD成本与结果质量的褒贬不一,也让CFD仿真获得了“速度太慢、费用太贵、结果太模糊、中看不中用”的名声,甚至有CFD就是Colorful fluid dynamics的说法。
表1 传统数值离散格式优缺点
在CFD商业软件大杀四方但却不断破坏口碑的同时,学术界仍然在试图有所突破。由于航空航天领域始终存在高保真模拟和高效率模拟的需求,学者们对于新格式的追求还在继续。一个被特别关注的重点是高精度空间格式的构造。众所周知,CFD程序继承了Spalding和Jameson等人早期的代码,一直使用有限体积法作为软件空间离散框架。在三大离散方法有限体积(finite volume method, 简称FV)、有限差分(finite difference method, 简称FD)、有限元(finite element method,简称FE)中,有限体积在CFD软件中占有绝对统治地位,一方面是历史惯性,另一方面也是其模拟流体时有其他方法不具备的优点。相比于有限差分,它能够适应非结构网格,易于处理不同外形边界;相比于有限元方法,它能够保证局部守恒性。然而有限体积法也有它自己的缺点——难以构造高阶格式。面对这个难题,学者们从其他离散框架寻求突破:有些使用谱方法和有限元或有限差分的结合方法谱元法(Spectral difference method, 简称SD)构造高精度格式,并保证局部守恒;有些则使用有限体积和有限元(有限元方法通常也叫伽辽金方法)的结合方法即间断伽辽金方法(Discontinuous Galerkin, 简称DG)。这些方法经过发展已经得到了相当高的数值精度,但是由于表述复杂困难,仍然很难被大家接受。此外,格子玻尔兹曼方法(Lattice Boltzmann Method, 简称LBM)也在这一时期开始孕育成熟。单相流和多相流的LBM方法相继被提出,迅速成为学界的研究热点之一。然而当时的LBM研究在流体力学界仍属小众。人们很难想到,未来GPU的飞速发展,会让它成为汽车流场模拟的主角。
万缕千丝终不改,任他随聚随分。
CFD的现状
CFD发展至今,使用二阶精度有限体积法的商业软件已经遍布各行各业,它们几乎能够模拟一切外形简单、物理过程单一的问题。然而,随着科技的进一步发展,人们对CFD的定位从设计后验证变成了设计前指导,软件定义产品的思想也越来越深入人心。时代呼唤那些能够在时间和空间上分辨率更高的方法,这对应着时间上很小的步长和空间上的高分辨率格式。举例而言,在航空领域,实现对超音速飞机翼型的快速迭代设计需要超高的时空分辨率。下表展示了使用大涡模拟(Large Eddy Simulation,简称LES,现阶段最流行的湍流模型)时单位纵横比的几何体周围马赫数为0.2的流动问题实现24小时模拟所需的PFLOP/s。我们注意到算力消耗近似正比于Re1.3 ,其中网格量增长正比于Re1.0, 时间迭代增长正比于Re1/3。这还是在壁面处使用了近似壁面函数方法的LES模型的计算量。如果要完全模拟计算壁面附近的流场,预计算力消耗正比于Re2.5 ,这需要的算力消耗就更加惊人。
表2 使用LES模型模拟机翼外流场的计算量估计
(数据来自NASA 2030 CFD version)
超高算力消耗的CFD模拟亟需更高的算力和更优的算法,图形处理器(Graphics Processing Unit, GPU)的出现恰好能够满足这个需求。GPU最早是用于图像显示的芯片。由于其支持高刷新率高分辨率显示设备的需求,GPU具有高并行数、大数据吞吐量的特征。科学家们发现,这种特征恰好可以使用于大规模的科学及工程计算领域。一方面,在算力上,GPU计算能力上限远超CPU,为CFD模拟提供无尽的想象空间。另一方面,GPU并行化的特点也促进CFD模拟向着高并行度、高数据复用的方向发展。为了能够实现更高效率的模拟,很多CFD软件都不同程度的支持GPU加速运算。GPU甚至在影响CFD技术的发展方向。
图5 CFD软件的GPU加速情况
上图是基于欧拉视角的CFD软件GPU加速情况。CFD传统的离散方式可以大体沿着两个维度划分。沿着空间离散角度看,从结构性的有限体积到非结构有限体积再到非结构有限元及其变种,格式的精度(简单说,就是误差随迭代收敛的速率)越来越高,但是单网格节点的计算复杂度也在上升。传统CFD商业软件一般使用非结构有限体积法,而目前最受学界关注的则是非结构网格有限元方法的变种——通量重构(Flux Reconstruction,简称FR)格式。FR格式由Huynh在2007年提出,此后CFD宗师Jameson又证明了DG和SD方法均可以统一到这个框架中,至此关于可压缩高阶格式的构造研究在学术上基本有了定论。Jameson等人也在各种场合推广FR方法,并将其应用于各种高保真模拟场景中,而这一方法能够迅速推广和GPU的加速是分不开的。一般来说,构建高精度格式需要在网格点内部再给出多项式插值点,在传统的计算资源不够的时候,这种做法无疑是非常耗时的,人们倾向于使用加密网格的低阶格式来进行高分辨率计算。但是在有了GPU并行技术的支持下,提升单元计算复杂度以减少数据交换变得迫在眉睫,相比于加密网格,高精度格式模拟成本更低,而这也催动学者们不断深入挖掘高精度格式的内涵,从而促进CFD技术的大发展。从时间离散角度,也可以将离散格式分为显式和隐式。显式格式可以直接计算格点下一时刻的值,不需要求解方程,而隐式格式由于多节点的未知量耦合在一起,需要联立求解代数方程组。显式格式通常用来求解可压缩方程和非稳态问题,而隐式格式常用于求解不可压缩方程和稳态问题。在过去计算资源较少的年代,计算需求只能满足稳态问题的计算,常常使用隐式格式以加快收敛速度。而如今CFD的各个应用领域更加关注非稳态的过程,需要更多支持非稳态求解的求解器。为了统一求解器的求解格式,很多新开发的CFD软件都不单独开发稳态求解器,而是将其看作非稳态问题的一种极限情况。在进行某一时间步计算时,由于显式格式可以单独计算每个节点的物理量(其对周围节点的依赖可以用其他节点上一时刻的值代替),因此其天然可以实现并行计算。在过去并行资源较少的时代,隐式格式是主流的选择。但是在计算资源越来越丰富的今天,新一代CFD软件更倾向于不断加密网格和网格内的节点阶数,并采用显格式进行推进。
另一个发展较快的CFD技术是粒子法。相对于传统CFD模拟方法,粒子法的最大优势是减少了画网格的复杂前处理过程,算法并行度高,而其缺点则是计算量巨大。而通常,工程师们使用商业CFD软件大概有70%的时间都耗费在前处理和后处理上。当GPU的出现得以使粒子法CFD克服计算量巨大的困难,其应用于工程实际时减少前处理时间的比较优势就愈发明显。2010年后,粒子法的代表光滑粒子流体动力学方法(Smoothed Particle Hydrodynamics,简称SPH)和格子玻尔兹曼方法(Lattice Boltzmann Method,简称LBM)在商业上开始备受瞩目,基于SPH方法的各种大尺度模拟工具纷纷登场,广泛应用于动画电影特效的制作,而微观物理机制更加明确的LBM方法则在多孔介质,电池模拟,以及低速空气动力学中大放光彩,基于LBM方法的PowerFlow更是占据了整车外流场模拟的绝大部分市场。2016和2017年,工业软件巨头达索公司分别将基于LBM方法的Xflow 和Powerflow收入旗下,2021年西门子将基于SPH的Nextflow Software收入旗下,表明各大厂商都很看好基于粒子法的瞬态分析CFD软件的未来。粒子法因其算法局部性强,并行容易,也非常适合GPU加速。下面给出了应用粒子法的一些商业CFD软件。
图6 粒子法CFD软件
总体而言, 当前CFD的技术正在向着计算并行化、模型统一化的方向迈进。无论是针对高速流动领域的高度局部化的高精度显式有限元方法还是更适合微尺度和低速流动模拟的粒子类方法,都因其并行效率高、编程框架统一而越来越成为学者们关注的重点。GPU的出现,不但使得CFD模拟效率因为硬件算力的提升而加快,还深度影响了CFD离散格式的发展趋势。在GPU加速的背景下,高精度格式和粒子法这两个算力消耗极大的技术路径由此成为学界研究的重点,高保真模拟和瞬态分析则成为了各大CFD软件宣传的口号。在此基础上,GPU还将进一步影响CFD的应用,使其迈向更加广阔的空间。
韶华休笑本无根。好风频借力,送我上青云。
CFD的未来
虽然时至今日,N-S方程仍然是千禧年未解难题,然而,我们还是可以通过提升算法和算力不断逼近人类认知的极限。借助GPU的好风,CFD正在不断拓展自己的边界,向着未知领域进发。本节,让我们大开脑洞,设想一下GPU加持的CFD会有怎样的未来。
"荡漾的小船产生水波,高速飞行的喷气机产生湍流。数学家和物理学家相信对NS方程的理解可以实现对这两个问题的解释和预测。虽然NS方程在19世纪就被提出,但是我们对他们的理解依然非常少。我们在这里向全世界的科学家发出挑战,刷新数学理论的历史,揭开NS方程的未解之谜。"
——克雷研究所
我们都知道,CFD模拟已经遍布各行各业,而GPU加速则能够使一些过去我们不敢设想的模拟需求成真。在GPU好风助力下,CFD又将登上哪些青云呢?
航空航天
CFD技术从创立之初,航空航天领域就是其主要的应用方向。在SpaceX 的飞船升空后,航空航天再次引发人们的关注。NASA在2014年发布的《CFD愿景2030研究》,预测到2030年,CFD的应用将包括在整个飞行包线内进行全机模拟,涡轮风扇发动机的瞬态模拟,先进飞行器的多学科优化以及动力空间通道。航空航天领域的CFD模拟对于高精度高保真模拟的要求极高。基于高精度格式的软件PyFR(诞生于CFD商业软件发源地帝国理工大学)和CharLES(诞生于CFD技术中心斯坦福大学)已经展示了GPU加速在航空航天模拟中的威力,在GPU的支持下将CFD高保真模拟的效率提升上百倍。未来,随着人类不断向深空探索,以及航空工业的不断壮大,CFD模拟或可以让我们用极小的代价进行飞行器设计,从而真正把我们带到无尽星空。
图7 航空航天的CFD应用
图片来源:波音公司官网
自动驾驶
自动驾驶可能是目前最受瞩目的人工智能应用,然而事实上,CFD仿真也是自动驾驶中必不可少的一环。无论是为了最大化电池的应用效率,还是减少汽车自动行驶时的风阻,都对CFD模拟提出了很高的要求。例如,气流经过行驶的汽车,在汽车周围形成很复杂的外流场结构,会出现气流的分离附着和复杂涡结构等流体现象。在GPU出现之前,工程师们需要花费很久的时间进行整车模拟,而且通常还只能做到定性。在GPU 加持下,使用LBM方法可以方便地仿真各个时刻的风阻和风噪,例如广汽研究院空气动力学团队使用基于LBM方法的Altair UltraFluidX软件,在不到六个月的时间内,开展200多次整车外流场瞬态CFD仿真模拟,最终创造了最新低风阻记录。未来,在GPU加速情况下,也许仿真汽车流场可以在PC端进行,届时,我们每个人都能定制自己的自动驾驶汽车。
图8 汽车工业的CFD应用
图片来源:MSC 白皮书
精准医疗
人体解剖学和人体流体行为的复杂性,使得CFD仿真技术成为医学领域研究的重要工具。医学研究人员可以通过先进医疗影像设备如CT、MR等得到人体血管、气管等器官的CAD模型,施加合适的粘性边界,构造一个CFD问题。通过CFD模拟分析血流和气流的运动情况,分析流速和压力变化,从而对患者病变状态进行评估。例如,在冠状动脉分析领域,已经有厂商提出使用CT-FFR技术取代通常的有创FFR技术,用来评价冠脉狭窄程度,从而做出手术方案判断和调整。CT-FFR 技术的核心是血管内血流的CFD模拟。由于血管分布十分复杂,对其进行CFD计算非常耗时,这是限制CT-FFR应用推广的最大瓶颈之一。GPU的应用将使得该方法得以更有效推广。阅影科技使用GPU加速CFD计算,实现了CT-FFR中血流模拟的秒级计算,极大降低了部署难度。除了冠状动脉的模拟,CFD还可用于更多人体内流的模拟,结合越来越高分辨率的CT、MR设备获取的高清CAD模型,CFD的计算模拟也将更加有定量价值。在GPU的加速下,各种涉及气流和血流的手术都可以在CFD仿真中预览,从而提升手术效果和成功率,实现真正意义的数字医疗、精准医疗。
图 9 CT-FFR模拟显示情况
图片来源:CT-FFR龙头企业Heart Flow 官网
海绵城市
随着海绵城市概念的兴起,人们越来越重视降水、排水、防洪等水动力问题的模拟。不断频发的自然灾害也在时刻提醒我们要重视模拟预报。已经有相当多研究表明,水动力模拟是一个尺度大、计算量惊人的问题。GPU的出现可以使得洪水的实时模拟变成一种可能。有学者使用粒子类的方法在GPU上实现了洪水的实时模拟,相较CPU上的实现速度快一个数量级。可以想象,结合更精准的天气预报,在GPU上我们能够预估未来几周的洪水灾害,郑州洪水灾害将再不会上演。
图 10 洪水模拟显示情况
图片来源:https://people.csail.mit.edu/kuiwu/GVDB_FLIP/
生物制药
大多数生物工艺都是在实验室规模、操作体积小的台式生物反应器中开发的。这些生物反应涉及溶液流动、蒸发、相变、搅拌、掺混等过程,科学家们一直希望能够精确模拟预测反应结果,以减少不必要的实验操作。这类问题的模拟尺度都很小,并且涉及很多参与的变量,常常需要计算各相流体界面处的情况,是典型的多相流问题。由于涉及多种流体,甚至包含颗粒流动,因此通常使用LBM方法对这种问题进行模拟。GPU的出现使得这种模拟的速度大大加快。例如,M-star CFD 基于GPU加速能够每秒钟模拟上亿级别粒子数,这将允许生物制药公司在几分钟内准确地建模复杂的生物反应器物理问题。在GPU加速的背景下, 药物开发周期将大大缩短,这将有助于我们战胜那些看起来无解的难题,拯救更多的生命。
图11 M-star 模拟搅拌过程
图片来源:M-star 官网
结语
随着模拟需求的增加,使用GPU加速CFD已经是大势所趋。科研领域关注的高精度格式的构建离不开GPU的加速,工程领域关注的大尺度模拟的实现也离不开GPU的支持。无论是高速可压缩流动,还是低速不可压缩流动,无论是大尺度简单边界流动,还是微尺度复杂边界流动,都能看到GPU加速的身影。新一代的CFD软件甚至从设计时就是基于GPU的架构实现的。在GPU这个好风的借力下,CFD的研究和发展将朝着更高精度更快速度的方向迈进,甚至改变很多行业的发展形态。上到星辰大海,下到城市交通,乃至医疗健康, GPU和CFD的结合必将给更多领域带来突破性的变革。