下冰雹 · 2023年07月27日

商汤 HPC 团队携手 DeepModeling 社区,探索燃烧CFD稀疏矩阵组装的GPU加速

商汤高性能计算 (HPC) 团队秉承开源之心,与北京科学智能研究院 (AI for Science Institute, Beijing)DeepFlame团队合作,助力 DeepModeling 社区打造整合下一代异构超级计算和人工智能加速基础设施(如GPU和FPGA)的燃烧流体力学计算开源软件。

前言

时间来到2023年的夏天,与天气一样火热的是AI带给各行各业前所未有的颠覆与革新。如何让AI在工业领域和科学研究场景中发挥作用,成为了新的探索趋势。DeepFlame致力解决的核心科学场景,燃烧反应流体力学,是长期以来宏观尺度科学计算的痛点领域。虽然各类商业软件进行了不少功能上的开发与尝试,但目前的计算精度和效率都比较低,还难以达到工业应用场景的要求。

DeepFlame团队立足于DeepModeling社区已经形成的开源协同文化,建设服务于燃烧反应流体科学计算社区的开源平台。DeepFlame项目采用「机器学习+物理建模+高性能计算」的全新研究范式,基于OpenFOAM、Cantera、Torch等开源平台,结合异构并行与AI加速器等新一代算力基础设施,旨在建设高精度、高效率、简单易用、覆盖面广的燃烧反应流的数值模拟程序。

商汤科技HPC团队多年来深耕计算优化技术,深入研究多种底层硬件架构,自研高性能神经网络算子库、图像处理算子库和代数计算库等核心计算引擎,并面向社区开源了高性能深度学习推理平台OpenPPL,以及端到端部署工具集。

此次,DeepFlame团队携手商汤科技HPC团队,共同探索燃烧反应流体力学中有限体积法求解Navier-Stokes方程的全流程GPU加速。

Navier-Stokes方程求解的提效探索

Navier-Stokes方程求解是燃烧反应流体力学问题的重要环节,主要包括稀疏矩阵构造和线性系统求解两个部分。求解线性系统在科学计算中历来备受关注,产生了许多第三方计算库帮助加速求解过程,比如cuSolver、Hypre等。OpenFoam社区也提出了AmgXWrapper,从而可以在OpenFOAM中使用英伟达的GPU加速求解库AmgX。DeepFlame v1.1版本就是在此基础上运用了AmgX来求解偏微分方程。

然而,在诸多燃烧反应流体力学问题的实际测试中,我们观察到,花在稀疏矩阵构造上的时间与花在线性系统求解上的时间相当,甚至更长。但是目前业界还没有良好可用的加速稀疏矩阵组装的解决方案。所以DeepFlame团队联合商汤科技HPC团队,决定研究这个课题。

GPU加速稀疏矩阵构造的提效实现

为了实现Navier-Stokes方程求解的提效,开发团队采用了GPU加速稀疏矩阵构造的技术方案。GPU加速稀疏矩阵构造的难点来自于两个方面。一方面,OpenFOAM是一个历史悠久的、数百万行代码的、具有高度封装的「套娃」结构的软件包;另一方面,GPU架构和CUDA编程要求在数据组织、计算组织上做出很多必要的调整,才能有效地利用GPU的并行特性。

作为主体工作的基础,DeepFlame团队首先完成了对OpenFOAM的瘦身,尽可能地减少对于不相关功能库的依赖,同时保证源码结构的完整性(便于将来版本迁移)。然后,在OpenFOAM众多的插值格式、边界条件、校正处理中,我们选取了最常用的线性插值格式,结合zeroGradient和fixedValue的边界条件,进行OpenFOAM源码分析及GPU加速探索。

具体来说,我们构造了新的GPU侧数据结构,来储存网格体心、面心、以及边界上的物理量;通过必要的数据重排,解决线程级并行导致的写冲突;利用CUDA kernel在GPU上重新实现了OpenFOAM的fvm和fvc的各项离散函数,完成系数矩阵和右端项的构造。此外,我们还通过提升各控制方程之间、各时间步之间的数据重用,降低因数据拷贝导致的性能损失。

成果展示

本版本完成了低马赫数反应流求解器的密度方程(rhoEqn)、动量方程(UEqn)、组分方程(YEqn)以及能量方程(EEqn)的GPU加速。

在209万网格(128128128)的三维泰勒格林涡火焰模拟中,见图(a),测得矩阵组装速度平均提高了18倍,四个方程的整体求解平均加速13.5倍。在26万网格(646464)的较小计算规模的场景中,见图(b),加速相对略低,矩阵组装速度平均提高了13倍,四个方程的整体求解加速8.68倍。

image.png

下图显示了整个PDE求解系统的整体加速情况。在未将压力方程(pEqn)和热校正(hermo correction)移植到GPU的情况下,系统的整体加速仍然可以达到二至三倍。

image.png

未来我们会做什么

未来我们会进行以下工作:

  1. 进一步优化性能和内存管理。
  2. 开发多gpu并行版本。
  3. 把pEqn和热物性参数更新函数移植到GPU上,并通过添加更多的插值格式、边界条件、校正处理来完善系统功能。
  4. 进行代码封装,以便于OpenFOAM社区使用。

结语

在 HPC 与 AI 飞速发展的今天,理论计算有望真正突破学科边界,解决接近现实世界的复杂问题。

未来,商汤 HPC 团队将会继续携手 DeepModeling社区,打造适用于科学计算的开源工具,推动科学计算工具工程化,这也有助于持续提升计算性能、软件开发效率以及软件的适用性。欢迎持续关注!

DeepFlame 项目介绍:

https://mp.weixin.qq.com/s/RrB1CVvTCBppDMBzb0vwiQ

DeepFlame 在 DeepModeling 社区中的 GitHub 仓库地址:

https://github.com/deepmodeling/deepflame-dev

DeepFlame 使用文档:

https://deepflame.deepmodeling.com/

作者:高性能计算
文章来源:OpenPPL

推荐阅读

更多IC设计干货请关注IC设计专栏。
迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。
推荐阅读
关注数
19610
内容数
1303
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息