GPGPU 计算
在图形处理单元(GPGPU 计算)上执行通用计算背后的理念是,将通常在 CPU(中央处理单元)上求解的计算分配至图形处理单元 (GPU)。GPU 上操作的性质意味着单个单元可以提供的计算性能与并行使用多个 CPU 相当。在 Linux 和 Windows 下运行的 Simcenter STAR-CCM+ 服务器均支持使用 NVIDIA GPU 进行 GPGPU 计算。AMD GPU 的使用目前仅限于 Linux 服务器。
Simcenter STAR-CCM+ 的 GPGPU 功能支持针对特定核心物理求解器在通用图形处理单元 (GPGPU) 上进行端到端计算。预期在未来版本中其他模型和求解器变为兼容 GPGPU。
- 描述物理的偏微分方程的离散化(例如,纳维-斯托克斯方程)
- 使用 Krylov 加速代数多重网格 (AMG) 求解器生成的线性系统的求解
- Simcenter STAR-CCM+ 启动时启用 GPGPU 功能。
- 仅选择与 GPGPU 兼容的模型和求解器用于模拟。请参见支持的求解器和模型。
由于 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 许可
- Simcenter STAR-CCM+ 无限制并行增强版
- Simcenter STAR-CCM+ 按需授权 (PoD)
使用 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 未按预期运行的警告。
- 在早于 Volta 架构的 GPGPU 上,仅 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 上不可用。