This version (2024/10/24 10:28) is a draft.
Approvals: 0/1
The Previously approved version (2023/05/17 15:26) is available.Diff

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:

Transition to new SPACK without Environments

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@12.2.0

List specific installed software packages use:

spack find openmpi

A specific version can be requested as well:

spack find openmpi@4.1.4

List a specific version compiled with a specific compiler:

spack find openmpi@4.1.4%gcc@12.2.0

The detail level of information can be specified with the following options:

spack find -l openmpi@4.1.4%gcc@12.2.0
spack find -lv openmpi@4.1.4%gcc@12.2.0
spack find -lvd openmpi@4.1.4%gcc@12.2.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 built with python@3.7.4 and any version of intel-mkl.

List all currently loaded packages:

spack find --loaded

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.4%gcc@12.2.0

This will load the corresponding module, even if module list will not show anything!

zen xyz@l51:~$ spack load openmpi@4.1.4%gcc@12.2.0 arch=linux-almalinux8-zen3 /2vqdnay
zen xyz@l51:~$ module list
No Modulefiles Currently Loaded.
zen xyz@l51:~$ spack find --loaded
-- linux-almalinux8-zen3 / gcc@12.2.0 ---------------------------
autoconf@2.69                       curl@7.85.0     hwloc@2.8.0           libgpg-error@1.46  m4@1.4.19       openssh@9.1p1   py-setuptools@65.5.0  util-linux-uuid@2.38.1
autoconf-archive@2022.02.11         diffutils@3.8   json-c@0.16           libiconv@1.16      meson@0.63.3    openssl@1.1.1s  py-wheel@0.37.1       util-macros@1.19.3
automake@1.16.5                     expat@2.4.8     krb5@1.19.3           libmd@1.0.4        mpfr@4.1.0      pcre2@10.39     python@3.9.15         xz@5.2.7
berkeley-db@18.1.40                 gawk@5.1.1      libbsd@0.11.5         libpciaccess@0.16  munge@0.5.15    perl@5.36.0     readline@8.1.2        zlib@1.2.13
bison@3.8.2                         gdbm@1.23       libedit@3.1-20210216  libsigsegv@2.13    ncurses@6.3     pigz@2.7        slurm@22.05.2.1       zstd@1.5.2
bzip2@1.0.8                         gettext@0.21.1  libevent@2.1.12       libtool@2.4.7      ninja@1.11.1    pkgconf@1.8.0   sqlite@3.39.4
ca-certificates-mozilla@2022-10-11  glib@2.74.1     libffi@3.4.2          libxml2@2.10.1     numactl@2.0.14  pmix@4.1.2      tar@1.34
cmake@3.24.3                        gmp@6.2.1       libgcrypt@1.10.1      lz4@1.9.4          openmpi@4.1.4   py-pip@22.2.2   texinfo@6.5
==> 61 loaded packages

and is equivalent to loading the module as:

module load openmpi/4.1.4-gcc-12.2.0-2vqdnay

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:

zen xyz@l51:~$ spack find -l openmpi@4.1.4%gcc@12.2.0
-- linux-almalinux8-zen3 / gcc@12.2.0 ---------------------------
2vqdnay openmpi@4.1.4
==> 1 installed package

The hash 2vqdnay uniquely identifies the package and can also be used to load the software module:

spack load /2vqdnay

Unload all currently loaded packages:

spack unload --all
  • doku/spack.txt
  • Last modified: 2024/10/24 10:28
  • by 127.0.0.1