GPU 加速的 Ansys Fluent

现在,开始阅读此《GPU Ready Apps Guide》(GPU Ready 应用程序指南)。

Ansys Fluent

ANSYS Fluent 是一种软件工具,设计为运行计算流体动力学 (CFD) 模拟。它包含丰富的物理建模功能,能为工业应用场合下的流动、湍流、传热和反应建立模型。它广泛用于各类工业领域,包括航空航天、汽车、医疗设备、机械和半导体制造等。

ANSYS Fluent 软件支持在 NVIDIA GPU 上进行求解器计算。这可帮助工程师减少探索许多设计变量所需的时间,以及按照最终设计期限优化产品性能。 代数多重网格求解器和辐射传热模型(包括离散坐标 (DO) 辐射和 S2S 视角系数计算)现在由 GPU 加速处理。典型的工业应用包括外流空气动力学、内部流体流动和冷却模拟等。

Ansys Fluent 在 GPU 上运行的速度最高提升 3.7 倍

Ansys Fluent 在 GPU 上运行的速度最高提升 3.7 倍,从而将求解时间从数周大幅缩短到数天。

除了加快模拟速度之外,GPU 还通过提供更高的每瓦特吞吐量和性能,帮助将总体拥有成本降到比仅使用 CPU 的解决方案更低。

安装

如何安装 Ansys Fluent

下载和安装

在 Ansys 客户门户网站上,可以下载 Ansys Fluent 和查看简要的安装说明。版本 18.1 是撰写本文时的最新修订版。请访问 Ansys 网站,查看是否有更新的版本。

步骤 1.下载 FLUIDS_181_LINX64.tar 文件,然后将 tar 文件的内容解压缩到单个目录中。这将产生一个名为“FLUIDS_181_LINX64”的子目录,其中包含安装软件。

步骤 2.按照安装指南所述在静默模式下运行 INSTALL。

INSTALL -silent -install_dir -fluent
-silent 启动静默安装,-install_dir 指定必须将 Fluent 安装到的目录。

Ansys 许可授权

所有 ANSYS HPC 许可证产品(包括 ANSYS HPC、ANSYS HPC Pack 和 ANSYS HPC Workgroup)均支持 GPU。从许可授权的角度来看,每个 GPU 均被视为一个 CPU 核心,因此,用户可以通过 GPU 模拟获得更高的工作效率。

运行作业

运行模拟

要在 GPU 上运行 Ansys Fluent 模拟的并行版本,可以在 Linux 系统上的 shell 中使用以下语法:

fluent -g -t -gpgpu= -i >&

标志和函数

  • fluent 命令以交互方式运行 ANSYS Fluent
  • -g 表示将在没有 GUI 或显卡的情况下运行程序
  • 指定 ANSYS Fluent 的 3d 或 3ddp 版本
  • 指定所有机器/节点中的 CPU 处理器总数
  • 指定并行模式下可用的每机器/节点的 GPU 数量。请注意,每台机器的进程数必须在所有机器上相同,而且必须选择 ngpgpus,以便每台机器的进程数是 ngpgpus 的整数倍。也就是说,对于在 M 台机器(每台机器使用 ngpgpus 个 GPU)上运行的 nprocs 求解器进程,必须有:
    • (nprocs) mod (M) = 0
    • (nprocs/M) mod (ngpgpus) = 0
  • 指定日志或输入文件的名称。
  • 指定输出文件的名称。它是后台作业将创建的文件,包含 ANSYS Fluent 通常输出到屏幕的结果(例如菜单提示和剩余的报告)。

日志文件包含 ANSYS Fluent 命令的序列,这些命令与您以交互方式键入的命令相同。可以在文件中添加注释,方法是在行的开头加上分号。

An example journal file is shown below:
----------------------------------------------------------------------------------------------------------
; Read case file
/file/read-case sample.cas.gz
;Change Solution Scheme from Segregated (SIMPLEC)(21) to Coupled(24)
/solve/set/p-v-coupling 24
; Switch the AmgX GPU Aggregator size from default 2 to 4
/solve/set/amg-options/amg-gpgpu-options/pressure-coupled
yes
0.1
"FGMRES"
20
4
0
3
"ILU"
; Initialize Solution
/solve/initialize/initialize-flow
; Run Iterations
/solve/iterate 100
; Performance Timer Statistics for Iterations
/parallel/timer/usage
; Exit Fluent
exit yes
----------------------------------------------------------------------------------------------------------

模型的 GPU 加速适用性

加速运行 AMG 求解器

NVIDIA 与 ANSYS 合作开发了一个高性能、可靠和可伸缩的 GPU 加速的 AMG 库。我们将此库称为 AmgX(表示 AMG 加速)。Fluent 使用 AmgX 作为其默认的线性求解器,并会在检测到支持 CUDA 的 GPU 时利用它。 AmgX 甚至可以使用 MPI 来连接服务器集群,以求解需要数十个 GPU 的极大型问题。启用 GPU 加速功能后,可以使用该功能执行有关线性系统(最多含有 5 个耦合方程)的 AMG 计算,而且计算需求随着域中的单元格数量增加而增长。如果问题包含的单元格少于数百万个,则由于与 CPU 双向传递矩阵会产生通信开销,GPU 并不能加速求解此类问题。但是,对于包含数千万和数亿个单元格的网格,由于通信开销与 AMG 求解器中的计算时间相比较小,加速效果会很显著。

耦合求解器从 GPU 中受益最多。在仅限流动的问题中,耦合求解器通常花费大约 60% 到 70% 的时间使用 AMG 来求解线性系统,因此选用 GPU 很合适。分离式求解器仅花费 30% 到 40% 的时间来执行 AMG 计算,这样一来,GPU 可能会因显存传输开销的缘故而显不出优势。默认情况下,GPU 加速自动应用到耦合系统而不应用到标量系统,原因是标量系统的计算开销通常没有耦合系统那么高。但是,如果需要,您可以使用以下文本命令为耦合系统和标量系统启用/禁用 AMG 求解器的 GPGPU 加速功能,以及列出支持的每种方程类型(允许您启用/禁用 GPGPU 加速、在 AMG 和 FGMRES 求解器之间选择和指定不同的求解器选项)。

/solve/set/amg-options/amg-gpgpu-options/

 在以下情况下将不会使用 GPU 加速:

  • 群体平衡模型处于活动状态。
  • 欧拉多相模型处于活动状态。
  • 系统含有超过 5 个的耦合方程。

加速执行离散坐标 (DO) 辐射计算

加速的离散坐标 (DO) 辐射求解器虽然可能要进行更多次迭代才能收敛,但它的计算速度比标准的 DO 求解器快,特别是在并行使用时。

此求解器基于 OpenACC,可以在 CPU 或 GPU 架构上运行。此求解器目前与所有模型和边界条件均不兼容,但在适用的情况下,它的运行速度极快。在离散化辐射强度方面需要非常高分辨率的情况从这个加速的求解器中受益最多。头灯模拟就是这样一种应用领域(使用这个加速的求解器可将计算速度提高数倍)。

在“Radiation Model”(辐射模型)对话框中选择了 DO 模型之后,可以使用以下文本命令启用加速的 DO 求解器:

/define/models/radiation/do-acceleration yes

如果在 Fluent 会话中启用 NVIDIA GPU,则此求解器将使用这些 GPU 加速执行 DO 计算。如果没有 GPU,此求解器仍可以与 CPU 核心一起使用,以加速执行 DO 计算。请注意,加速的 DO 求解器使用一阶迎风法和值为 1.0 的显式松弛。

加速的 DO 求解器与部分模型和设置不兼容;如有必要,Fluent 会在开始计算时自动恢复为标准的 DO 求解器,并输出有关冲突的消息。

如果打算将 GPU 与加速的 DO 求解器一起使用,建议您在启动 ANSYS Fluent 之前使用以下命令运行 NVIDIA 的多进程服务器 (MPS):

nvidia-cuda-mps-control -d

众所周知,使用多个 Fluent 进程能改善 GPU 计算的可靠性和性能。

加速执行 S2S 视角系数计算

可以通过 raytracing_acc 实用程序(它使用 NVIDIA Optix 库追踪光线)加速执行视角系数计算。在此类情况下,除非是进行 Windows-Linux 混合模拟且使用节点 0 上的 GPU,否则会使用运行宿主进程的机器上的可用 GPU。要使用 raytracing_acc,需要有 NVIDIA GPU 以及 CUDA 6.0。目前,此实用程序仅在 lnamd64(Red Hat Enterprise Linux 5/6 和 SUSE Linux Enterprise Server 11)和 win64 (Windows 7) 机器上可用,用于解决 3D 问题。要使用此实用程序,应能通过合适的环境变量(lnamd64 上的 LD_LIBRARY_PATH 或 win64 上的 %path%)访问 CUDA 6.0 库。

在 ANSYS Fluent 会话以外使用 raytracing_acc 实用程序时,命令行为

utility raytracing_acc [output_s2s_file(optional)]

在 ANSYS Fluent 会话内使用 raytracing_acc 实用程序时,使用以下文本命令:

/define/models/radiation/s2s-parameters/compute-clusters-and-vf-accelerated

基准

本部分为 CPU 和 GPU 系统上的不同模型提供预期的性能基准。

CPU 和 GPU 系统上的 Ansys Fluent(冷却水套)性能
CPU 和 GPU 系统上的 Ansys Fluent(波音起落架)性能
CPU 和 GPU 系统上的 Ansys Fluent(一级方程式赛车)性能
CPU 和 GPU 系统上的 Ansys Fluent(开式车轮赛车)性能
CPU 和 GPU 系统上的 Ansys Fluent(卡车车身)性能
CPU 和 GPU 系统上的 Ansys Fluent(头灯 D0 辐射)性能

推荐的系统配置

硬件配置

Workstation

Parameter
Specs

CPU Architecture

x86

System Memory

128-256GB

Disk

Minimum 500 GB

CPUs

2 CPU sockets (8+ cores, 2+ GHz)

GPU Model

NVIDIA Quadro® GP100 for double precision compute

GPUs

Recommend 1-2 GPU per CPU socket

Servers

Parameter
Specs

CPU Architecture

x86

System Memory

256GB

CPUs/Nodes

2 (8+ cores, 2+ GHz)

Total # of Nodes

1-100+

GPU Model

NVIDIA Tesla® P100

GPUs/Node

Recommend 2 GPU per CPU socket

Interconnect

Infiniband

立即构建理想的 GPU 解决方案