1. 程式人生 > 實用技巧 >Modules管理環境變數

Modules管理環境變數

Moudle(module-environment)是一個專門管理環境變數的工具。
在Linux中管理環境變數的方式一般都是通過寫入profile或bashrc檔案。當同一款執行庫、軟體存在多個版本,配置這些環境變數非常繁瑣,而Moudle工具則先將不同軟體的環境的配置檔案寫好,然後在使用的時候通過module來進行環境的匯入以及刪除。


1、安裝Module

# yum install -y environment-modules

載入Module環境變數

# source /etc/profile.d/modules.sh


2、module file常用的語法

set version    # 設定版本    
set prefix # 設定安裝目錄 prereq # 設定依賴模組 prepend-path # 新增路徑,類似於export PATH=xxx:$PATH setenv # 設定環境變數 append-path # 類似export PATH=$PATH:xxx

3、常用命令

# module avail      # 顯示可以使用的軟體環境
# module load/add   # 載入相應的軟體環境
# module unload/rm  # 解除安裝相應的軟體環境
# module purge      # 解除安裝所有軟體環境
# module list       # 列出所有軟體環境
# module 
switch mod1 mod2 # 解除安裝mod1並匯入mod2 # module show # 顯示模組的配置檔案

4、編寫兩個MPI Module檔案

安裝兩個MPI軟體

# yum install -y openmpi3 mpich-3.2

MPICH Module檔案

# cat /etc/modulefiles/mpi/mpich-3.2
conflict    mpi 
prepend-path    PATH /usr/lib64/mpich-3.2/bin 
prepend-path    LD_LIBRARY_PATH /usr/lib64/mpich-3.2/lib 
prepend
-path PYTHONPATH /usr/lib64/python2.7/site-packages/mpich-3.2 prepend-path MANPATH /usr/share/man/mpich-3.2 prepend-path PKG_CONFIG_PATH /usr/lib64/mpich-3.2/lib/pkgconfig setenv MPI_BIN /usr/lib64/mpich-3.2/bin setenv MPI_SYSCONFIG /etc/mpich-3.2-x86_64 setenv MPI_FORTRAN_MOD_DIR /usr/lib64/gfortran/modules/mpich-3.2-x86_64 setenv MPI_INCLUDE /usr/include/mpich-3.2-x86_64 setenv MPI_LIB /usr/lib64/mpich-3.2/lib setenv MPI_MAN /usr/share/man/mpich-3.2 setenv MPI_PYTHON_SITEARCH /usr/lib64/python2.7/site-packages/mpich-3.2 setenv MPI_COMPILER mpich-3.2-x86_64 setenv MPI_SUFFIX _mpich-3.2 setenv MPI_HOME /usr/lib64/mpich-3.2

OpenMPI Module檔案

# cat /etc/modulefiles/mpi/openmpi-3.1.3
conflict    mpi 
prepend-path    PATH /usr/lib64/openmpi3/bin 
prepend-path    LD_LIBRARY_PATH /usr/lib64/openmpi3/lib 
prepend-path    PKG_CONFIG_PATH /usr/lib64/openmpi3/lib/pkgconfig 
prepend-path    PYTHONPATH /usr/lib64/python2.7/site-packages/openmpi3 
prepend-path    MANPATH /usr/share/man/openmpi3-x86_64 
setenv    MPI_BIN /usr/lib64/openmpi3/bin 
setenv    MPI_SYSCONFIG /etc/openmpi3-x86_64 
setenv    MPI_FORTRAN_MOD_DIR /usr/lib64/gfortran/modules/openmpi3 
setenv    MPI_INCLUDE /usr/include/openmpi3-x86_64 
setenv    MPI_LIB /usr/lib64/openmpi3/lib 
setenv    MPI_MAN /usr/share/man/openmpi3-x86_64 
setenv    MPI_PYTHON_SITEARCH /usr/lib64/python2.7/site-packages/openmpi3 
setenv    MPI_PYTHON2_SITEARCH /usr/lib64/python2.7/site-packages/openmpi3 
setenv    MPI_COMPILER openmpi3-x86_64 
setenv    MPI_SUFFIX _openmpi3 
setenv    MPI_HOME /usr/lib64/openmpi3


5、測試

載入MPICH

# module avail
# module load mpi/mpich-3.2
# which mpirun
顯示如下/usr/lib64/mpich-3.2/bin/mpirun

載入OpenMPI

# module switch mpi/mpich-3.2 mpi/openmpi-3.1.3
# which mpirun
顯示如下
/usr/lib64/openmpi3/bin/mpirun

顯示如下