Appearance
Spack使用教程 
一、简介 
spack是一款针对于科学计算软件的包管理工具,它集成了module,可以一并加载其依赖库的环境变量。
本手册主要给用户提供:在灵犀易算平台下查询环境/软件信息、 加载软件环境变量,以便用户使用。
spack详细内容介绍可见官网,网址:Spack官网 。
二、分隔符 
spack分隔符使用介绍如下:
- 使用"@"符号作为软件版本号的界定符
- 使用"%"符号作为编译器的界定符
- 使用"^"作为依赖的界定符
- 使用"+"符号作为特性的界定符
三、查询环境/软件信息 
| 功能 | 命令 | 
|---|---|
| 查看基础信息 | spack info (Package_Name) | 
以cp2k为例:
- 查看cp2k软件版本的信息:
spack info cp2k

| 功能 | 命令 | 
|---|---|
| 列出全部已安装的软件 | spack find | 
| 查找某软件 | spack find (Package_Name) | 
| 查找指定编译器的软件 | spack find (Package_Name)%(Compiler_Name) | 
| 精确查找某编译器、某版本软件 | spack find (Package_Name)@(Package_version)%(Compiler_Name)@(Compiler_version) | 
| 查找使用某个特性的软件 | spack find (Package_Name)%(Compiler_Name)^(Variants) | 
| 查找使用库特性的软件 | spack find (Package_Name)%(Compiler_Name)+(Variants) | 
| 查看软件使用的依赖库 | spack find -d (Package_Name)@(Package_version) | 
| 查看软件使用的依赖库且显示安装位置 | spack find -d -p (Package_Name)@(Package_version) | 
| 查找软件的详细信息 | spack find --json (Package_Name)@(Package_version) | 
| 获取软件安装位置 | spack location -i (Package_Name)@(Package_version) | 
| 比较两个包之间的差异 | spack diff (Package_Name1) (Package_Name2) | 
| 列出所有软件版本以及所有依赖版本 | spack find --deps (Package_Name) | 
以cp2k为例:
- 查找cp2k软件:spack find cp2k

- 查找指定gcc编译器的cp2k软件:spack find cp2k%gcc

- 精确查找gcc-11.4.0编译器的cp2k 版本软件:
bash
spack find cp2k%gcc@11.4.0
- 查看cp2k软件使用的依赖库:
bash
spack find -d cp2k
四、加载软件/环境变量 
| 功能 | 命令 | 
|---|---|
| 加载环境 | spack load (Package_Name)@(Package_version)%(Compiler_Name)@(Compiler_version)^(Variants) | 
| 取消加载环境 | spack unload (Package_Name)@(Package_version)%(Compiler_Name)@(Compiler_version)^(Variants) | 
| 加载编译器环境 | spack load (Compiler_Name)@(Compiler_version) | 
| 加载软件环境 | spack load (Package_Name)@(Package_version) | 
| 加载某编译器、某版本的软件环境 | spack load (Package_Name)@(Package_version)%(Compiler_Name)@(Compiler_version) | 
| 若相同环境存在多个,可使用hash值前7位加载 | spack load /hash | 
| 仅加载软件本身 | spack load --only package (Package_Name)@(Package_version)%(Compiler_Name)@(Compiler_version) | 
| 仅加载软件的依赖 | spack load --only dependencies (Package_Name)@(Package_version)%(Compiler_Name)@(Compiler_version) | 
- 加载编译器环境:
bash
spack load intel-oneapi-compilers@2023.2.1- 加载某mpi环境:
bash
spack load intel-oneapi-mpi@2021.10.0- 加载某编译器、某版本的软件:此处以hdf5为例,加载gcc-11.4.0编译的hdf5-1.14.3:
bash
spack load hdf5@1.14.3%gcc@11.4.0- 若加载时出现Error,就可使用hash值前7位加载:
bash
spack load /t4flfrt
- 仅加载cp2k软件本身
bash
spack load --only package cp2k- 仅加载cp2k软件的依赖
bash
spack load --only dependencies cp2k五、常用环境加载 
下列列举了常用环境的加载方式,包括:编译器、MPI、conda、python、工具等,供参考使用。
- 编译器基础环境 
注:基础的gnu环境无需加载
bash
spack load intel-oneapi-compilers2、MPI环境 
bash
spack load mpich
spack load intel-oneapi-mpi
spack load openmpi3、conda环境 
bash
spack load anaconda34、python环境 
bash
spack load python5、数学库环境 
bash
spack load fftw
spack load netlib-blas
spack load netlib-lapack
spack load netlib-scalapack
spack load intel-oneapi-mkl
spack load openblas6、数据处理库环境 
bash
spack load netcdf-c 
spack load netcdf-fortran
spack load hdf5
spack load zlib7、工具环境 
bash
spack load cmake
spack load automake