使用 Intel MPI

Intel MPI 库是实施开源 MPICH 规范的多结构消息传递库。该库设计用来在使用 Intel 处理器的集群上实现最大性能。

要在运行时使用 Intel MPI 库,可在 starccm+ 命令中包括以下某个选项:
  • -mpidriver intel
  • -mpi intel

要使用兼容的本地安装,而不是与 Simcenter STAR-CCM+捆绑的 Intel MPI 库,将 INTEL_MPI_PATH 环境变量设为本地安装的根目录。本地安装程序与捆绑版本的主要版本必须相同,至少次要版本必须相同。

可以使用以下任一选项将 Intel MPI 命令行选项传递到 Simcenter STAR-CCM+ 中:
  • -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 库。
  • 设置 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=""
  • 如果在节点数较多的情况下运行时出现挂起,设置 I_MPI_HYDRA_BRANCH_COUNT=0 可能有助于解决此问题。

使用命令行标志 -fabricverbose 可验证 Intel MPI 是否正在使用正确的 libfabric 库和提供程序。