Skip to main content

环境变量

集群使用Environment Modules以模块的形式对环境变量进行管理。在高性能计算集群系统中,安装有多种软件及其不同版本,它们需要设置不同的环境变量,Environment Module可以将这些环境变量做成模块文件(modulefile)。模块可以被加载(load)、卸载(unload)、切换(switch)等,这些操作会改变相应的环境变量设置,让用户方便的在不同环境之间切换。相比将环境变量设置写入/etc/profile、~/.bashrc或~/.bash_profile,Environment Module操作只影响当前用户的当前登录环境;相比直接source文件,Environment Module的操作可以撤销(卸载)。普通用户还可以自己编写module,具有很好的定制性。用户不仅可以在命令行中Environment Modules,也能在作业提交脚本中使用,对编译和计算环境都能够很好的控制。

常用命令

  • 显示module帮助:module help
  • 显示所有可用模块:module avail
  • 显示已加载模块:module list
  • 加载模块:module load MODULEFILE
  • 卸载模块:module unload MODULEFILE
  • 切换模块:module switch OLD_MODULEFILE NEW_MODULEFILE(等价于:module unload OLD_MODULEFILE; module load NEW_MODULEFILE)
  • 卸载所有已加载模块:module purge
  • 显示模块说明:module whatis MODULEFILE
  • 显示模块内容:module display MODULEFILE
  • 增加搜索目录:module use
  • 减少搜索目录:module unuse

非 Bash

使用非 Bash 作为 Login Shell 的用户,请在作业提交脚本的首行指明 Shell 或使用 bsub 选项 -L 指定作业运行时 Login Shell 为 Bash

如 Login Shell 为 tcsh,使用下面两种方法中的一种

#!/bin/tcsh #首行指明Shell
#BSUB ...
...
...
#BSUB -L /bin/bash #指定运行时Login Shell为Bash
...

加载模块示例

$ module avail #查看所有可用模块

------------------------------ /fs00/software/modulefiles ------------------------------
gcc/5.2.0                          impi/5.0.3.048
iccifort/15.0.3                   ips/2011sp1u3
ics/2013                           ips/2015u3
ics/2013sp1u1                  openmpi/1.10.0-gcc-5.2.0
imkl/11.2.3                      openmpi/1.10.0-iccifort-15.0.3

$ module list #显示已加载模块
No Modulefiles Currently Loaded. #没有模块被加载

$ icc --version #故icc找不到
-bash: icc: command not found

$ module whatis ips/2015u3 #查看模块说明
ips/2015u3           : Intel Parallel Studio XE 2015 Update 3 Cluster Edition

$ module load ips/2015u3 #加载模块
$ icc --version
icc (ICC) 15.0.3 20150407
Copyright (C) 1985-2015 Intel Corporation.  All rights reserved.

$ module list #显示已加载模块
Currently Loaded Modulefiles:
  1) ips/2015u3

$ module unload ips/2015u3 #卸载模块

搜索路径示例

$ module use
Search path for module files (in search order):
  /fs00/software/modulefiles

$ module avail 
--- /fs00/software/modulefiles ---
gcc/12.1.0
……                                


$ module use /fs00/software/modulefiles/oneapi/2024.0 #添加MODULEPATH搜索目录

$ module use
Search path for module files (in search order):
  /fs00/software/modulefiles/oneapi/2024.0
  /fs00/software/modulefiles

$ module avail 
--- /fs00/software/modulefiles/oneapi/2024.0 ---
mkl32/2024.0
compiler/2024.0.2
mkl/2024.0
……

--- /fs00/software/modulefiles ---
gcc/12.1.0
……