交替隐式方法matlab求解,交替方向隐式CFD解法器的GPU并行计算及其优化

0引言GPU作为一类典型的众核计算加速部件,已被广泛应用于构建高性能计算系统[1]。充分发挥GPU性能,需要针对问题模型和计算方法特点,设计细粒度并行算法。对计算流体力学(ComputationalFluidDynamics,CFD)应用而言,其关键是针对CFD解法器设计GPU并行算法。CFD解法器主要分为显、隐格式两大类,其中隐式方法计算稳定性好,时间步长可取得较大[2]。典型的隐格式主要有上下对称高斯-赛德尔迭代(Lower-UpperSymmetricGauss-Seidel,LU-SGS)[3]、交替方向隐格式(AlternatingDirectionImplicit,ADI)[2]、PR-SGS(点松弛)[4]、Jacobi(雅克比)[5]等。多数隐式计算存在较强的数据依赖,难以设计实现适用于GPU特点的高效细粒度并行算法,从而限制了GPU加速部件在CFD领域的实际应用。目前国内外已有较多将CFD应用移植到GPU平台的相关研究,但主要以相对简单的显格式和隐式Jacobi迭代为主。例如Corrigan等[6]针对三维无粘可压流动欧拉方程求解,实现了基于非结构网格显式Runge-Kutta法的细粒度GPU高效并行算法,采用减少全局访存、冗余计算重叠和合理数据布局等优化手段提高实际访存带宽,取得了33.6倍的加速效果。Jespersen[7]实现了结构重叠网格CFD软件OVERFLOW的GPU并行,其中单精度Jacobi迭代部分的GPU并行性能相对单CPU核的加速比为2.5~3。李大力等[8]针对基于高阶精度格式(WeightedCompactNonlinearScheme,WCNS)的CFD数值模拟,整个Jacobi解法器的GPU并行计算相对于单CPU核的加速比达到9.8。比较而言,对数据依赖性较强的ADI解法器的GPU并行计算研究较少,Sakharnykh等对三维粘性不可压缩流的数值模拟,实现了ADI迭代的GPU并行算法,对单区128128128网格规模算例取得了9.5倍加速[9-11];但该工作仅限于ADI迭代部分,未将右端项计算、左端项数据准备等整个ADI解法器的GPU并行做统一考虑,也没有涉及GPU访存优化、计算与通信重叠、核函数分解等GPU性能优化方法。本文针对一个实际有限体积CFD应用,通过分析ADI解作者简介:邓亮(1989-),男,湖南娄底人,硕士研究生,CCF会员,主要研究方向:高性能计算、GPU并行加速、计算流体力学;徐传福(1980-),男,安徽六安人,助理研究员,博士,主要研究方向:高性能计算、并行计算机性能评测;刘巍(1980-),男,吉林人,博士,主要研究方向:计算流体力学、高性能计算;张理论(1975-),男,河南南阳人,研究员,博士,主要研究方向:高性能计算。法器的方法特点和计算流程,将其分为右端项计算和ADI迭代两大部分,结合GPU体系结构和统一计算架构(ComputeUnifiedDeviceArchitecture,CUDA)编程模型特点,将CFD应用中的GPU并行部分总结归纳两种计算过程:基于网格点的计算和基于网格线的计算,分别设计实现了高效细粒度GPU并行算法,并在此基础上提出了访存优化、核函数(kernel)分解等若干GPU性能优化策略。相对于CPU单核,采用天河-1A的TeslaM2050GPU,单区128128128结构网格CFD问题的无粘项、粘性项及ADI等核心计算部分的GPU并行分别取得了100.1、40.1和10.3倍的加速比,整个CFD解法器的GPU并行加速比达到17.3。1ADI离散

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值