ft2000系统用户手册
为了方便用户快速配置工作环境,FT2000+系统上预装了大量的软件,常用应用软件还根据用户的需求安装了不同的版本。用户可以根据自身需求选择加载不同的软件,来构建适合自己的编译环境和程序运行环境。目前FT2000+系统上的应用部署方式有(1)通过Environment modules 工具管理的手动部署和(2)通过spack部署两种方式,加载方式略有区别,这里分别介绍。
Environment modules 工具简介
FT2000+系统采用Environment modules工具用来快速设置和修改用户编译运行环境。 用户可以通过使用Environment modules工具加载和卸载 modulefile(环境配置文件) 来改变账户下的环境变量, 而无需频繁手动修改.bashrc文件, 从而避免误操作。
下面简述常用的module使用方式:
(1)使用module avail命令查看系统已安装的所有软件,确认所需的软件是否已经部署,或者使用module avail 软件名称直接查询所需软件。示例如下:
spack@ln1:~$ module avail
--------------------------------------- /thfs1/software/modulefiles/Applications --------------------------------------
cp2k/5.1.0-gcc8.3.0-mpi-x-plumed gromacs/2016.6-dp-gcc9.3.0-mpi-x lammps/29Oct20-gcc8.3.0-mpi-x
espresso/6.3-gcc9.3.0-mpi-x-gcc9.3.0 gromacs/2016.6-sp-gcc9.3.0-mpi-x namd/2021.6.8-gcc8.3.0-mpi-x
espresso/6.5-gcc9.3.0-mpi-x-gcc9.3.0 gromacs/2018.8-dp-gcc9.3.0-mpi-x openfoam/6.0-gcc8.3.0-mpi-x
espresso/6.6-gcc9.3.0-mpi-x-gcc9.3.0 gromacs/2018.8-sp-gcc9.3.0-mpi-x plumed/2.7.1-gcc8.3.0-mpi-x
espresso/6.7Max-gcc8.3.0-mpi-x gromacs/2019.6-dp-gcc9.3.0-mpi-x siesta/4.0.2-gcc8.3.0-mpi-x
gatk/4.2.0.0 gromacs/2019.6-sp-gcc9.3.0-mpi-x wps/4.3-emreal-dmpar-gcc8.3.0-mpi-x
gromacs/4.6.7-dp-gcc9.3.0-mpi-x gromacs/2020.2-dp-gcc9.3.0-mpi-x wps/4.3-emreal-dmpar-gcc9.3.0-mpi-x
gromacs/4.6.7-sp-gcc9.3.0-mpi-x gromacs/2020.2-sp-gcc9.3.0-mpi-x wrf/4.3-emreal-dmpar-gcc8.3.0-mpi-x
gromacs/5.0.7-dp-gcc9.3.0-mpi-x gromacs/2020.6-dp-gcc9.3.0-mpi-x wrf/4.3-emreal-dmpar-gcc9.3.0-mpi-x
gromacs/5.0.7-sp-gcc9.3.0-mpi-x gromacs/2020.6-sp-gcc9.3.0-mpi-x wrf/chem-4.3-emreal-dmpar-gcc8.3.0-mpi-x
gromacs/5.1.5-dp-gcc9.3.0-mpi-x gromacs/2021.2-dp-gcc9.3.0-mpi-x wrf/chem-4.3-emreal-dmpar-gcc9.3.0-mpi-x
gromacs/5.1.5-sp-gcc9.3.0-mpi-x gromacs/2021.2-sp-gcc9.3.0-mpi-x
--------------------------------------- /thfs1/software/modulefiles/Compilers -----------------------------------------
GCC/8.3.0 GCC/10.2.0 mpich/mpi-n-gcc9.3.0 mpich/mpi-x-dbg-gcc9.3.0 mpich/mpi-x-gcc9.3.0(default)
GCC/9.3.0(default) mpich/mpi-n-gcc8.3.0 mpich/mpi-x-dbg-gcc8.3.0 mpich/mpi-x-gcc8.3.0
--------------------------------------- /thfs1/software/modulefiles/Graphics -----------------------------------------
jasper/2.0.14-gcc8.3.0 libjpeg-turbo/2.1.0-gcc8.3.0 libpng/1.6.37-gcc8.3.0
jasper/2.0.14-gcc9.3.0 libjpeg-turbo/2.1.0-gcc9.3.0 libpng/1.6.37-gcc9.3.0
... ...
目前FT2000+主要部署了Applications、Compilers、Graphics、IO_tools、Libraries、Profiling_tools、Tools七大类应用/软件,以及一个Proxy代理工具,包括了科学计算应用、编译环境、图形化工具、IO工具、数学库、性能分析工具、其他工具这些科学计算常用的各种软件。
(2)使用module load或module unload命令加载或卸载所需软件,以及用module list查看账户下已经加载的软件列表
spack@ln1:~$ module list
No Modulefiles Currently Loaded.
spack@ln1:~$ module load GCC/9.3.0
spack@ln1:~$ module load mpich/mpi-x-gcc9.3.0
spack@ln1:~$ module list
Currently Loaded Modulefiles:
1) GCC/9.3.0(default) 2) mpich/mpi-x-gcc9.3.0(default)
spack@ln1:~$ module unload mpich/mpi-x-gcc9.3.0
spack@ln1:~$ module unload GCC/9.3.0
spack@ln1:~$ module list
No Modulefiles Currently Loaded.
(3)使用module help和module show命令查看软件相关信息,module help主要查询相应软件说明信息,而module show主要展示软件加载时影响的环境变量信息,该命令一般用于用户查询所加载的库的安装路径、头文件路径和库文件路径。
spack@ln1:~$ module help mpich/mpi-x-gcc9.3.0
-------------------------------------------------------------------
Module Specific Help for /thfs1/software/modulefiles/Compilers/mpich/mpi-x-gcc9.3.0:
modules - loads the modules software & application environment
This adds /thfs1/software/mpich/mpi-x-gcc9.3.0/* to several of the
environment variables.
Version mpi-x-gcc9.3.0
-------------------------------------------------------------------
spack@ln1:~$ module show mpich/mpi-x-gcc9.3.0
-------------------------------------------------------------------
/thfs1/software/modulefiles/Compilers/mpich/mpi-x-gcc9.3.0:
module-whatis {loads mpich/mpi-x-gcc9.3.0}
conflict mpich
prepend-path PATH /thfs1/software/mpich/mpi-x-gcc9.3.0/bin
prepend-path CPATH /thfs1/software/mpich/mpi-x-gcc9.3.0/include
prepend-path C_INCLUDE_PATH /thfs1/software/mpich/mpi-x-gcc9.3.0/include
prepend-path CXX_INCLUDE_PATH /thfs1/software/mpich/mpi-x-gcc9.3.0/include
prepend-path LIBRARY_PATH /thfs1/software/mpich/mpi-x-gcc9.3.0/lib
prepend-path LD_LIBRARY_PATH /thfs1/software/mpich/mpi-x-gcc9.3.0/lib
prepend-path PKG_CONFIG_PATH /thfs1/software/mpich/mpi-x-gcc9.3.0/lib/pkgconfig
setenv UCX_TLS sm,glex
-------------------------------------------------------------------
(4)使用module switch或者module swap命令替换环境中加载的某个软件应用。
spack@ln1:~$ module load GCC/9.3.0
spack@ln1:~$ module load mpich/mpi-x-gcc9.3.0
spack@ln1:~$ module list
Currently Loaded Modulefiles:
1) GCC/9.3.0(default) 2) mpich/mpi-x-gcc9.3.0(default)
-------------------------------------------------------------------
spack@ln1:~$ module switch mpich/mpi-x-dbg-gcc9.3.0
-------------------------------------------------------------------
spack@ln1:~$ module list
Currently Loaded Modulefiles:
1) GCC/9.3.0(default) 2) mpich/mpi-x-dbg-gcc9.3.0
Module 常用命令表
| 命令 | 说明 |
|---|---|
| module avail [modulefile] | 查看系统中所有可用的软件,如给定modulefile参数,则查询该软件信息。 |
| module help [modulefile] | 显示每个子命令的用法,如给定modulefile参数,则显示modulefile中的帮助信息。 |
| module add |load modulefile | 加载modulefile中设定的环境 |
| module rm|unload modulefile | 卸载已加载的环境modulefile |
| module list | 显示用户已加载的环境变量 |
| module show modulefile | 显示modulefile环境变量信息 |
| module swap|switch modulefile1 modulefile2 | 用modulefile2替换当前已加载的modulefile1 |
| module purge | 卸载所有加载的modulefiles |
spack HPC应用部署管理工具简介
为了提升应用部署效率和部署质量,提升用户使用体验,我们尝试在FT2000+系统引入spack HPC应用部署管理工具来部署应用环境。
用户账户下使用spack需要先加载spack环境,方式为将以下内容添加到~/.bashrc或~/.bash_aliases文件中,然后执行source ~/.bashrc重新加载环境。
# Spack package management
if [ -d "/thfs1/software/spack/spack" ]; then
export SPACK_ROOT=/thfs1/software/spack/spack
export PATH=$SPACK_ROOT/bin:$PATH
#source /thfs1/software/spack/spack/share/spack/setup-env.sh
export MODULEPATH=/thfs1/software/spack/share/spack/modules/linux-ubuntu20.04-aarch64:$MODULEPATH
fi
下面简述常用的spack使用方式:
(1) 使用spack find命令查看系统已安装软件
> spack find -l [software spec]
选项说明:
-p, --paths 显示软件安装路径
-d, --deps 显示软件完整的依赖关系图(有向无环图)
-l, --long 显示软件spec的hash值和版本号
-f, --show-flags 显示软件安装时的编译器选项
-x, --explicit 显示直接安装的软件
-X, --implicit 显示作为依赖安装的软件
-v, --variants 显示软件的安装选项
software spec 指定软件名称及配置选项,查看软件详细信息(hash值,版本,依赖,安装选项,编译选项)
注:spack find命令功能上类似module avail,但不支持模糊查询。比如用spack 的部署的netcdf软件分为netcdf-c和netcdf-fortran,如果spack find命令中仅给出netcdf是无法检索到的。
(2)加载spack部署的应用
目前FT2000+系统上利用spack部署的应用,最终都生成了modulefile文件,用户其实可用指定$MODULEPATH后利用module load命令加载相应的模块;但是这样做一来增加了选择软件的繁琐程度,二来容易破坏软件的依赖路径。
因此建议使用如下方式加载应用(以通用地球系统模式CESM的依赖为例),将以下内容加入~/.bashrc即可完成环境加载:
source <(spack module tcl loads --dependencies /kkrtpmv) # gcc@9.3.0
source <(spack module tcl loads --dependencies /e4lfm5m) # cmake@3.18.4
source <(spack module tcl loads --dependencies /xw6ltva) # esmf@7.1.0r
上述命令中通过添加--dependencies 可以实现同时加载esmf的依赖(同时包含了编译CESM所需的NETCDF,HDF5,MPICH等依赖)
xw6ltva esmf@7.1.0r%gcc cflags="-O2 -fPIC" cxxflags="-O2 -fPIC" fflags="-O2 -fPIC"
5olvqhx libxml2@2.9.10%gcc cflags="-O2 -fPIC" cxxflags="-O2 -fPIC" fflags="-O2 -fPIC"
wqdybbr libiconv@1.16%gcc cflags="-O2 -fPIC" cxxflags="-O2 -fPIC" fflags="-O2 -fPIC"
jfyvejj xz@5.2.5%gcc cflags="-O2 -fPIC" cxxflags="-O2 -fPIC" fflags="-O2 -fPIC"
45oz4lo zlib@1.2.11%gcc cflags="-O2 -fPIC" cxxflags="-O2 -fPIC" fflags="-O2 -fPIC"
wstzt3c mpich@3.4.2%gcc cflags="-O2 -fPIC" cxxflags="-O2 -fPIC" fflags="-O2 -fPIC"
qescd7l netcdf-c@4.7.4%gcc cflags="-O2 -fPIC" cxxflags="-O2 -fPIC" fflags="-O2 -fPIC"
iewu4ps hdf5@1.10.7%gcc cflags="-O2 -fPIC" cxxflags="-O2 -fPIC" fflags="-O2 -fPIC"
phclqla libszip@2.1.1%gcc cflags="-O2 -fPIC" cxxflags="-O2 -fPIC" fflags="-O2 -fPIC"
cpi6jdd numactl@2.0.14%gcc cflags="-O2 -fPIC" cxxflags="-O2 -fPIC" fflags="-O2 -fPIC"
vxoao5f parallel-netcdf@1.12.1%gcc cflags="-O2 -fPIC" cxxflags="-O2 -fPIC" fflags="-O2 -fPIC"
e2epafa netcdf-fortran@4.5.3%gcc cflags="-O2 -fPIC" cxxflags="-O2 -fPIC" fflags="-O2 -fPIC"
uhgldx3 openblas@0.3.12%gcc cflags="-O2 -fPIC" cxxflags="-O2 -fPIC" fflags="-O2 -fPIC"
tolmlph xerces-c@3.2.3%gcc cflags="-O2 -fPIC" cxxflags="-O2 -fPIC" fflags="-O2 -fPIC"
kqjyzen curl@7.72.0%gcc cflags="-O2 -fPIC" cxxflags="-O2 -fPIC" fflags="-O2 -fPIC"
uzilztm libidn2@2.3.0%gcc cflags="-O2 -fPIC" cxxflags="-O2 -fPIC" fflags="-O2 -fPIC"
3rk53br libunistring@0.9.10%gcc cflags="-O2 -fPIC" cxxflags="-O2 -fPIC" fflags="-O2 -fPIC"
kihy5an openssl@1.1.1h%gcc cflags="-O2 -fPIC" cxxflags="-O2 -fPIC" fflags="-O2 -fPIC"
然后执行source ~/.bashrc 实现对环境的加载。
spack@ln1:~$ module list
Currently Loaded Modulefiles:
1) gmp-6.1.2-gcc-8.3.0-lx3wp4x 10) cmake-3.18.4-gcc-9.3.0-e4lfm5m 19) netcdf-c-4.7.4-gcc-9.3.0-qescd7l
2) isl-0.20-gcc-8.3.0-gqkr5oa 11) libiconv-1.16-gcc-9.3.0-wqdybbr 20) netcdf-fortran-4.5.3-gcc-9.3.0-e2epafa
3) mpfr-3.1.6-gcc-8.3.0-yip63bk 12) xz-5.2.5-gcc-9.3.0-jfyvejj 21) openblas-0.3.12-gcc-9.3.0-uhgldx3
4) mpc-1.1.0-gcc-8.3.0-ylgcxws 13) libxml2-2.9.10-gcc-9.3.0-5olvqhx 22) libunistring-0.9.10-gcc-9.3.0-3rk53br
5) zlib-1.2.11-gcc-8.3.0-ienx4xx 14) mpich-3.4.2-gcc-8.3.0-wstzt3c 23) libidn2-2.3.0-gcc-9.3.0-uzilztm
6) gcc-9.3.0-gcc-8.3.0-kkrtpmv 15) libszip-2.1.1-gcc-9.3.0-phclqla 24) curl-7.72.0-gcc-9.3.0-kqjyzen
7) ncurses-6.2-gcc-9.3.0-jnpnv6s 16) numactl-2.0.14-gcc-9.3.0-cpi6jdd 25) xerces-c-3.2.3-gcc-9.3.0-tolmlph
8) zlib-1.2.11-gcc-9.3.0-45oz4lo 17) hdf5-1.10.7-gcc-9.3.0-iewu4ps 26) esmf-7.1.0r-gcc-9.3.0-xw6ltva
9) openssl-1.1.1h-gcc-9.3.0-kihy5an 18) parallel-netcdf-1.12.1-gcc-9.3.0-vxoao5f
注:以CESM为代表的一些应用在编译时所用的环境与加载的依赖所用的编译环境保持一致,而spack的这种加载方式很好地满足了这种要求。