首页/文章/ 详情

基于非结构网格的仿真——太湖之光上的巨大挑战

1年前浏览2588
背 景

在过去数十年中非结构网格被广泛应用于工业仿真领域,例如著名商业CFD软件Fluent以及开源CFD软件OpenFOAM都采用了基于非结构网格的有限体积法,而大多数结构分析软件例如Abaqus、Nastran等都采用了基于非结构网格的有限元法。非结构网格的流行不是没有原因的。几乎所有的工程几何结构都是非常复杂的,结构化网格虽然在精度和收敛性等方面有优势,但复杂几何高质量结构化网格生成的难度和效率却限制了其通用性。相反,非结构网格以其生成快速和适应复杂几何的特性,成为工业仿真领域的主流。

图片图片

结构化网格(上)与非结构化网格(下)

挑 战

由于数据结构的原因,非结构网格相比于结构化网格,其算法计算访存比更低,同时访存更加离散。另一方面,随着超级计算机架构演变,相较浮点性能的大幅提升,内存带宽日益成为瓶颈,让非结构网格仿真计算更加受限。架构演变也催生了多样的编程模型和加速库。在太湖之光等先进超级计算机上,对非结构网格算法进行优化加速,往往十分复杂且开发量巨大。这四方面的问题,让非结构网格仿真计算在太湖之光上的性能,成为一个巨大的挑战。

图片

太湖之光上非结构网格“四大问题

离散访存:非结构网格不同于结构化网格,其相关数据在内存中无法以规则的方式存储,导致访问具有分散和不连续的特性。换句话说,在仿真计算中,我们需要进行大量的临近插值积分,但是非结构网格单元的邻居却无法像结构网格一样连续规则地在内存中找到。离散访存的结果,就是让连续获取数据中有大量无效数据,或者只能跳跃地获取数据片段,从而损失有效的内存带宽。


低计算密度:非结构网格拓扑复杂,同时仿真对数值稳定性要求较高。因此,在非结构网格上进行仿真计算,一般采用紧致的数值格式,其阶数相对较低。简单来理解,就是在进行插值积分时,用尽量少的网格单元邻居,邻居的邻居以及更远的临近关系基本不考虑。这样一来,在网格单元数据上执行的计算操作就少了。因此,非结构网格上的算法往往具有较低的计算访存比。以四面体网格有限体积离散的稀疏矩阵向量乘为例,其访存与计算之比仅为1/12浮点操作/字节。

图片

近年芯片浮点性能和内存带宽增长曲线[1]


内存带宽瓶颈:限于单个核心性能提升的瓶颈,高性能计算机处理器架构由多核全面转向异构众核。例如,“神威·太湖之光”超级计算机就是采用纯国产异构众核芯片研制的千万核心计算系统。但是近年来,高性能处理器的浮点性能保持近似对数增长的同时,内存带宽却呈现出极为缓慢的增长态势。以太湖之光sw26010芯片为例,目前的浮点性能-内存带宽比,已高达20浮点操作/字节。这意味着1/12浮点操作/字节计算密度的稀疏矩阵向量乘,在sw26010芯片内存带宽满载时,仅能发挥出0.4%的理论浮点性能。

图片

算法与硬件间失衡的性能天平


巨量开发:太湖之光绝大部分性能来自异构众核芯片sw26010上的8x8从核阵列,因此利用好从核是发挥太湖之光性能的核心。然而,以数十行代码的稀疏矩阵向量乘为例,直接利用在太湖之光上的基础加速库进行众核加速开发,如欲达到较为理想的性能,一般需要上千行代码和大量调试。对于复杂的工业仿真软件来说,这样的开发量是无法接受的。以开源CFD软件OpenFOAM为例,其代码量高达数百万行,热点核心遍布。如果全面采用手动加速开发,工作量无疑等同于再开发一个OpenFOAM。



解决之法---UNAT

UNAT全称为“UNstructured Acceleration Toolkit”,是在太湖之光超级计算机进行非结构网格仿真计算加速开发的工具套件。UNAT具有友好接口,方便开发者快速在太湖之光上进行加速开发。UNAT底层实现了自动的数据结构优化,自动的并行遍历算法,用户只需关心具体操作实现,并免于大量调试。这些都大大缓解了,太湖之光上非结构网格计算加速的巨量开发问题和离散访存问题。UNAT更是通过一套耦合算子机制,将热点进行分解融合,采用循环时空二维分解,跨循环数据复用等策略,有效缓解了非结构网格计算密度低的问题和硬件上的内存带宽瓶颈。其中原理较为复杂,具体可以参考文末论文[2](见文章底部“阅读原文”)。

图片

UNAT原理图

下面通过几个典型应用,看一下UNAT的应用效果。

稀疏矩阵向量乘:用COO格式稀疏矩阵向量乘进行测试。随着矩阵元素维度变化,UNAT最高加速比和单核组Flops分别达到近27 倍和3.5 GFlops(0.46%理论性能)。与手工优化的代码相比,UNAT API实现了其大约70%的性能。考虑到兼容性和通用性带来的额外开销,其效果是相当可观的。

图片

COO稀疏矩阵向量乘加速比及浮点性能

CFD求解器加速:一个开发者仅用1周时间,采用UNAT对其中主要6个热点核心进行了加速开发。热点核心众核加速比平均在19倍左右,整体加速也达到了10倍。

图片

某CFD求解器优化加速

OpenFOAM风资源评估应用:利用UNAT加速工具,我们对OpenFOAM某风资源评估应用大部分热点进行了加速,众核加速比在8-15倍之间。由于UNAT卓越贡献,最终该应用在太湖之光上取得了整体4倍加速。

图片


图片

OpenFOAM风资源评估应用优化加速

燃烧仿真应用:利用UNAT加速工具,单个开发者 2周内完成了15万行某燃烧仿真程序优化,使得该程序最终在太湖之光上取得了整体5.4倍加速。由于性能提升,该软件可使用10亿级网格,在合理的时间内,进行航空发动机全环燃烧室高保真数值模拟。

图片

图片
图片
图片

燃烧仿真应用优化加速

(本文作者:任虎)

参考文献:

[1]  Vincent, P., Witherden, F., Vermeire, B., Park, J. S., & Iyer, A. (2016). Towards Green Aviation with Python at Petascale. SC16: International Conference for High Performance Computing, Networking, Storage and Analysis. doi:10.1109/sc.2016.1

[2] Liu, H. , et al. "UNAT: UNstructured Acceleration Toolkit on SW26010 many-core processor." Engineering Computations: Int J for Computer-Aided Engineering (2020).

网格处理离散元OpenFOAM
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2023-01-13
最近编辑:1年前
神工坊(高性能仿真)
神工坊,提供高性能仿真解决方案...
获赞 188粉丝 46文章 82课程 3
点赞
收藏
作者推荐

极大规模整车气动数值模拟——构筑数字风洞基础框架

摘要本应用基于神威·太湖之光超级计算机与自研自适应加密网格框架(SAMR[1])完成了某真实汽车模型的气动仿真数值模拟。为提高计算精度与效率,采用了8层网格加密,网格规模约10亿量级、并行规模在50万核并行规模。流场数值求解器则是采用了自主研发的非定常格子玻尔兹曼流场求解器(LBM[2],LatticeBoltzmannMethod)与采用简单的Smagorinsky湍流模型。所计算的Ahmed标准车模阻力系数与实验高度吻合,具备了工程应用能力。01背景在汽车设计和改型中,数值计算和风洞试验是评估气动性能的两大手段。风洞试验模型制作和试验实施的周期长,成本高,因此如何减少风洞实验次数,提高汽车设计效率,一直是汽车设计及空气动力学领域研究的重点。数字风洞即风洞的数字化,是遵循数字孪生理念,通过高保真数值计算、机器学习等技术手段,将物理风洞试验设施和试验过程1:1还原到数字世界,从而具备实施高置信数字风洞试验的能力。通过数字风洞试验,可以取代部分早期风洞试验车次和部分风洞试验,从而缓解风洞试验成本高、周期长与旺盛试验需求之间的矛盾。国家超级计算无锡中心神工坊团队,依托我国最先进的国产自主超级计算机神威·太湖之光,自主研制了结构网格自适应框架(SAMR[1])与格子玻尔兹曼流场求解器(LBM[2],LatticeBoltzmannMethod),形成了自主数值风洞软硬件基础框架,可以高效地为汽车气动仿真赋能。02方法下面对40m/s(或144km/h)速度下的Ahmed标准汽车模型(25°后背角)与某实车模型进行数值模拟。1)网格生成:采用国家超级计算无锡中心自主开发的结构网格自适应加密框架,可对汽车中复杂几何表面以及流场变化剧烈的地方进行自动加密。2)流场求解器:采用国家超级计算无锡中心自主开发的基于多层加密格子玻尔兹曼方法的流场求解器,具有并行效率高且易于处理复杂几何等优点。3)湍流模型:选用Smagorinsky模型,它是一种简单的大涡模拟模型,且易于在格子玻尔兹曼方法中实现。03结果汽车模拟验证1)网格规模:网格规模6.2亿,采用了8层网格加密。并行规模约13万核(含主核与从核)。注:这里采用6亿网格主要是为了验证大规模计算能力,在小规模网格的算例中我们也得到了与实验基本吻合的阻力系数。2)速度场:图1:Ahmed车模瞬时速度云图。后背角为25°,来流速度40m/s。图1中给出了流场完全发展后的速度场瞬态云图,可以看到车模表面进行了更为精细的网格加密。3)阻力系数:图2:Ahmed车模阻力系数随时间的变化。后背角为25°,来流速度40m/s。从图2中可以看到,我们的计算结果与实验结果吻合的很好。表1给出了我们的阻力系数与Fluent、PowerFlow等商业软件的比较,可以看到我们的计算误差最小。同时也可以看出,PowerFlow与我们的结果明显好于Fluent计算结果,这也间接说明LBM方法在车模计算中是优于FVM方法的。表1:Ahmed车模阻力系数比较。后背角为25°,来流速度40m/s。实车仿真1)网格规模:网格规模6.7亿,采用了8层网格加密,其中汽车表面附近做了3层网格加密,能更好的捕捉汽车几何特征以及汽车前后缘的大速度梯度等特征。并行规模约46.8万核(含主核与从核)。2)速度场:图3:某实车模型瞬时速度云图。来流速度40m/s。图3中给出了流场完全发展后的速度场瞬态云图,可以看到车模表面进行了更为精细的网格加密。3)阻力系数:图4:某实车模型阻力系数随时间的变化。来流速度40m/s。图4中可以看到,流场完全发展后,某实车模型阻力系数约为0.258。04特点特点一:结构网格自适应:网格自适应加密是本应用的主要特点之一。通过网格自适应,可以对几何外形复杂的区域以及流场变化剧烈的地方着重加密。在我们的结构网格自适应加密框架下,只需要读入汽车几何外形信息,会自动在外形复杂以及流场变化剧烈区域自动加密(如图5自适应网格效果图),在提高计算精度的同时大大节省了人力成本。另外值得一提的是,我们生成的网格是分布式的,这非常适合大规模并行计算。图5某车模算例中的网格自适应效果图特点二:众核加速二级并行:本应用的另一个特色是大规模并行效率高。为了适配国产神威太湖之光超级计算机,本数值求解体系从设计之初就融入了主从核异构并行体系,在进行流场数值求解时能充分发挥异构计算机的主核与从核性能。例如,本次汽车模拟算例就采用了7200核组(包含7200*64=46.08万从核)。此外通过测试,发现7200核组相对3600核组,算例获得了几乎翻倍的性能,表明当前的算例大规模并行效率非常的优异。特点三:求解器代码精简:求解器代码精简也是本应用的主要特色之一。此次求解器采用的LBM流场求解器只涉及几百行代码。由于求解器是基于我们自研的SAMR框架,该框架底层封装了异构并行,对离散层开放了“迭代器+算子”接口,用户只需要设计自己的求解器算子,代入对应的迭代器(空间遍历器)即可完成空间迭代计算。这里算子结构往往十分精简(如图6,复杂的空间遍历与异构并行都被封装到迭代器内部,因而基于这种模式开发的求解器代码往往非常精简易用。)图6:格子玻尔兹曼流场求解器碰撞算子示意图参考文献[1]https://mp.weixin.qq.com/s/Yb4Ez3P1LWVrk_h51oQQ3Q[2]KrügerT,KusumaatmajaH,KuzminA,etal.ThelatticeBoltzmannmethod:Principlesandpractice[M].Switzerland:Springer,2017[3]FaresE.UnsteadyflowsimulationoftheAhmedreferencebodyusingalatticeBoltzmannapproach.Computers&Fluids35(2006)940–950[4]https://www.youtube.com/watch?v=Dzji-kG11Ys&list=PLMLR0Z92Et3wn1zk8q20ZMDsYUecZ6zLp&index=5[5]http://cfd.mace.manchester.ac.uk/ercoftac/doku.php?id=cases:case082END--神工坊--撰稿|刘明修订|任虎编辑|顾强审核|任虎

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