Spack

Description

Spack is a fully automated software deployment tool for HPC, which is intended to complement our current semi-automated software installation procedures. Several thousands of software items may be installed with Spack, most of them in many versions. Spack is more recent and less mature than Easybuild, but considerably more flexible.

Spack is currently in development (Alpha version), but used productively in some of the large US National Laboratories and other large sites. We are in the process of installing and evaluating software packages using Spack with the goal to provide a wider range of open source software to UIBK HPC users. You are welcome to experiment with software provided by Spack under the following conditions:

  • Our installations on the Leo and Mach machines are experimental. Due to different installation dates, the versions are more or less recent. Spack installations may be replaced by new, incompatible versions upon short notice. When this happens, software might not be available for some days and you may need to change your module load commands afterwards.
  • Currently, only GNU compilers are supported. Other compilers may be added later.
  • As long as all goes well, new pieces of software with all their prerequisites can be installed and made available with very little effort. However, due to the high degree of abstraction, failed installations are very hard to debug. So requests for additional software are welcome, but success cannot be guaranteed.

External Documentation

Usage

Spack is interoperable with the existing module-based software management system. We have not checked the effects of mixing module load commands from both environments in the same session, so this should be done with caution.

One-time preparation

Add the following to your $HOME/.bashrc file:

# activate experimental SPACK module environment
export PATH=/usr/site/hpc/bin:$PATH
module use $(hpc_root)/$(hpc_system)-$(getosversion)/share/spack/modules/linux-$(getosversion)-x86_64

This adds the collection of Spack modules to your module definitions and allows you to query details of software provided by Spack.

Regular usage

After adding above to your .bashrc file (and logging in again), you may use any of the following:

module avail

In addition to out traditional modules in /usr/site/hpc/modules, you get the modules created by Spack in /usr/site/hpc/cluster/os-version

The module names consist of 5 dash-separated components:

  1. Name of software
  2. Version of software
  3. Name of compiler used to build the software
  4. Version of compiler -- " --
  5. Hash which allows for additional variation (see below).
module load module-name

Set up environment variables to enable use of software module-name. The module load command supports bash auto-complete: after entering module load and the first few characters of the module-name, hit the tab key to have all characters of a common prefix added, and hit tab again to display alternatives. If several versions are displayed that differ only by their hash, use the spack find command described below to help decide for the correct alternative.

spack find -dlv name

Displays all installed versions of software name with their prerequisites and hashes. This should help you decide which module to load in case of ambiguity.

spack list pattern

List installable software that matches pattern. Useful to find out which software is installable using Spack.

spack info name

Display detailled version info about installable software name.

source <(spack module tcl loads --dependencies name@version)

(Use this only when after a simple module load a command fails due to lack of prerequisites.) Generate a shell script that loads all modules needed for supporting software name-version and execute this script in the context of the current shell.

Nach oben scrollen