8.5. 管理 HPC 集群的环境模块


环境模块子系统使用基于 Lua 的环境模块(Lmod)来列出已安装的模块。使用 Lmod 时,您可以通过加载和卸载各种软件包及其依赖项来动态修改环境。它管理高性能计算(HPC)环境中的多个编译器、库和应用版本,以便您可以为每个版本选择特定的软件配置。为此,您可以使用 module 实用程序,它简写为 ml

8.5.1. 环境模块管理的命令

您可以使用以下命令来管理环境模块:

  • 显示与 模块 工具相关的所有命令:

    $ module help
  • 显示单个命令选项和语法:

    $ module <command> help
  • 显示特定模块的详情:

    $ ml whatis pmix/pmix-4.2.9
    pmix/pmix-4.2.9   : Description: PMIx 4.2.9 installed in /opt/pmix/4.2.9
    pmix/pmix-4.2.9   : Version: 4.2.9-1
  • 列出 HPC 环境中的可用模块:

    $ ml available
    -----------------------/usr/share/modulefiles------------------------
      mpi/hpcx-2.24.1-pmix-4.2.9    mpi/openmpi-5.0.8-cuda12-gpu (L,D)
      mpi/hpcx-2.24.1               pmix/pmix-4.2.9              (L)
      mpi/openmpi-x86_64
    
    ----------------/usr/share/lmod/lmod/modulefiles/Core----------------
      lmod    settarg

    其中:

    • l: Module is loaded
    • D :默认模块
    • (L) 注解表示 loaded mpi/openmpi-5.0.8-cuda12-gpu 模块。
    • 这也会将 pmix/pmix-4.2.9 模块作为依赖项加载。
    • 模块系统根据需要自动加载和卸载依赖模块。
  • 列出载入的模块:

    $ ml list
    Currently Loaded Modules:
    1) pmix/pmix-4.2.9
    2) mpi/openmpi-5.0.8-cuda12-gpu
  • 卸载模块及其依赖项:

    $ ml unload mpi/openmpi-5.0.8-cuda12-gpu
    $ ml list
    No modules loaded
  • 卸载现有模块并载入新模块:

    $ ml load mpi/openmpi-5.0.8-cuda12-gpu
    $ ml list
    Currently Loaded Modules:
    
    1) pmix/pmix-4.2.9
    2) mpi/openmpi-5.0.8-cuda12-gpu
  • 切换载入的模块:

    $ ml swap mpi/openmpi-x86_64
    The following have been reloaded with a version change:
    
    1) mpi/openmpi-5.0.8-cuda12-gpu => mpi/openmpi-x86_64
  • 列出可用的模块:

    $ ml list
    Currently Loaded Modules:
    
    1) mpi/openmpi-x86_64

8.5.2. Modulefiles 布局和规则

modulefile 是一个定义和管理 HPC 系统上加载、卸载和切换软件环境的环境变量的脚本。推荐的目录结构和命名约定可以有效地环境模块文件组织,包括模块定义、打包程序模块以及在基于 RHEL 的 HPC 部署中管理多个软件环境的一致规则。

模块定义的手动方法
模块 工具自动发现放置在 /usr/share/modulefiles 目录中的模块定义。如果您的其他目录带有模块定义,则需要将它们添加到 MODULEPATH 环境变量中。
wrapper 模块
为避免修改环境变量并允许 Lmod 查找特定于软件包的模块,请将 wrapper 模块放在 /usr/share/modulefiles 目录中,以便这些模块修改 MODULEPATH 并从外部位置加载相关模块。这种打包程序的一个示例是 mpi/hpcx-2.24.1 环境模块。
模块文件格式

Lmod 支持使用 Lua 和工具命令语言(Tcl)格式编写的环境模块。lua 脚本是定义环境模块的首选方法。使用设定 755 权限的 .lua 扩展。ml 命令的模块名称省略 .lua 后缀。本文档中提供的示例使用 Lua 脚本接口。它有以下要求:

  • 提供相同功能的所有软件包(如 MPI 库)都位于一个通用模块子目录中。在这种情况下,所有 MPI 库变体 ./ mpi/
  • 为软件包子目录(如冲突 ("mpi")))向模块添加 conflict () 定义,该定义一次只能加载该软件包类型的一个模块。
  • 保持软件包命名一致。
  • 使用功能名称作为子目录名称,而每个软件包实例的单个模块应根据以下模式命名:

    <package provider>-<version>-<build>-<options>

    对于多个 MPI 库变体,有些来自不同的供应商,另一些是带有不同编译器和构建选项的给定软件包的多个构建。在这种情况下,命名方案提供了一致性。

8.5.3. 可用的 MPI 环境

在 HPC Slurm 集群中,消息传递接口(MPI)环境为应用程序提供运行时支持,以便应用程序在节点间进行通信和同步。Slurm 与 MPI 实现(如 OpenMPI)集成,以便有效地管理分布式作业并优化对集群资源的使用。Slurm 使用 mpirun 在分配的节点之间编配执行,以进行可扩展的高性能作业。在提供的 RHEL HPC 集群中,有以下 MPI 环境:

  • openmpi.x86_64: Standard open MPI build,不提供 CUDA 或 GPU 加速支持。
  • openmpi-5.0.8-cuda-gpu: Open MPI 模块使用 CUDA 支持 GPU 感知 MPI 通信
  • Hpcx-2.24.1 :基于 Open MPI 的 NVIDIA 全面的 HPC 软件堆栈。
  • Hpcx-2.24.1-pmix : HPC-X 构建配置了 Slurm 集成和作业调度的进程管理接口(PMIx)。

为了命名 MPI 库的一致性,请指定 Unified Communication X (UCX)作为对 MPI 基础架构指向消息传递层(PML)实现的点:

$ mpirun -mca pml ucx .
openmpi.x86_64
此模块提供 OpenMPI 4.1.1 的标准构建。虽然它包含 PMIx 3.x 支持,但它不提供 CUDA 或 GPU 加速支持。RHEL InfiniBand 驱动程序和基础架构提供 InfiniBand (IB)/Remote Direct Memory Access (RDMA)功能。OpenMPI 库使用 gcc-11.4 编译。如果您的应用程序没有使用 CUDA 语言扩展或需要 GPU 卸载支持,请使用此模块。
openmpi-5.0.8-cuda-gpu

此模块使用 NVIDIA HPC-X 软件包库提供带有 PMIx 4.x 支持和 CUDA 和 NVIDIA GPU 加速支持的 OpenMPI 5.0.8。RHEL InfiniBand 驱动程序和基础架构提供 InfiniBand (IB)/Remote Direct Memory Access (RDMA)功能。OpenMPI 库使用 gcc-11.5 编译。只有在使用需要 GPU 加速的启用了 CUDA 的应用程序时才选择这个模块。

注意

如果没有 InfiniBand NIC,在 InfiniBand NIC 自动发现失败时会显示一个警告:

$ mpirun -n 2 /lib64/openmpi/bin/mpitests-osu_allreduce
...
[test-vm] Error: coll_hcoll_module.c:312 - mca_coll_hcoll_comm_query() Hcol library init failed
...

您可以通过在 mpirun 命令中添加 -mca coll ^hcoll 参数来删除这个警告:

$ mpirun -mca coll ^hcoll -n 2 /lib64/openmpi/bin/mpitests-osu_allreduce
# Size   Avg Latency(us)
  1      8.36
  2      6.85
hpcx-2.24.1
此模块提供了一个 NVIDIA 构建的 OpenMPI 4.1.5 环境。它不支持 PMIx,但提供 CUDA 和 NVIDIA GPU 加速支持。RHEL InfiniBand 驱动程序和基础架构提供 InfiniBand (IB)/Remote Direct Memory Access (RDMA)功能。
hpcx-2.24.1-pmix
此模块提供与 mpi/hpcx-2.24.1 模块相同的环境,同时启用了 PMIx 4.x 支持。
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部