如何向Environment Modules添加模块以通过module load命令加载
你当前运行module avail仅返回基础模块,是因为Environment Modules默认只扫描/usr/share/modules/modulefiles路径,gcc、cuda这类开发工具的模块文件要么存放在其他未被添加的搜索路径下,要么还未创建对应模块配置,可按照以下两种方法操作:
如果是使用公共集群/服务器,建议优先联系管理员确认公共模块的搜索路径,通常管理员会预装多版本的开发工具,无需自行编译。
方法1:添加系统已有的模块搜索路径
- 先搜索服务器上已存在的模块文件目录,公共集群通常会把开发类模块放在
/opt/modulefiles、/usr/local/modulefiles等公共路径,可执行以下命令查找:find / -name "gcc*" 2>/dev/null | grep modulefiles - 找到对应模块路径后临时添加到Modules搜索路径,示例路径为
/opt/modulefiles的话,执行:module use /opt/modulefiles
此时再运行module avail即可看到新增的模块,该配置仅对当前终端会话生效。 - 要永久生效的话,将上述
module use命令添加到你当前用户的shell配置文件中:- bash用户写入
~/.bashrc,执行source ~/.bashrc生效 - zsh用户写入
~/.zshrc,执行source ~/.zshrc生效
- bash用户写入
方法2:自行安装软件并创建自定义模块
如果服务器没有预装你需要的版本,可自行编译安装软件并编写模块配置文件:
- 编译安装对应版本的软件到自定义路径,示例路径为gcc5安装到
/opt/gcc/5.5.0,cuda10.0安装到/opt/cuda/10.0 - 创建私有模块存放目录,比如
mkdir -p ~/privatemodules/gcc ~/privatemodules/cuda - 编写gcc5的模块配置文件
~/privatemodules/gcc/5.5.0,内容示例:
#%Module1.0 proc ModulesHelp { } { puts stderr "GCC 5.5.0 编译器" } module-whatis "GCC 5.5.0 编译器" prepend-path PATH /opt/gcc/5.5.0/bin prepend-path LD_LIBRARY_PATH /opt/gcc/5.5.0/lib64 prepend-path MANPATH /opt/gcc/5.5.0/share/man
- 编写cuda10.0的模块配置文件
~/privatemodules/cuda/10.0,内容示例:
#%Module1.0 proc ModulesHelp { } { puts stderr "CUDA 10.0 并行计算框架" } module-whatis "CUDA 10.0 并行计算框架" prepend-path PATH /opt/cuda/10.0/bin prepend-path LD_LIBRARY_PATH /opt/cuda/10.0/lib64
- 将私有模块路径添加到Modules搜索路径:
module use ~/privatemodules
同样需要永久生效的话,把该命令写入shell配置文件即可,后续就可以通过module load gcc/5.5.0 cuda/10.0加载对应环境。
内容的提问来源于stack exchange,提问作者Kevin4720
相关产品推荐
相关产品推荐

