背 景

在过去数十年中非结构网格被广泛应用于工业仿真领域,例如著名商业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).

了解更多干货,欢迎关注神工坊!

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

  1. matlab 非结构网格,基于MATLAB的非结构网格生成器和浅水问题的数值模拟

    文章编号:1000-4874(2009)-04-0398-08 基于 MATLAB 的非结构网格生成器 和浅水问题的数值模拟* 蒋艳群,段雅丽, 刘儒勋,张韵华 (中国科学技术大学数学系,安徽合肥,2 ...

  2. ANSYS FLUENT三维非结构网格数值计算及后处理——教室吊顶空调送回风

    读入网格 Step1.打开FLUENT 双击FLUENT软件. Step2.定义求解器参数 在Dimension栏选择3D求解器,其余保持默认设置,单击OK按钮. Step3.读入网格 选择File→ ...

  3. 基于非结构化的数据管理探究

    摘要 如何对海量的非结构化数据进行管理并从中挖掘更大的价值,决定了全球经济下半场的走向.结合全球数据生产与存储现状以及数据管理理论和技术的发展情况,对非结构化数据管理的成因.管理方法和非结构化数据管理 ...

  4. ICEM 二维非结构网格添加边界层

    1. 导入几何后,创建材料点. 2. 将需要增加边界层的线.以及线所在的面,分别定义到不同的parts中.假设取名分别叫做line和surface. 3. 设置面网格尺寸.线尺寸(如果需要的话),照常 ...

  5. 使用ICEM绘制非结构网格时,如何提高网格质量?【转载】

    作者:杨淑娟 链接:https://www.zhihu.com/question/20851390/answer/26152732 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载 ...

  6. ANSYS FLUENT三维非结构网格数值计算及后处理——教室全新风送风与排风

    上海气象参数 夏季室外空调计算干球温度:34.4℃ 夏季室外空调计算湿球温度:28.2℃ 夏季室外空调计算日平均温度:30.4℃ 冬季室外空调计算干球温度:-4℃ 冬季室外空调计算相对湿度:75% 冬 ...

  7. 基于神威·太湖之光的超大规模图计算系统“神图” 2019-12-16 14:10:29 作者:Fma

    林恒博士拥有清华大学计算机科学博士学位(2018 年获得)和中山大学数学专业学士学位(2011 年获得),费马科技公司联合创始人.其研究兴趣包括异构体系结构.图计算和大规模计算.他基于神威·太湖之光开 ...

  8. 神威OpenFOAM——最流行的开源CFD软件与神威·太湖之光的珠联璧合

    背景 OpenFOAM(Open-source Field Operation And Manipulation,开源的场运算与操作)是一款基于C++编写的面向对象CFD类库,被广泛用于流体.传热.分 ...

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

    背景与问题 网格对于数值模拟十分重要.基于网格的离散是数值计算中最主流的空间离散方式,而网格的类型和质量直接影响计算的精度和效率.一般情况下,网格尺寸越小,数值离散引入的截断误差越小.但除此以外,网格 ...

  10. 用国产芯片的神威太湖之光究竟厉害在哪?

    6月19日,在德国法兰克福举行的全球超级计算大会公布新一期全球超级计算机500强榜单中,由国家并行计算机工程技术研究中心使用中国自主芯片研制的"神威·太湖之光"第三次出现在全球超算 ...

最新文章

  1. tensorflow从入门到精通100讲(一)-如何申明一个tensor,Tensorflow中最重要的基本操作
  2. ASP.NET 开发实践--性能与缓存
  3. Mysql数据库---约束类型_mysql数据库的数据类型及约束
  4. Vue检测当前是否处于mock模式
  5. C++ vector
  6. 自学大数据前,零基础,三个月,找到一份测试工作
  7. javascript 函数,数组,document.write()
  8. MySQL防止重复插入记录SQL
  9. RTEC机器人_广东省中小学电脑机器人活动获奖结果公布
  10. beyong Compare4解决30天的评估期结束
  11. 【Oracle】更新数据表字段值
  12. Spring-DI详解
  13. 场景编辑器开发第四天,继续迭代绘画功能
  14. 帆软报表动态数据源插件2.0使用教程
  15. 快速学习-Saturn创建作业
  16. 在C++Builder中可以利用FireMonkey的函数实现RGB与HSL之间的转换
  17. 关于gameonline.info
  18. Windows系统下完全隐藏桌面窗口
  19. AZKABAN使用全方位总结
  20. 动态批量初始化CLOB字段

热门文章

  1. “我与女明星只差一个毛戈平”,毛戈平与上市又差什么?
  2. 3315 时空跳跃者的魔法(一个超级恶心的题目)
  3. ctrlaltdel命令手册
  4. 程序在单片机里是如何运行的?
  5. (Cys-RGD)包被CdTe量子|3-巯基丙酸(MPA)包被近红外发光CdTe量子
  6. pandas concat “InvalidIndexError: Reindexing only valid with uniquely valued Index objects“
  7. 网吧服务器怎么加无线路由器,网吧路由器怎么设置 网吧路由器设置方法【详细步骤】...
  8. 数学建模参赛技巧 --- 论文撰写
  9. 论文阅读:Seg4Reg+: Consistency Learning Between Spine Segmentation and Cobb Angle Regression
  10. 外文版计算机科学期刊,计算机期刊大全(国外英文资料).doc