GPGPU 计算

在图形处理单元(GPGPU 计算)上执行通用计算背后的理念是,将通常在 CPU(中央处理单元)上求解的计算分配至图形处理单元 (GPU)。GPU 上操作的性质意味着单个单元可以提供的计算性能与并行使用多个 CPU 相当。在 Linux 和 Windows 下运行的 Simcenter STAR-CCM+ 服务器均支持使用 NVIDIA GPU 进行 GPGPU 计算。AMD GPU 的使用目前仅限于 Linux 服务器。

Simcenter STAR-CCM+ 的 GPGPU 功能支持针对特定核心物理求解器在通用图形处理单元 (GPGPU) 上进行端到端计算。预期在未来版本中其他模型和求解器变为兼容 GPGPU。

如果求解器兼容 GPGPU,Simcenter STAR-CCM+ 将在 GPGPU 上运行所有重型计算。这些计算包括:
  • 描述物理的偏微分方程的离散化(例如,纳维-斯托克斯方程)
  • 使用 Krylov 加速代数多重网格 (AMG) 求解器生成的线性系统的求解
要使 Simcenter STAR-CCM+ 充分利用 GPGPU 硬件,此端到端求解器功能至关重要。
要使用 GPGPU 硬件运行 Simcenter STAR-CCM+ 模拟,必须确保:
  1. Simcenter STAR-CCM+ 启动时启用 GPGPU 功能。
  2. 仅选择与 GPGPU 兼容的模型和求解器用于模拟。请参见支持的求解器和模型。
满足这些要求后,Simcenter STAR-CCM+ 会使用可用的 GPGPA 自动运行模拟。否则,Simcenter STAR-CCM+ 会发出一条警告消息,并在 CPU 上运行模拟,这可能会导致性能降低远远超出预期。

由于 CPU 和 GPGPU 之间存在架构差异,因此无法在 GPGPU 运行中实现逐位再现性。此差异不应影响总体收敛行为。

GPGPU 选择

提供了多个选项,用于指定 Simcenter STAR-CCM+ 要使用的 GPGPU。有关这些选项的详细信息,请参见命令行参考,GPGPU 选项。Simcenter STAR-CCM+Simcenter STAR-CCM+ 不支持通过环境变量 CUDA_VISIBLE_DEVICES、HIP_VISIBLE_DEVICES、GPU_DEVICE_ORDINAL 或 ROCR_VISIBLE_DEVICES 来限制可使用的 GPGPU。Simcenter STAR-CCM+ 仅支持使用 -gpgpu 命令行参数限制 GPGPU。

GPU 支持的硬件

对于启用 GPGPU 的模拟,支持 NVIDIA 和 AMD 的某些显卡模型。首选具有 HBM(高带宽存储器)的模型,因为 GDDR(图形双倍数据速率)内存对于 CFD 应用而言将变得带宽不足。

建议使用采用 NVIDIA Volta、Turing、Ampere、Hopper、Ada Lovelace 和 Blackwell 架构的显卡。需要 CUDA 12.2 或更高版本的驱动程序(CUDA 驱动程序 535.104.05 或更高版本)。不支持使用 NVIDIA Multi-Instance GPU (MIG) 进行硬件分区。

建议在服务器中使用 AMD Instinct MI100 和 MI200 系列的显卡。另外还支持 Instinct MI300 系列,但可能无法提供最佳性能。

建议在工作站中使用 AMD Radeon PRO W6800、V620、W7800 和 W7900。AMDGPU 驱动程序是必需的,而 AMDGPU-PRO 驱动程序不受支持。

还支持集成于 AMD Ryzen AI MAX 系列(Strix Point 架构)CPU 中的 AMD Radeon 8000S 系列 GPU。要使尽可能多的内存可用于 GPGPU 计算,应将 BIOS 中的视频内存大小配置为尽可能小的值。

目前,需要在所有 AMD GPU 的内存容量和整体性能之间进行权衡。性能影响因 GPU 型号而异,是迄今为止对 MI300A 的影响最大的。Simcenter STAR-CCM+ 默认在所有 GPU 上采用更高内存容量,但 MI300A 除外(该型号优先考虑性能)。可以通过设置环境变量 HIP_MEM_POOL_SUPPORT=0 来替代此行为以获得更高的内存容量,或设置 HIP_MEM_POOL_SUPPORT=1 以获得更高的性能。

如果在 AMD GPU 上遇到挂起现象,并且内核日志 (dmesg) 报告类似 [drm:amdgpu_job_timedout [amdgpu]] *ERROR* ring sdma0 timeout 的消息,则设置 HSA_ENABLE_SDMA=0 环境变量。

初始化延迟和缓存目录

首次在 NVIDIA GPU 上使用任何模型或求解器时,模拟的初始化会延迟几秒钟或几分钟。在此期间,将进行一些准备工作,以便生成缓存目录 ~/.star/gpgpu_cache(在 Linux 中)或 %USERPROFILE%\AppData\Local\Siemens\CUDA_CACHE_STAR-CCM+(在 Windows 中)。此缓存可能占用几 GB 的磁盘空间。除非将 Simcenter STAR-CCM+ 升级到新版本、将 NVIDIA GPU 替换为其他硬件代次的 GPU,或者清除缓存目录,否则,这种延迟对于每个用户仅在首次运行时发生一次。

可以通过设置环境变量 CUDA_CACHE_PATH 来覆盖缓存目录的位置。可以通过将 CUDA_CACHE_MAXSIZE 设为以字节为单位的数字来限制最大大小,但请注意,设置得过小可能会导致反复发生启动延迟。

可以使用与 starccm+ 命令位于同一路径的 gpgpuJit 命令来管理缓存目录。它具有以下选项:

  • --status - 显示当前大小和最大大小以及缓存目录路径。
  • --clear - 删除缓存目录内容。
  • --build - 使用所有模型和求解器预填充缓存目录。这将消除仿真初始化过程中的延迟。该过程大约需要 20 分钟才能完成,如果在同一台计算机上安装了多种不同类型的 NVIDIA GPU,则需要数倍的时间。在计算群集中运行时,确保在安装了与稍后运行模拟的节点 GPU 类型相同的节点上执行此过程。
注gpgpuJit 命令已弃用,将在未来版本中移除。建议接受初始化延迟,并且不依赖于预先填充缓存。

GPGPU 许可

要在启用 GPGPU 计算的情况下运行模拟,必须使用以下许可证选项之一:
  • Simcenter STAR-CCM+ 无限制并行增强版
  • Simcenter STAR-CCM+ 按需授权 (PoD)

使用 MPS

如果 CPU 进程数比主机上正在使用的 GPGPU 数多(这在现代架构中很常见),则应使用 CUDA 多进程服务 (MPS),以免因 GPGPU 超额订阅导致性能降低。当满足以下所有前提条件时,Simcenter STAR-CCM+ 会自动在主机上启动和终止 MPS:
  • 在主机上指定的 CPU 进程数多于 GPGPU 数
  • MPS 尚未在主机上运行

在受管计算环境(如 HPC 群集)中,MPS 可在整个系统中进行处理。如果 Simcenter STAR-CCM+ 接管 MPS 管理,消息将打印到控制台,以指示正在自动启动和终止的 MPS。要避免自动处理 MPS,可以将 :nomps 限定符附加到 -gpgpu <...> 命令行参数,或通过用户界面。

在 Windows 下运行时,MPS 与 AMD GPU 无关,也与 NVIDIA GPU 无关。在这些设置中,不执行任何自动 MPS 处理,并且 :nomps 被静默忽略。

MPS 限制
  • 在早于 Volta 架构的 GPGPU 上,仅 MPS 进程本身在 nvidia-smi 中的 GPGPU 进程报告中显示。在较新的架构上,所有 Simcenter STAR-CCM+ 进程均直接显示。
  • 使用 Intel MPI 的外部版本时,无法保证自动 MPS 正常工作。观察命令行输出以获取有关 MPS 未按预期运行的警告。

GPGPU 感知的 CPU 绑定

使用 -gpgpu 参数上的任何可用选项启用 GPGPU 时,CPU 绑定策略可以更改为 "gpgpuaware" 策略(而不是默认 "bandwidth" 策略)。可以使用命令行选项 -cpubind gpgpuaware 更改此策略。gpgpuaware 绑定策略意味着 CPU 进程位于与其驱动的 GPGPU 物理接近的内核上。此策略可最大程度地减少缓慢路径的数据传输。

对于完全填充的主机(即,使用所有可用 CPU 核),所有 CPU 绑定策略都会导致相同的绑定,因此在命令行上传递的特定选项是冗余的。

多个主机上的流程分布

例如,在具有 GPGPU 的多台主机上运行时,对每个计算节点订阅不足可能是有益的,因此每台主机上的每个 GPGPU 只有一个进程。有关每个 GPGPU 计算进程的数量的更多信息和建议,请参见使用 GPGPU 运行模拟。

在设备文件中指定每个主机的正确进程数,或在通过批处理系统提交作业时设置相关属性,可以实现所需的 CPU 到 GPGPU 计数。有关更多信息,请参见为并行主机定义机器文件和使用批处理管理系统。

使用 -gpgpu 自动运行时,Simcenter STAR-CCM+ 会自动在所有主机上均匀分布这些进程,以提高 GPGPU 利用率。要返回默认进程分布,使用 -gpgpu auto:oversubscribe 命令(请参见命令行参考)。此选项在 Windows 上不可用。