Skip to content

Module 环境加载使用方法 ​

集群中的编译器、MPI、CUDA、科学计算软件和常用生信工具通常通过 module 命令管理。使用 module 可以按需加载软件环境,避免不同版本的软件互相影响。

什么时候需要使用 module

如果命令行提示找不到某个软件,或者需要指定特定版本的编译器、MPI、CUDA、GROMACS、VASP、Gaussian 等软件,可以先查看并加载对应 module。

查看可用软件 ​

登录节点后,可以使用下面命令查看当前可加载的软件模块:

bash
module av

也可以按软件名称筛选:

bash
module av cuda
module av gcc
module av mpi
module av gromacs

输出中通常会按目录分类,例如:

text
/hpcfs/fpublic/app/modulefiles/Compilers
/hpcfs/fpublic/app/modulefiles/Libraries
/hpcfs/fpublic/app/modulefiles/Science

常见类别包括:

类别示例
编译器gcc、nvhpc、aocc-compiler
运行库cuda、glibc、node
MPImpi/intel、mpi/openmpi、mpi/mpich
科学计算gromacs、vasp、gaussian、orca、cp2k
生信与结构工具ncbi-blast、rosetta、relion、PyMOL

加载软件环境 ​

使用 module load 加载指定软件或版本:

bash
module load mpi/intel/oneapi/2023.1

加载后,相关命令会加入当前 shell 的环境变量中。可以用 which 检查命令来源:

bash
which icc
which ifort
which mpirun

示例输出:

text
/hpcfs/fpublic/app/intel/oneapi/2023.1/compiler/2023.1.0/linux/bin/intel64/icc
/hpcfs/fpublic/app/intel/oneapi/2023.1/compiler/2023.1.0/linux/bin/intel64/ifort
/hpcfs/fpublic/app/intel/oneapi/2023.1/mpi/2021.9.0/bin/mpirun

查看已加载模块 ​

查看当前 shell 中已经加载的软件模块:

bash
module list

示例:

text
Currently Loaded Modulefiles:
 1) mpi/intel/oneapi/2023.1

切换软件版本 ​

如果需要换用其他版本,建议先卸载旧版本,再加载新版本:

bash
module unload mpi/intel/oneapi/2023.1
module load mpi/intel/2020u4
module list

也可以使用 module purge 清空当前已加载模块,再重新加载需要的软件:

bash
module purge
module load mpi/intel/2020u4

不要混用不兼容的软件版本

同一个 shell 中不要同时混用多套 MPI、CUDA 或编译器环境。提交作业前建议用 module list 确认环境是否符合预期。

在 Slurm 作业脚本中使用 ​

批量作业建议在脚本开头显式加载所需环境,保证作业在计算节点上运行时环境一致。

bash
#!/bin/bash
#SBATCH --job-name=test-module
#SBATCH --partition=qcpu
#SBATCH --cpus-per-task=4
#SBATCH --time=01:00:00
#SBATCH --output=%x_%j.out

module purge
module load mpi/intel/oneapi/2023.1

module list
which mpirun

mpirun -np 4 ./your_program

命令补全 ​

module 支持 Tab 补全。输入模块名称的一部分后按 Tab,可以补全模块路径或查看可选版本。

module 命令补全示例

常用命令速查 ​

命令作用
module av查看可用模块
module av 关键词按关键词筛选模块
module load 模块名加载模块
module unload 模块名卸载模块
module list查看已加载模块
module purge清空当前已加载模块

常见问题 ​

加载后仍然找不到命令 ​

先运行 module list 确认模块是否已加载,再用 which 命令名 检查命令路径。如果仍找不到,可能是模块名称或版本选择不正确。

程序运行时库版本冲突 ​

先执行 module purge 清空环境,再只加载当前任务需要的软件模块。不要在同一个任务里混用多套 MPI、CUDA 或编译器。

不知道应该加载哪个版本 ​

优先查看应用软件文档或咨询管理员。正式任务提交前建议先用小数据测试环境是否可用。

Copyright 2021 All Rights Reserved 生物设计中心 版权所有