☰
CFD软件与GPU高性能计算
2026/10/23 2:50:40 网站建设 项目流程

CFD软件与GPU高性能计算

介绍

当前几乎所有的超算集群,计算节点配置都是异构形态,即除了装有数个CPU外,节点上还配置多张GPU卡。其中CPU比较适合逻辑复杂应用,GPU适合高吞吐的大数据并行应用,两者结合为HPC集群整体性能提升提供物质保障。

主流GPU厂家有NVIDIA和AMD, 其中NVIDIA公司产品最丰富,包括RTX游戏级GPU显卡(比如 RTX3080、RTX4090),和AI计算的高性能显卡(比如V100、A100、H100等)。NVIDIAN公司最新型号显卡H100,性能强劲,针对特定应用,一张H100 GPU相当于数十个计算节点的集群算力。

主流的GPU开发工具有CUDA和OpenCL, 其中CUDA生态非常成熟,全球估计有2500万左右的CUDA开发者,有非常多的基于CUDA的应用软件和函数功能库。

本报告主要内容包括GPU架构和编程开发介绍(主要关注CUDA)、CFD领域现有商业和开源软件的GPU应用情况梳理等。


GPU架构和开发简介

以NVIDIA的GPU和CUDA为例,说明GPU计算特点。

GPU架构

下图是GPU架构示意图。GPU由多个流处理器(SM)和多个显存单元组成,流处理器和显存控制单元通过高速网络链接。每个SM处理器含有多个计算单元(CUDA Core), 所以整体上GPU支持高吞吐量: 即同时可以发起执行几千个数学计算。GPU同时有高延时特点:数千个计算单元向存储单元加载和存储数据,必须分批排队进行,所以整体延时会很长。

每个流处理器(SM)相当于一个向量机, 多个SM通过网络链接存储资源(显存)组成GPU, 注意SM之间没有信息链接通道(和CPU不同,同一个主板上的CPU之间可以有类似QPI的互联机制)

GPU内部内存资源速度

下图是GPU内部资源访问速度示意图。相较CPU系统,因显存分布式架构,整体带宽非常高,可达CPU内存的50倍左右。同时GPU内部有L1,L2高速缓存,开发程序可利用这些高速稀缺资源提高计算效率。

GPU编程和执行模型

下图是GPU执行调度示意图。在编程模型方面,用户通过对并行计算进行逻辑划分,将计算域按Grid和Block进行抽象,Grid内的Block作为调度单元会被分发到流处理器上,Block内部线程可以共享流处理器上的资源(L1/Shared 缓存、寄存器文件、Tensor Cores等)。


GPU高性能计算函数库

下表列出一些常见的GPU计算函数库,包括厂家和开源的。开发中针对特定问题,使用合适的函数库,可在性能、稳定性、和可扩展性方面提供足够保证。熟悉库的功能和使用非常重要。

函数库说明备注
cuFFTFFT变换支持多精度、多GPU卡
cuBLASBLAS计算含部分扩展
cuSparse稀疏矩阵相关计算支持多精度、多GPU卡
cuSolverA x = b Ax=bAx=b方程求解支持稠密和稀疏矩阵,多GPU卡计算
cuRandomRNG随机数生成多种随机数分布
PETSc3.6版本之后支持CUDA和OpenCL部分迭代求解器和预处理器
HYPRE2.x版本后支持CUDA和OpenCL
AMGXNVIDIAN公司的AMG算法开源实现已经集成到Fluent& Star CCM
AMGCLAMG算法的OpenCL实现集成到PETSc和Hypre
MAGMABLAS+LAPACK+部分扩展支持部分稀疏矩阵和向量计算
Kokkos通用的高级异构开发中间层,对底层异构环境提供统一接口支持多核、多GPU卡、分布式计算
Trilinos关注点是FEM相关的计算,支持底层GPU加速FEM方法为主,含有多个功能模块

CFD计算中的GPU加速技术

针对大规模和超大规模CFD仿真,可在合适阶段使用GPU进行性能加速。CFD计算部分的核心是稀疏矩阵元计算,和稀疏矩阵方程求解。以OpenFOAM为例,有多种尝试将GPU计算引入进OpenFOAM内,实现性能加速,效果比较好的是rapidCFD和AMGX外部求解器。头部商业CFD软件Fluent和Star CCM都有开发GPU计算模块。下面两张表列出商业和开源软件使用GPU的信息


商用流体软件CPU,GPU异构模式

FluentStarCCM+
版本Ansys 2023 R1STAR-CCM+ 2306
GPU支持性单GPU
单个节点上多GPU
跨多节点的多GPU
单GPU
单个节点上多GPU
跨多节点的多GPU
CPU&GPU异构CPU/GPU remapping, CPU数量可多于GPU(便于读写)至少需要1个CPU核控制1个GPU卡
GPU卡商支持仅支持NVIDIA GPUs 2016年后型号, CUDA 11.0+仅支持NVIDIA GPUs Volta架构或更新版(V100,A100,H100)
平台支持Windows&Linux仅支持Linux
GPU Native支持大部分模型(支持辐射,化学反应,滑移网格)
求解器所有计算都部署在GPU上,支持后处理
部分模型支持(不支持多相流,自适应网格,辐射等)
所有控制方程离散,线性求解器,后处理
算例介绍[1]汽车外气动模拟,3亿网格
[2].多孔过滤器气流模拟, 700万网格
[1]飞机提升气流模拟-RANS模型,1.1亿网格
[2]汽车外气动模拟-LES模型,1.3亿网格
加速比[1]. 1xGPU A100 = 418xCPU core(Platimum 8380[1node=80cores])

[2]. 1xGPU A100 =265xCPU core(Gold 6242[1node=32cores])
[1]. 1xGPU A100 = 158xCPU cores
[2]. 1xGPU A100 = 312xCPU cores
参考文献1. Unleashing the Full Power of GPUs for Ansys Fluent, Part 1
2. Unleashing the Full Power of GPUs for Ansys Fluent, Part 2
3. Ansys Fluent GPU求解器2023 R1 新功能与案例
1. Fact Sheet on GPGPU Acceleration in Simcenter STAR-CCM+
2. STAR-CCM+ on CHPC
3. GPU acceleration for high-fidelity CFD
4. Faster aerospace aerodynamics on GPU: the High Lift CRM

新版商业软件已经完全向GPU靠拢,尤其在超大规模仿真中


开源软件
软件说明备注
rapidCFD-dev使用thrust库,实现了GPU上场的各种计算,和方程求解对特定问题加速效果很好,支持分布式计算,不足之处是仅支持少数应用
OpenFOAM使用petsc4foam外部求解器,结合AMGX库,提供大规模稀疏矩阵求解历史上有多种GPU加速尝试
form-extent-5.xCUDA稀疏矩阵迭代求解器(PCG、PBiCGStab等)

开源项目外接成熟的CUDA/GPU计算库很常见, 比如使用AMGX,AMGCL,MAGMA,Gingko等作为方程求解器


总结

针对大规模仿真计算,GPU无论从算力(数千个计算核),还是显存带宽上(典型带宽800GB左右)都对计算性能有非常大影响。计算越复杂,未知量越多,使用GPU对整体计算性能提高效果越显著。在性价比和耗能指标上,多卡多节点的GPU集群都远超过传统的CPU集群。

CFD计算,尤其是基于FVM方法的CFD属于内存密集类型计算,计算强度很低,主要利用了GPU的显存高带宽


参考资料、网络资源

  • Better Performance at Lower Occupancy Volkov 2010
  • Better Performance at Lower Occupancy解读
  • Benchmarking GPUs to Tune Dense Linear Algebra 2008
  • Maximizing Unified Memory Performance in CUDA
  • CUDA C Best Practices Guide: 9 Memory Optimization
  • Local Memory and Register Spilling 2011
  • Maximizing Unified Memory Performance in CUDA 2017
  • Improving GPU Memory Oversubscription Performance 2021
  • how to use thrust with unified memory?
  • A-Framework-for-Memory-Oversubscription-Management
  • Rodinia: Accelerating Compute-Intensive Applications with Accelerators

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询