Environment Modules簡單使用


Environment Modules簡單使用

Environment Modules簡介

Typically users initialize their environment when they log in by setting environment information for every application they will reference during the session. The Environment Modules package is a tool that simplify shell initialization and lets users easily modify their environment during the session with modulefiles.

下載安裝

下載網址

安裝步驟

$ INSTALL.txt

$ ./configure
$ make
$ make install

默認安裝目錄

/usr/local/Modules
├── bin
│   ├── add.modules
│   ├── envml
│   ├── mkroot
│   └── modulecmd
├── etc
│   └── siteconfig.tcl
├── init
│   ├── bash
│   ├── bash_completion
│   ├── cmake
│   ├── csh
│   ├── fish
│   ├── fish_completion
│   ├── ksh
│   ├── ksh-functions
│   ├── lisp
│   ├── modulerc
│   ├── perl.pm
│   ├── profile-compat.csh
│   ├── profile-compat.sh
│   ├── profile.csh
│   ├── profile.sh
│   ├── python.py
│   ├── r.R
│   ├── ruby.rb
│   ├── sh
│   ├── tcl
│   ├── tcsh
│   ├── tcsh_completion
│   ├── zsh
│   └── zsh-functions
├── lib
│   └── libtclenvmodules.so
├── libexec
│   ├── modulecmd-compat
│   └── modulecmd.tcl
├── modulefiles
│   ├── dot
│   ├── module-git
│   ├── module-info
│   ├── modules
│   └── gcc
└── share
    ├── doc
    └── vim

初始化

剛剛安裝好的Environment Modules是沒有module這條shell命令的
需要進行簡單的配置source一下環境

  • profile.d下建立軟連接,執行下列語句
# 全局初始化(root執行)
$ cd /etc/profile.d
$ ln -s /usr/local/Modules/init/profile.sh  module-profile.sh
$ ln -s /usr/local/Modules/init/profile.csh module-profile.csh

# 本地shell初始化
# bash
$ echo "source /usr/local/Modules/init/profile.sh" >> ~/.bashrc
$ source ~/.bashrc

# csh/tcsh
% echo "source /usr/local/Modules/init/tcsh" >> ~/.cshrc
% source ~/.cshrc

$ which module
module is a function
module () 
{ 
    _module_raw "$@" 2>&1
}

bash下支持自動補全

# 確認已經安裝bash-completion
$ cd /etc/bash_completion.d
$ ln -s /usr/local/Modules/init/bash_completion modules-compliction.bash

csh/tcsh下支持自動補全

% echo "source /usr/local/Modules/init/tcsh_completion" >> ~/.cshrc

管理工具的不同版本

一個簡單的例子

$ cd /usr/local/Modules/modulefiles
$ mkdir riscv_toolchain
$ cd riscv_toolchain
$ touch compile-version
$ touch freedomstudio-version
  • compile-verison
#%Module1.0######################################################################

conflict        riscv_toolchain/freedomstudio-version

set             tool_home       /opt/riscv/toolchain
setenv          RISCV           $tool_home

append-path     PATH            $tool_home/bin
append-path     LIBRARY_PATH    $tool_home/lib
append-path     LD_LIBRARY_PATH $tool_home/lib
append-path     LD_INCLUDE_PATH $tool_home/include
append-path     MANPATH         $tool_home/share/man
  • freedomstudio-verison
#%Module1.0######################################################################

conflict        riscv_toolchain/compile-version

set             tool_home       /opt/FreedomStudio/SiFive/riscv64-unknown-elf-gcc-8.3.0-2019.08.0
setenv          RISCV           $tool_home

append-path     PATH            $tool_home/bin
append-path     LIBRARY_PATH    $tool_home/lib
append-path     LD_LIBRARY_PATH $tool_home/lib
append-path     LD_INCLUDE_PATH $tool_home/include
append-path     MANPATH         $tool_home/share/man

依賴其他module的例子

#%Module1.0######################################################################

# conflict        sbt/

# 依賴於java環境,先加載此module
module load java/jdk-14.0.1

set              tool_home         /opt/scala/sbt-1.3.4

prepend-path     PATH              $tool_home/bin
prepend-path     LIBRARY_PATH      $tool_home/lib
prepend-path     LD_LIBRARY_PATH   $tool_home/lib

簡單使用

$ module load riscv_toolchain/compile-version
$ which riscv64-unknown-elf-gcc
riscv64-unknown-elf-gcc is /opt/riscv/toolchain/bin/riscv64-unknown-elf-gcc

$ module load riscv_toolchain/freedomstudio-version 
Loading riscv_toolchain/freedomstudio-version
  ERROR: riscv_toolchain/freedomstudio-version cannot be loaded due to a conflict.
    HINT: Might try "module unload riscv_toolchain/compile-version" first.

$ module unload riscv_toolchain/compile-version 

$ module load riscv_toolchain/freedomstudio-version 
$ which riscv64-unknown-elf-gcc
riscv64-unknown-elf-gcc is /opt/FreedomStudio/SiFive/riscv64-unknown-elf-gcc-8.3.0-2019.08.0/bin/riscv64-unknown-elf-gcc

個人環境管理

~/privatemodules//usr/local/Modules/modulefiles一樣可以包含local的環境設置

$ cd ~/
$ mkdir privatemodules/

自定義路徑

增加module搜索的路徑

$ export MODULEPATH=your_modulefiles_path_directory:$MODULEPATH

常用命令

命令 作用
module avail 或 module av 查看系統中可用的資源
module add 或 module load 加載模塊
module rm 或 unload 卸載模塊
module list 或 module li 顯示已加載模塊
module purge 卸載所有模塊
module show 顯示模塊配置文件
module swap 或 module switch 將模塊1 替換為 模塊2
module help 查看具體軟件的信息

參考資料


[1].超算入門課程4 module命令使用教學
[2].Environment Modules
[3].Linux使用Moduler切換各種MPI環境


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM