结构网格自适应(SAMR)——一种高效的多尺度问题解决方案

背景与问题

网格对于数值模拟十分重要。基于网格的离散是数值计算中最主流的空间离散方式,而网格的类型和质量直接影响计算的精度和效率。一般情况下,网格尺寸越小,数值离散引入的截断误差越小。但除此以外,网格的正交性、斜率,甚至与物理场特征的一致性也都或多或少会影响数值计算的误差。另一方面,网格拓扑也决定了数值计算程序底层数据结构,从而很大程度上决定了计算的效率。例如,根据一般经验,结构化网格计算效率约是非结构化网格的3倍。当然,除了以上因素,网格生成的难易程度也是影响实践中网格选择的重要因素。一些常用的网格形式列举如下:

各种网格形式(素材来源于网络)

随着数值模拟精度和效率要求不断提高,对网格生成的效率,以及网格相关计算精度和计算效率方面提出了更多挑战。根据笔者视角来看,最典型问题包括网格生成效率低、多尺度特征捕捉和先进硬件平台适配等问题。

问题一:网格生成效率低

手动生成高质量网格一直是非常费时费力的工作。美国工业软件公司ENVENIO发布了一份针对仿真行业的调查报告《The CFD Survey》,该调查采访了28个国家的116位仿真从业者,涉及不同规模的公司。调查结果中显示(如下图),不论规模大小,所有的公司都认为在网格生成上花费了太长的时间。一方面,随着计算机算力提升,人力成本相对越来越昂贵。另一方面,数值模拟精度要求越来越高,所需网格数量逐渐增长到超过人工可控的规模。因此,网格生成的自动化、大规模化、并行化是网格技术发展的大势所趋。


结构网格自适应(SAMR)——一种高效的多尺度问题解决方案_第1张图片

仿真行业的调查结果[1]

问题二:多尺度特征捕捉

物理问题天然具有多尺度特性,精确捕捉关键跨尺度的特征对于实现高保真模拟至关重要。以流体力学为例,超声速空气流动中的激波、燃烧反应流中的火焰面、多相流中的两相界面以及几何曲率极大的区域等,都是对应场景中的关键跨尺度特征。因此,为了实现高保真模拟,同时保证计算量在可接受范围,对计算域进行精确而有针对性的网格加密是非常重要的。正如,流体力学模拟中经常对边界层和激波区域进行网格加密,结构力学模拟中经常对应力集中区域和断裂破坏点进行加密。不幸的是,在实际问题模拟中,大多数情况下无法预先判断跨尺度特征出现的区域和时机。在此情况下,必然要求网格具有跟随物理场变化而自适应加密的能力,进而引发网格加密规则等功能性问题,以及并行情况下动态负载均衡等性能问题。

结构网格自适应(SAMR)——一种高效的多尺度问题解决方案_第2张图片

广泛存在的多尺度流动现象(素材来源于网络)

问题三:先进处理器适配

诚然,计算机计算能力的提升,对数值计算的精度和效率提升具有决定性作用。但随着半导体工业进入后摩尔定律时代,处理器单核心性能提升受限,处理体系架构从单核转向多核,再进一步转向众核。对基于传统网格类型的数值计算程序,特别是非结构网格程序,体系架构的复杂化为其计算效率的发挥设置了诸多障碍。例如,复杂的编程模型要求对传统网格体系下的数据结构和算法进行重新设计,工作量十分繁巨。再如,众核处理器访存带宽提升相对浮点性能提升而言存在严重滞后,使得传统网格下的数值计算程序严重访存受限。

结构网格自适应(SAMR)——一种高效的多尺度问题解决方案_第3张图片

众核处理器(GPU)日益严峻的“访存墙”[5]

2 SAMR特点和优势

SAMR的全称是(block) Structured Adaptive Mesh Refinement (结构网格自适应)[2][3],是基于结构化网格块的自适应加密体系的通称。

提到SAMR就不得不提自适应加密技术。实际上,自适应加密技术AMR(Adaptive Mesh Refinement)与网格类型并没有绑定关系,例如在非结构网格中也可以通过网格重构进行自适应加密。在数值计算实践中,基于笛卡尔网格(直角坐标网格)自适应加密易于生成且可以适应复杂几何,因此这种技术组合十分常见。狭义的AMR通常就是指代笛卡尔网格自适应加密,下文中不再加以区分。

结构网格自适应(SAMR)——一种高效的多尺度问题解决方案_第4张图片

(笛卡尔)AMR网格示例(素材来源于网络)

SAMR是AMR的一个特例,其主要的特点即加密单元是结构化的网格块。SAMR目前主要采用两种加密结构:第一种是Tree-based树型结构[4],即网格按照空间多叉树递归进行加密(下图左);第二种是Patch-based多层分块结构,即按照多级网格叠加进行加密(下图右)。Tree-based加密数据结构更加优美,一般网格块具有相同的分辨率,因此在算法实现上更加整洁和高效。Patch-based加密区域更加灵活,例如不用受到树形加密规则的约束,以及可以针对加密区域大小使用大小不同的网格块。

结构网格自适应(SAMR)——一种高效的多尺度问题解决方案_第5张图片

                          Tree-based                                                 Patch-based

 (素材来源于网络)

SAMR网格具有局部结构化特点,同时能够通过高效的自适应能力捕捉多尺度特征。虽然笛卡尔形式网格在精确刻画边界上有一定不足,但是通过浸没边界法等非贴体网络边界模型也可以较好地实现边界条件。实际上,SAMR也完全可以使用曲线网格和贴体边界,只不过处理起来相对复杂一些。正因为SAMR相对其它网格有其独特性,在某些方面有其突出的优势,主要包括以下几个方面。

优势一:网格自动生成

主要采用笛卡尔网格的SAMR技术,网格结构比较简单,天然适合自动生成网格。几何特别复杂或没有水密性(存在空洞或毛刺)情况下,通过一定的处理,使用SAMR技术也能成功生成网格。这一特性,可以让前处理过程中的几何简化和几何清理工作量大大降低,从而进一步降低人力成本。在边界处,通过脱体网格在边界处加密和采用合适的边界模型,也可以得到较好的精度。

优势二:高效自适应加密

主要采用笛卡尔网格的SAMR,网格可以非常集约地集中在需要加密的位置,且自适应加密或粗化非常直接和便于实施。相对于传统结构化网格,可以更高效地利用网格,而不必按维度进行加密。相对于非结构网格,SAMR在保持局部结构化优势前提下,利用非常直接的等分和合并规则快速地实现网格重构,比非结构网格局部重构更为高效。

优势三:更高的计算效率

由于SAMR具有局部结构化特征,因此可以在适应复杂几何前提下,保证局部能够达到传统结构化网格的计算效率。更进一步,采用笛卡尔网格的SAMR,相对一般曲线结构网格,可以大大节约几何描述数据,对于缓解众核处理器内存带宽瓶颈十分有利。再次,SAMR可以在不影响数值计算精度的条件下,通过调整网格块分辨率,适应包括众核处理器在内的不同平台硬件配置(如缓存行长度、缓存大小等),以充分发挥硬件性能。在SAMR体系下,算法经过特殊设计也可以提升计算效率,例如在不同的加密层级采用不同的时间推进尺度,从而大大节约计算量。

结构网格自适应(SAMR)——一种高效的多尺度问题解决方案_第6张图片

SAMR适配神威·太湖之光处理器架构体系

3 我们的SAMR框架

神工坊团队发展了一套三维SAMR框架。该框架是一个基于octree[4]的多层分块(block)网格框架软件,并在此基础之上构建了多层分块数据容器。SAMR框架封装了八叉树多层分块网格的复杂算法和并行细节,只暴露简单的功能接口,基于这些接口可快速构建求解器。SAMR框架的主要功能与特性主要包括:复杂几何网格生成、网格自适应加密、动态逐层负载均衡、多层分块数据容器、迭代器与从核迭代器。

结构网格自适应(SAMR)——一种高效的多尺度问题解决方案_第7张图片SAMR框架网格切面示意图

功能特性一:网格自动生成

根据输入的几何模型(目前支持STL格式)文件,本框架可自动生成octree-block网格块。在此基础之上,根据octree-block网格块自动生成block内部网格。根据所采用的边界模型,可以选择性地对网格进行体素化,即对网格单元相对封闭几何表面的内外关系进行标记(对于非封闭几何(如平板),或者采用浸没边界条件,体素化过程并不是必须的)。

结构网格自适应(SAMR)——一种高效的多尺度问题解决方案_第8张图片

 STL几何模型

功能特性二:网格自适应

通过选取计算域物理场某个特征量作为加密依据,SAMR框架可以自动根据加密依据加密或粗化网格。例如在流动模拟中,选取速度梯度作为加密依据,速度梯度大则代表流场变化剧烈,通过加密该区域可以更精确解析流场。

跟随特征的网格自适应示意图

功能特性三:动态逐层负载均衡

自适应网格的计算负载必然是动态变化的,而SAMR体系上多采用多时间尺度推进算法,因此动态逐层负载均衡是保证效率必备的功能。区别于一般负载均衡策略,逐层特指各加密层级必须都是负载均衡的。下图中,左图呈现的是非逐层的负载均衡,右图呈现的是逐层负载均衡。本框架针对负载均衡功能,采用了优化的任务分割策略和数据传输策略,实现了高效的动态负载均衡。

结构网格自适应(SAMR)——一种高效的多尺度问题解决方案_第9张图片

一般负载均衡与逐层负载均衡策略的差异

功能特性四:友好开发接口

SAMR框架通过容器化封装,将网格、场和计算域等数据对象进行了容器化实现,屏蔽了底层复杂的众核并行与MPI分布式并行相关数据结构和算法。用户通过使用容器和容器提供的函数式编程接口(函数指针+迭代器),可以在SAMR框架上快速开发所需的物理模型或求解算法。

结构网格自适应(SAMR)——一种高效的多尺度问题解决方案_第10张图片

算子定义示意图

功能特性五:众核加速

众核是当前高性能处理器普遍采用的架构体系,SAMR框架设计充分考虑了众核二级并行加速需求。目前,SAMR框架在典型应用测试中,基于国产神威·太湖之光超级计算机,实现了核心热点的20倍左右众核加速。未来,SAMR框架将考虑兼容GPU(CUDA)等其它平台。

4 一个应用例子

为了充分验证当前框架的功能特性,我们选取了潜艇标模suboff绕流算例进行验证。该算例主要采用格子Boltzmann方法(LBM),基本调用了框架所有主要功能。

算例网格量为2亿,并行规模为2000进程,LBM求解器,Re为40000。网格最大层数 为8,自适应间隔 50。2亿网格在2000进程下的自动生成过程仅不到十分钟,初始网格如图,图中显示为网格块(每个网格块为10*10*10的网格)。

结构网格自适应(SAMR)——一种高效的多尺度问题解决方案_第11张图片

初始网格块

模拟结果如下图所示。可以看到suboff周围以及尾迹区被有效加密,若使用均匀网格,要达到同等的计算精度,网格量将达到百亿级别。目前SAMR框架的功能基本实现,下一步将进行功能完善和性能优化工作。

结构网格自适应(SAMR)——一种高效的多尺度问题解决方案_第12张图片

suboff流场局部

参考文献

[1] https://zhuanlan.zhihu.com/p/47164365 

[2] Dubey A , Almgren A , Bell J , et al. Asurvey of high level frameworks in block-structured adaptive mesh refinementpackages[J]. Journal of Parallel & Distributed Computing, 2014,74(12):3217-3227.

[3] Schornbaum F , U Rüde. Extreme-ScaleBlock-Structured Adaptive Mesh Refinement[J]. SIAM Journal on ScientificComputing, 2017, 40(3). 

[4] Burstedde C , Wilcox L C , Ghattas O .p4est : Scalable Algorithms for Parallel Adaptive Mesh Refinement on Forests ofOctrees[J]. Siam Journal on Scientific Computing, 2011, 33(3):1103-1133.

[5] https://medium.com/riselab/ai-and-memory-wall-2cb4265cb0b8

结构网格自适应(SAMR)——一种高效的多尺度问题解决方案_第13张图片

END

  扫 码 关注微信公众号

 

         扫 码 添 加 客 服 微 信      

——神工坊——

撰稿 | 高飞

修订 | 任虎

编辑 | 吴冰清、钱刘佳

审核 | 任虎

你可能感兴趣的:(linux,开源)