平台使用Environment Modules以模块的形式对环境变量进行管理。在高性能计算集群系统中,在高性能计算集群系统中,安装有多种软件及其不同版本,它们需要设置不同的环境变量,Environment Module可以将这些环境变量做成模块文件(modulefile)。模块可以被加载(load)、卸载(unload)、切换(switch)等,这些操作会改变相应的环境变量设置,让用户方便的在不同环境之间切换。相比直接source文件,Environment Module的操作可以撤销(卸载)。普通用户还可以自己编写module,具有很好的定制性。用户不仅可以在命令行中Environment Modules,也能在作业提交脚本中使用,对编译和计算环境都能够很好的控制。
首先介绍module常见的一些指令,接着介绍几个module的几个使用案例,最后介绍如何编写modulefile来管理自己的软件环境。
首先介绍module常见的一些指令:
module help # 显示帮助信息module avail # 显示已经安装的软件环境module load # 导入相应的软件环境module unload # 删除相应的软件环境module list # 列出已经导入的软件环境module purge # 清除所有已经导入的软件环境module switch [mod1] mod2# 删除mod1并导入mod2
接着介绍几个module的使用例子:
查看集群现有软件活库:
module avail查看集群可用的intel版本:
module avail intel导入intel/2017u5软件环境:
module load intel/2017u5清除所有通过module导入的软件环境:
module purge最后介绍如何编写modulefile来管理自己的软件环境。首先,创建目录用来存放自己的modulefile:
mkdir${HOME}/mymodulefiles # 创建目录用于放自己的module fileechoexport MODULEPATH=${HOME}/mymodulefiles:\$MODULEPATH>> ~/.bashrcsource ~/.bashrc# 或者退出重新登录即可# 编写自己的第一个module filecd${HOME}/mymodulefilesvim myfirstmodulefile
然后在创建好的目录下编写modulefile,假设/share/home/test/soft/gcc/7.2.0安装了gcc编译器,则可以这么编写modulefile:
#%Module1.0####module-whatis my first modulefile set topdir /share/home/test/soft/gcc/7.2.0prepend-path PATH${topdir}/binprepend-path LIBRARY_PATH ${topdir}/libprepend-path LD_LIBRARY_PATH ${topdir}/libprepend-path LIBRARY_PATH ${topdir}/lib64prepend-path LD_LIBRARY_PATH ${topdir}/lib64prepend-path CPATH ${topdir}/includeprepend-path CMAKE_PREFIX_PATH ${topdir}setenv CC ${topdir}/bin/gccsetenv CXX ${topdir}/bin/g++setenv FC ${topdir}/bin/gfortransetenv F77 ${topdir}/bin/gfortransetenv F90 ${topdir}/bin/gfortran
编写好后执行module avail即可查看到刚刚写好的modulefile了。以下为编写modulefile文件常见的语法:
set # 设置modulefile内部的变量setenv # 设置环境变量prepend-path # 效果类似于export PATH=xxx:$PATHappend-path # 效果类似export PATH=$PATH:xxx