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
顯示如下
