跳转至

module

Environment Modules包是一个简化shell初始化的工具,允许用户在使用modulefiles进行会话期间轻松修改其环境。每个module文件都包含为应用程序配置shell所需的信息。初始化Modules包后,通过解释modulefiles的module命令在每个module的基础上修改环境。通常,modulefiles指示module命令改变或设置shell环境变量,例如PATH,MANPATH等。modulefiles可以由系统上的许多用户共享,并且用户可以拥有自己的集合来补充或替换共享modulefiles。module可以以干净的方式动态加载和卸载。

module常见指令

下面是 module 的一些常见指令:

module help       # 显示帮助信息
module avail      # 显示平台上已经安装的软件环境,avail可简写为av
module load       # 加载指定的软件环境,load这里也可用add,一样的效果
module unload     # 取消加载指定的软件环境
module list       # 列出已经导入的软件环境
module purge      # 清除所有已经加载的软件环境
module switch [mod1] mod2 # 取消加载 mod1 的同时加载 mod2

module使用例子

查看集群现有软件

[userA@quantum ~]$ module av
------------------------ /usr/share/Modules/modulefiles -------------------------
dot         module-git  module-info modules     null        use.own

------------------------ /opt/modulefiles ---------------------------------------
anaconda3        gauss/g16c01      gmx/2022.5                    miniconda3 
cmake-3.26.3     gcc11.4.0         intel/compiler/2022.2.0       multiwfn/3.8_dev
cp2k             gcc13.2.0         intel/impi/2021.7.0           orca5.0.4
gauss/g09d01     gmx/2018.4        intel/mkl/2022.2.0            orca6.0.0
查看集群可用Gaussian版本
[userA@quantum ~]$ module av gauss
------------------------ /opt/modulefiles ---------------------------------------
gauss/g09d01     gauss/g16c01
加载gauss/g16c01
[userA@quantum ~]$ module load gauss/g16c01 
[userA@quantum ~]$ which g16
/opt/soft/gauss/g16c01_avx2/g16/g16
[userA@quantum ~]$ which formchk
/opt/soft/gauss/g16c01_avx2/g16/formchk
清除当前通过 module 加载的环境
module purge

module管理自己安装的软件环境

自己编译安装的软件也可以通过module来进行管理,步骤如下:

  1. 创建目录用来存放自己的modulefile

    mkdir -p ${HOME}/modulefiles   # 创建目录用于放自己的modulefile
    
    将下面的内容添加到 ~/.bashrc文件中
    export MODULEPATH=${HOME}/modulefiles:$MODULEPATH
    
    执行source ~/.bashrc或者退出重新登录即可

  2. 编写modulefile
    打开刚刚创建好的,用于modulefile的目录

    [userA@quantum ~]$ cd ${HOME}/modulefiles
    
    在创建好的目录下编写modulefile,假设在路径 ${HOME}/soft/cp2k-2023.2中安装了CP2K软件,则可以这么编写名为 cp2k-2023.2的modulefile;
    #%Module1.0#####################################################################
    ##
    ## CP2K 2023.2 modulefile
    ##
    proc ModulesHelp { } {
            global version
    
            puts stderr "\tAdds CP2K 2023.2 to your environment. "
    }
    
    conflict CP2K
    
    module-whatis   "adds CP2K 2023.2 to your environment."
    # for Tcl script use only
    set     version      2023.2
    set     root_path    ${HOME}/software/soft/cp2k-2023.2
    
    prepend-path    PATH                ${root_path}/exe/local:${root_path}/mpich-4.0.3/bin
    prepend-path    CP2K_DATA_DIR       ${root_path}/data
    prepend-path    LD_LIBRARY_PATH     ${root_path}/lib:${root_path}/mpich-4.0.3/lib
    
    编写好后执行module av就可查看到刚刚写好的modulefile,并通过module load cp2k-2023.2加载使用自己编译安装的cp2k-2023.2软件环境了。

编写modulefile语法

下为编写modulefile文件常见的语法;

set           # 设置modulefile内部环境变量
setenv        # 设置环境变量
prepend-path  # 效果类似于export PATH=xxx:$PATH
append-path   # 效果类似export PATH=$PATH:xxx
有些软件安装完后,通过source xxx.sh的方式导入环境变量,可以这么写modulefile ,如intel parallel studio
set scriptpath  "/opt/soft/intel/2018.1/compilers_and_libraries_2018.1.163/linux/bin"
switch -- [module-info shelltype] {
    sh {
        source-sh bash $scriptpath/compilervars.sh intel64
    }
    csh {
        source-sh tcsh $scriptpath/compilervars.csh intel64
    }
}

append-path         INTEL_LICENSE_FILE     "/opt/soft/intel_parallel_studio/licenses"

本文阅读量  次
本站总访问量  次