This is an old revision of the document!
SPACK - a package manager for HPC systems
New SPACK without environments
Having worked with spack environments for some time, we have encountered several severe issues which have convinced us that we need to find a more practical way of maintaining software packages at VSC.
There are now three separate spack installation trees corresponding to the CPU/GPU architectures on VSC:
- skylake - Intel CPUs; works on Intel Skylake and Cascadelake CPUs
- zen - AMD CPUs; works on Zen 2 and 3 CPUs
- cuda-zen - AMD CPUs + NVIDIA GPUs; works on all nodes equipped with graphics cards
By default the spack installation tree suitable for the current compute/login node is activated and will be indicated by a prefix on the command line, e.g.:
zen [user@l51 ~]$
Read more at:
List available packages
Most software on VSC4/5 is installed via spack, to list available software packages use:
spack find
List all available packages compiled with a specific compiler:
spack find %gcc@9.1.0
A specific version can be requested as well:
spack find openmpi@4.1.0
List a specific version compiled with a specific compiler:
spack find openmpi@4.1.0%gcc@9.1.0
The detail level of information can be specified with the following options:
spack find -l openmpi@4.1.0%gcc@9.1.0 spack find -lv openmpi@4.1.0%gcc@9.1.0 spack find -lvd openmpi@4.1.0%gcc@9.1.0
The latter lists all dependencies of the package.
Dependencies: dependencies of software packages can be specified with a ^
.
e.g.:
spack find -lvd py-scipy %intel@19.0.5.281 ^python@3.7.4 ^intel-mkl
This will list all available versions of py-scipy
which have been build with python@3.7.4
and any version of intel-mkl
.
List all currently loaded packages:
spack find --loaded
Loading modules
The spack
command can be used to load software modules. The general form is:
spack load <package>
package
has to be a uniquely defined software package where all dependencies have been resolved, e.g.:
spack load openmpi@4.1.0%gcc@9.1.0
This will load the corresponding module:
# module list Currently Loaded Modulefiles: 1) openmpi/4.1.0-gcc-9.1.0-2cmze2s
and is equivalent to loading the module as:
module load openmpi/4.1.0-gcc-9.1.0-2cmze2s
Alternatively a package can be loaded by using the unique hash of a package.
The option -l
will display the short hash of a package:
# spack find -l openmpi@4.1.0%gcc@9.1.0 ==> 1 installed package -- linux-centos7-x86_64 / gcc@9.1.0 ----------------------------- 2cmze2s openmpi@4.1.0
The hash 2cmze2s
uniquely identifies the package and can also be used to load the software module:
spack load /2cmze2s
Unload all currently loaded packages:
spack unload --all