Skip to content

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+主要部署了ApplicationsCompilersGraphicsIO_toolsLibrariesProfiling_toolsTools七大类应用/软件,以及一个Proxy代理工具,包括了科学计算应用、编译环境、图形化工具、IO工具、数学库、性能分析工具、其他工具这些科学计算常用的各种软件。

(2)使用module loadmodule 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 helpmodule 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-cnetcdf-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的这种加载方式很好地满足了这种要求。