使用 Intel MPI
Intel MPI 库是实施开源 MPICH 规范的多结构消息传递库。该库设计用来在使用 Intel 处理器的集群上实现最大性能。
starccm+ 命令中包括以下某个选项:-mpidriver intel-mpi intel
要使用兼容的本地安装,而不是与 Simcenter STAR-CCM+捆绑的 Intel MPI 库,将 INTEL_MPI_PATH 环境变量设为本地安装的根目录。本地安装程序与捆绑版本的主要版本必须相同,至少次要版本必须相同。
-mpiflags <mpirun options>-mpidriver intel:<mpirun options>-mpi intel:<mpirun options>
有关详细信息,请参见 Intel MPI 官方文档。
第三方库的使用和选择
从版本 2019 开始,Intel MPI 仅依赖开放结构接口 (OFI) 框架,并将 Libfabric 用作其底层通信库。所有可用的通信结构都映射到 Libfabric 提供程序。
- 在 Linux 上的 Mellanox InfiniBand 系统上使用
-
Mellanox InfiniBand 系统上推荐的提供程序是
mlx。Intel MPI 会在合适的系统上自动选择此提供程序,也可以使用-fabric UCX/ucx显式请求此提供程序。mlx提供程序使用 UCX 第三方库。有关 UCX 的更多信息,请参见使用 UCX。 - Libfabric 选择(所有平台)
-
默认情况下使用随 Intel MPI 分发的 Libfabric。
通过分别设置 Intel MPI 环境变量
I_MPI_OFI_LIBRARY_INTERNAL=0或=1,可以在 Libfabric 的 Simcenter STAR-CCM+ 和 Intel MPI 分发版之间进行选择。可以检查由 Simcenter STAR-CCM+ 命令行标志-fabricverbose生成的附加命令行输出,以确认使用了预期的 Libfabric 分发版。 - Libfabric 选择(Linux 特定)
-
注意,与 Mellanox InfiniBand 系统上的 Intel MPI Libfabric 分发版相比,使用 Libfabric 的 Simcenter STAR-CCM+ 分发版可能会导致性能衰退,这是因为其上游 Libfabric 程序中缺少 "mlx" 提供程序(但在 Intel MPI Libfabric 分发版中无此问题)。
除了来自 Intel MPI 或 Simcenter STAR-CCM+ 的 Libfabric 分发版外,还可以通过传递专家命令行标志
-xsystemlibfabric来访问系统范围内安装的 Libfabric 分发版。如果备选 Libfabric 分发版未安装到系统范围的库路径,则必须使用-ldlibpath将其库位置提供给 Simcenter STAR-CCM+。
指定环境变量
要导出环境变量到生成的进程,可使用以下选项和 starccm+(Windows 上的 starccm+.bat)命令:
-mpiflags "-genv VARIABLE1 value1 -genv VARIABLE2 value2"
有关详细信息,请参见 Intel MPI 文档。
在 IPv6 网络上使用
要在仅 IPv6 网络上将 Simcenter STAR-CCM+ 与 Intel MPI 一同使用,可能需要传递:
-mpiflags "-v6"
有关详细文档,请查阅 Intel MPI 文档。
减少内存消耗
与 Intel MPI 2019 相比,在 Windows 上运行时,Intel MPI 2021 在极少数情况下会增加内存消耗,因为共享内存通信控制发生更改。存在多个环境变量设置(例如 I_MPI_SHM_CELL_FWD_NUM=0 和 I_MPI_SHM_CELL_EXT_NUM_TOTAL=0),可用于减少内存消耗,但是结果可能有所不同,具体取决于特定模拟文件和硬件系统。有关详细信息,请参见 Intel MPI 文档。此外,根据提供商的信息,非默认设置可能会导致性能下降,因此务必谨慎并仅在必要时应用其中的任何设置。
AMD 系统上的使用
根据官方硬件要求,Intel MPI 在基于 AMD 的系统上不受支持。有关详细信息,请查阅 Intel MPI 系统要求。在基于 AMD 的系统上使用 Intel MPI 可能会导致中止或挂起等问题。在基于 AMD 的系统上运行时,建议使用 Linux 上的默认 Open MPI 和 Windows 上的 MS MPI。尽管如此,如果基于 AMD 的系统需要使用 Intel MPI,则应在出现问题的情况下考虑使用 Libfabric 的 Simcenter STAR-CCM+ 分发版。在某些情况下此操作自动完成。有关进一步说明,请参见 Libfabric 选择(所有平台)。
如果系统挂起,另一种变通方法是使用 PSM3 结构。要激活它,则设置 FI_PROVIDER=psm3 环境变量。
PSM3 提供程序和以太网链接聚合出现问题
当在系统上使用以太网链接聚合(IEEE 802.3ad,胶合)时,选择 PSM3 提供程序后 Intel MPI 的 Libfabric 可能会导致崩溃。要变通解决此问题,可以通过设置环境变量 FI_PROVIDER=^psm3 来禁用 PSM3 提供程序。检测到以太网链接聚合时 Simcenter STAR-CCM+ 会自动应用此变通办法。要强制使用 PSM3,可以使用 FI_PROVIDER=psm3。
在配备 Slingshot 互连的 HPE Cray 群集上使用 Intel MPI
默认情况下,Intel MPI 在配备 Slingshot 互连的 HPE Cray 群集上会回退到 TCP 结构,从而导致性能次优。要充分利用 Slingshot 互连,执行以下步骤:
- 确保加载系统提供的 libfabric 模块:
- 检查 libfabric 模块(
模块显示 libfabric)中指定的库路径中的系统libfabric.so库位置。 - 设置
I_MPI_OFI_LIBRARY=/path/to/libfabric/libfabric.so以通知 Intel MPI 在何处查找 libfabric 库。
- 检查 libfabric 模块(
- 设置
I_MPI_OFI_LIBRARY_INTERNAL=0以指示 Intel MPI 利用外部库结构。 - 设置
FI_PROVIDER=cxi以切换到 Slingshot CXI libfabric 提供程序。 - 设置
FI_CXI_RX_MATCH_MODE=hybrid以防止硬件缓冲区耗尽的潜在问题。 - 添加 Simcenter STAR-CCM+ 命令行标志
-xsystemlibfabric,以与系统提供的 libfabric 库一起运行。 - 配置 Intel MPI Hydra 引导方法:
- 如果在群集中启用了 ssh 引导:
- 设置
I_MPI_HYDRA_BOOTSTRAP="ssh"和I_MPI_HYDRA_BOOTSTRAP_EXEC_EXTRA_ARGS=""
- 设置
- 否则,请查阅 Intel MPI 文档(Hydra 环境变量),了解适用于您的群集的方法。例如,对于 SLURM 系统:
- 设置
I_MPI_HYDRA_BOOTSTRAP="slurm"和I_MPI_HYDRA_BOOTSTRAP_EXEC_EXTRA_ARGS=""
- 设置
- 如果在群集中启用了 ssh 引导:
- 如果在节点数较多的情况下运行时出现挂起,设置
I_MPI_HYDRA_BRANCH_COUNT=0可能有助于解决此问题。
使用命令行标志 -fabricverbose 可验证 Intel MPI 是否正在使用正确的 libfabric 库和提供程序。