交替方向隐式CFD解法器GPU并行计算及其优化.docVIP

交替方向隐式CFD解法器GPU并行计算及其优化.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
交替方向隐式CFD解法器GPU并行计算及其优化

交替方向隐式CFD解法器GPU并行计算及其优化   摘 要:   交替方向隐格式(ADI)是常见的偏微分方程离散格式之一,目前对ADI格式在计算流体力学(CFD)实际应用中的GPU并行工作开展较少。从一个有限体积CFD应用出发,通过分析ADI解法器的特点和计算流程,基于统一计算架构(CUDA)编程模型设计了基于网格点与网格线的两类细粒度GPU并行算法,讨论了若干性能优化方法。在天河1A系统上,采用128×128×128网格规模的单区结构网格算例,无粘项、粘性项及ADI迭代计算的GPU并行性能相对于单CPU核,分别取得了100.1、40.1和10.3倍的加速比,整体ADI CFD解法器的GPU并行加速比为17.3。   关键词:交替方向隐式;计算流体力学解法器;结构网格;GPU并行   0 引言   GPU作为一类典型的众核计算加速部件,已被广泛应用于构建高性能计算系统[1]。充分发挥GPU性能,需要针对问题模型和计算方法特点,设计细粒度并行算法。对计算流体力学(Computational Fluid Dynamics, CFD)应用而言,其关键是针对CFD解法器设计GPU并行算法。CFD解法器主要分为显、隐格式两大类,其中隐式方法计算稳定性好,时间步长可取得较大[2]。典型的隐格式主要有上下对称高斯赛德尔迭代(LowerUpper Symmetric GaussSeidel ,LUSGS)[3]、交替方向隐格式(Alternating Direction Implicit,ADI)[2]、PRSGS(点松弛)[4]、Jacobi(雅克比)[5]等。多数隐式计算存在较强的数据依赖,难以设计实现适用于GPU特点的高效细粒度并行算法,从而限制了GPU加速部件在CFD领域的实际应用。   目前国内外已有较多将CFD应用移植到GPU平台的相关研究,但主要以相对简单的显格式和隐式Jacobi迭代为主。例如Corrigan等[6]针对三维无粘可压流动欧拉方程求解,实现了基于非结构网格显式RungeKutta法的细粒度GPU高效并行算法,采用减少全局访存、冗余计算重叠和合理数据布局等优化手段提高实际访存带宽,取得了33.6倍的加速效果。Jespersen[7]实现了结构重叠网格CFD软件――OVERFLOW的GPU并行,其中单精度Jacobi迭代部分的GPU并行性能相对单CPU核的加速比为2.5~3。李大力等[8]针对基于高阶精度格式(Weighted Compact Nonlinear Scheme,WCNS)的CFD数值模拟,整个Jacobi解法器的GPU并行计算相对于单CPU核的加速比达到9.8。比较而言,对数据依赖性较强的ADI解法器的GPU并行计算研究较少, Sakharnykh等对三维粘性不可压缩流的数值模拟,实现了ADI迭代的GPU并行算法,对单区128×128×128网格规模算例取得了9.5倍加速[9-11];但该工作仅限于ADI迭代部分,未将右端项计算、左端项数据准备等整个ADI解法器的GPU并行做统一考虑,也没有涉及GPU访存优化、计算与通信重叠、核函数分解等GPU性能优化方法。   本文针对一个实际有限体积CFD应用,通过分析ADI解法器的方法特点和计算流程,将其分为右端项计算和ADI迭代两大部分,结合GPU体系结构和统一计算架构(Compute Unified Device Architecture,CUDA)编程模型特点,将CFD应用中的GPU并行部分总结归纳两种计算过程:基于网格点的计算和基于网格线的计算,分别设计实现了高效细粒度GPU并行算法,并在此基础上提出了访存优化、核函数(kernel)分解等若干GPU性能优化策略。相对于CPU单核,采用天河1A的Tesla M2050 GPU,单区128×128×128结构网格CFD问题的无粘项、粘性项及ADI等核心计算部分的GPU并行分别取得了100.1、40.1和10.3倍的加速比,整个CFD解法器的GPU并行加速比达到17.3。   1 ADI离散方法   三维定常可压缩NS方程   Qt+(F-Fv)x+(G-Gv)y+(H-Hv)z=0(1)   式中:Q为守恒变矢量;F、G、H为无粘失通量;Fv、Gv、Hv为粘性失通量[2]。方程组采用ADI格式离散。对无粘项、粘性项分别采用隐式、显式格式空间离散,时间一阶离散,得到:   2 ADI解法器的GPU并行算法   CFD并行计算主要采用的是基于区域分解的数据剖分,利用消息传递通信实现任务间并行或利用共享存储实现线程间并行[12]。在物理模型和数值算法确定的条件下,在传统同构CPU平台上的CFD计算性能受限于问题并行规模、CPU浮点计算和访存性能、系统通信能力以及负载平衡(网格剖分)等诸多因素[13]。在GPU作

文档评论(0)

317960162 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档