高性能计算 (HPC) 一直是加速 CFD 仿真的关键推动因素之一,GPU技术的发展对CFD的意义是革命性的。
其实在CFD领域利用GPU并不是一个新概念, 使用GPU加速CFD求解已经有一段时间了(Ansys Fluent于2014年提供)。
Ansys Fluent 在2021 R1版本开始提供了原生的GPU求解器,可完全在 GPU 上运行求解器代码,避免了 CPU 和 GPU 之间交换数据的开销以充分发挥 GPU 的潜力,与 CPU求解器相比,GPU求解器可以提高性能、降低硬件成本及功耗。
例如对于一个上亿网格的车辆外部空气动力学仿真而言,GPU求解器可以将求解效率提升5倍,如果使用多个GPU甚至可以提升至30倍。
同等性能的情况下,GPU相较于CPU,能耗可以降低4倍甚至更多。
众所周知,GPU相较于CPU在数值精度和算法稳定性上还存在一定的差距,但Fluent的GPU求解器有相当高的精度,例如对于经典的球体扰流问题,其阻力系数误差仅为-0.252%。
特别是对于工程应用,如果能通过GPU求解器在每项任务上节约几小时,那么全年下来节约的时间会十分可观
支持的GPU和驱动程序
Fluent GPU求解器基于NVIDIA开发的CUDA API实现并行计算,因此只支持NVIDIA的GPU。
支持的NVIDIA GPU包括NVIDIA Tesla和Quadro系列,不同的GPU对操作系统也有一定的要求(64位版本的Linux或Windows)。
Fluent在2024 R1版本开始测试支持AMD gpu,包括AMD MI250
Nvidia GPU的驱动程序必须兼容CUDA 11.0或更新版本。
在cmd或终端输入nvidia-smi
,可以检查GPU型号、驱动版本、CUDA版本等信息。
启用Fluent GPU求解器
启用Fluent的GPU求解器有两种方法:
- 使用Fluent启动器
- 使用命令行
使用Fluent启动器
如图所示,GPU求解器仅支持企业级许可,切换至企业级许可后勾选本地GPU求解器选项即可。
如果有多个GPU可以分别进行控制,但指定的CPU进程数量必须大于GPU数。
通过命令行启动
对于Windows,在从命令行启动Fluent GPU求解器之前,通过执行位于Ansys Fluent目录中的setenv.exe程序(例如,c: \ program Files\ Ansys Inc\v232\ Fluent \ntbin\win64),确保到主目录的路径在命令搜索路径环境变量中。
在命令行键入以下命令即可开启GPU求解器
单精度
fluent 3d -tn -gpu
双精度
fluent 3ddp -tn -gpu
GPU求解器支持的功能
以下是GPU求解器支持的主要功能
基本:
-
仅支持3D几何
-
支持单精度/双精度
-
支持可压缩流动
-
支持共轭传热
湍流模型:
- Laminar
- Standard 、Realizable k-epsilon
- k-omega GEKO 、 k-omega SST
- Large Eddy Simulation (LES)
求解:
- 支持基于压力的求解器
- 支持绝对速度形式
- 支持瞬态和稳态计算
边界条件:
- 支持壁面、对称、平移周期对称、旋转周期对称等边界条件。
- 支持多孔介质
- 支持动网格,旋转坐标
- 支持源项
- 支持组分输运
GPU求解器的局限性
下面包含了当前Fluent GPU(截止至2024R1)求解器的限制:
- GPU求解器在Ansys Workbench环境中不可用。
- 不支持圆柱坐标系中的Profiles,包括用于旋流入口的Profiles。
- 必须在初始化或求解之前定义监视器(Monitors)和报告定义(Report definitions)。此外,如果求解器设置从稳定更改为瞬态,则可能需要重新定义报告定义。
- 当检测固定壁面的动压(Dynamic Pressure)时,结果会为0。但是,使用报告计算的结果将显示一个不正确的非零值。
- GPU求解器支持静态表达式(Static expressions),但不推荐使用。
- 使用 GPU 求解器模拟超音速流动时,压力入口、速度入口和压力出口处的流动将无法正确离散,在这些边界类型处的流动将被视为亚音速流动。
- 在对不可压缩或不可压缩理想气体材料进行能量方程建模时,基于cpu求解器和GPU求解器计算的温度场可能不同。这是由于两个求解器在计算不可压缩流时使用了不同的能量公式(总能量和热能)。、
- 当使用二阶瞬态重新启动模拟时,求解器在重新启动后的第一个时间步使用一阶向后欧拉格式。
GPU求解器的显存占用
Fluent GPU求解器的显存消耗取决于案例的大小、网格类型、启用的模型、精度和某些求解器设置。
相较于内存,显存往往更少且难以扩展,因此在计算前需要对算例的显存占用进行估计。
通过以下几点可以帮助估算显存的占用情况:
-
当用六面体网格,单精度,一百万单元模拟湍流时,需要约1GB的GPU内存。
-
启用双精度将会提高50%显存占用。
-
多面体网格将会提高20%到40%的显存占用。
-
在AMG求解器聚合类型中使用最大独立集可以减少GPU20%到25%的显存占用。
在控制台中执行以下命令为AMG求解器启用最大独立集:
(rpsetvar 'gpuapp/aggregation-method "mis")
参考资料:
Unleashing the Full Power of GPUs for Ansys Fluent, Part 1
Unleashing the Full Power of GPUs for Ansys Fluent, Part 2
Ansys 2024 R1 - Graphics Cards Tested