使用 Open MPI

Open MPI 是目前大力开发和广泛应用的开源 MPI 发布版。Simcenter STAR-CCM+ 安装程序中包含两个不同版本的分发版并支持本地安装的版本 4。

要查找外部 Open MPI 安装,Simcenter STAR-CCM+ 会检查 OPENMPI_DIR 环境变量的内容。

要显式选择要使用的首选版本 Open MPI 库,可在 starccm+ 命令中包括以下某个选项:

  • -mpidriver openmpi
  • -mpi openmpi
这类似于默认行为,即命令行上给出的无 -mpi/-mpidriver 标志。

可以使用下列任一选项将 Open MPI 命令行选项传递到 Simcenter STAR-CCM+

  • -mpiflags <mpirun options>
  • -mpidriver openmpi:<mpirun options>
  • -mpi openmpi:<mpirun options>

有关详细信息,请参见官方 Open MPI 文档。

打开 MPI 版本选择

要使用的 Open MPI 的默认版本取决于基础硬件系统:

  • 在不具有 DC 传输功能(即早于 ConnectX-4)的 Mellanox InfiniBand 系统上,默认情况下使用 Open MPI 4.0.3。这是因为应该在这些系统上使用以避免性能下降的 UCX 1.8.0(请参见使用 UCX)与 Open MPI 4.1.5 不兼容。
  • 在所有其他系统上,默认使用 Open MPI 4.1.5。

可以通过指定某些命令行选项来使用非默认版本的 Open MPI。要显式选择 Open MPI 4.1.5,可指定以下任一项:

  • -mpidriver openmpi41
  • -mpi openmpi41

使用 Open MPI 4.1.5 至少需要 UCX 1.10.0。因此,如果在默认为 Open MPI 4.0.3 和 UCX 1.8.0 的系统上选择 Open MPI 4.1.5,则还必须覆盖默认 UCX 版本(请参见使用 UCX)。

要显式选择 Open MPI 4.0.3,可指定以下任一项:

  • -mpidriver openmpi40
  • -mpi openmpi40

Open MPI 组件

Open MPI 具有一个模块化组件架构 (MCA),在该架构中,某些特定的组件可能需要系统中存在某些依赖项才可用。对于与 Simcenter STAR-CCM+ 捆绑在一起的 Open MPI 发布版,可以使用以下命令来获取常规信息和可用组件的列表(仅限 Linux):

`[INSTALLDIR]/star/bin/map_mpi -type openmpi -binpath`/ompi_info

对于特定的 Open MPI 版本 [VERSION],使用以下命令:

`[INSTALLDIR]/star/bin/map_mpi -type openmpi -version [VERSION] -binpath`/ompi_info

有关详细信息,请参见 Open MPI 文档。

使用 Hierarchical Collectives (HCOLL)

Simcenter STAR-CCM+ 的 Open MPI 4 发布版支持 Mellanox InfiniBand 系统上的 Hierarchical Collectives (HCOLL) 库。默认情况下停用,可以使用 -hcoll 命令行标志激活。此命令行标志不会无条件激活 HCOLL,但仅当满足所有前提条件时才允许 Open MPI 使用 HCOLL。这主要包括系统上至少存在 HCOLL 版本 3.7(属于 MOFED 4.0 的一部分)。如果出现 HCOLL 和 UCX 兼容性警告,建议通过使用 -xsystemucx 命令行标志来使用 UCX,而不是 Simcenter STAR-CCM+ 发布版(有关详细说明,请参见第三方库版本和用法)。

启用 GPGPU 计算时,不应将 HCOLL 用于 MOFED 4.9 和更低版本。

第三方库版本和用法

  • 在 Intel Omni-Path 集群上,请安装 Intel OPA Software Stack 10.2 或更高版本。
  • 在 Mellanox 集群上,请安装 Mellanox OFED (MOFED) 2.1 或更高版本。OFI 结构在 MOFED 2.4 下存在已知问题。请勿在 MOFED 2.4 下使用此结构,如果需要使用此结构,则升级 MOFED。
  • Simcenter STAR-CCM+ 附带 UCX 发布版。有关 UCX 的详细信息,请参见使用 UCX
  • Simcenter STAR-CCM+ 附带 Libfabric/OFI 1.15.2 发布版。如果要改为使用 Libfabric 1.15.2 或更高版本的本地安装,则其库位置必须位于系统范围的库路径中,或者必须使用 -ldlibpath 标志将其库位置传递给 Simcenter STAR-CCM+。此外,要避免使用捆绑的 Libfabric 1.15.2 发布版,必须将专家选项 -xsystemlibfabric 传递给 Simcenter STAR-CCM+
  • 在 AWS EFA 系统中,使用捆绑的 Libfabric 1.15.2 分发需要安装 rdma 中心版本 27.1 或更高版本。

通常,使用最新版本的第三方依赖项可获得最高性能。

Docker 和虚拟接口与 Open MPI

默认情况下,对 Open MPI 停用 Docker 和虚拟网络接口。如果要使用 Docker 或虚拟网络接口,可以通过以下任一方法替代默认设置:

  • 可以将这些接口专门用于 Open MPI 通信,方法是指定适当的白名单:
    -mpiflags "-mca btl_tcp_if_include docker0"

    -mpiflags "-mca btl_tcp_if_include virbr0"
  • 可以允许 Open MPI 使用这些接口,方法是从黑名单中排除相应的接口(黑名单仍必须包含本地主机,例如,127.0.0.0/8):
    -mpiflags "-mca btl_tcp_if_exclude 127.0.0.0/8"

内存消耗

要减少使用 Simcenter STAR-CCM+ 时 Open MPI 的内存消耗,可对此 MPI 的默认行为应用一系列调整。所有这些调整都可以通过指定适当的 MCA 参数或环境变量来覆盖:

  • 在共享内存(单台主机)运行中,系统会显式选择 Open MPI 的 Vader 组件。
  • 使用 Open MPI 3 时,系统会无条件停用 OOB/ud 组件。

指定环境变量

要导出环境变量到生成的进程,可使用 starccm+ 命令中的以下选项:

-mpiflags "-mca mca_base_env_list VARIABLE1=value1;VARIABLE2=value2"

有关详细信息,请参见 Open MPI 文档。

传递需要带连字符参数标志的 mpiflag

将标志作为 mpiflag(本身需要以一个或多个连字符开头的参数)传递时,该标志必须通过环境变量传递。

例如,传递 -mpiflags "-mca plm_slurm_args --export=PATH" 不起作用。要正确识别最后一个参数,该标志必须通过环境变量 OMPI_MCA_plm_slurm_args="--export=PATH" 传递。

如欲了解要使用哪个环境变量,请参见 Open MPI 文档。

临时目录和共享内存备份文件位置

如果临时目录位于网络文件系统(如 NFS 或 Lustre)中,可能会导致文件服务器网络流量过大和/或导致 Open MPI 中的共享内存流量比预期慢得多。对于这种情况 Open MPI 将打印警告消息。如果观察到并行性能降低,建议通过设置 TMPDIR 环境变量将 Simcenter STAR-CCM+ 的临时目录移至节点本地文件夹。