Software Stack(SStack)

SStack is a tool to install multiple software stacks, such as Spack, EasyBuild, conda or others. These stacks are then linked together, using Lmod module files, to easily integrate with most HPC environments.

The main goal is to provide an easy way to install common software build tools, with same or institution specific configurations, for both site administrators and end users. The secondary goal is to provide a structured Lmod module hierarchy to enable easier use of different core software stacks and hierarchically display all software on a HPC cluster.

SStack is intended to be simple. It offers a nice and easy way to better structure your software stack deployments. The intended audience is for both site administrators and end users. SStack allows installing software in global locations as well as user specified directories. Since the module hierarchy is identical in both locations the over all module path will remain highly structured.

It’s recommended to use SStack to install your package on Discovery if the package isn’t available in the Modules.

Installing Stack Types

You can use different stack types such as Spack and Conda, to install your intended package either in your home directory or in a project space. SStack is installed on Discovery and available through modules. To be able to use it, you need to load it in your environment.

module load sstack

To install a stack type, use the sstack install command. Syntax:

sstack install [OPTIONS]
  • OPTIONS:

    • Required:

      • -t or --type: Type of stack (Spack / conda / etc..)

      • -n or --name: Name of stack (myspack / 2022A / etc..).

    • Optional:

      • -v or --version: Version of stack type.

        • If not specified the default version is used. See sstack show types

      • -p or --path: Location of stacks and module files.

        • If not specified the stack will be installed in the default path, in the users home directory.

For example, to install spack with the name `myspack`in your home directory, run:

sstack install -n myspack -t spack

The messages Stack Successfully Installed! means that the stack is installed successfully. This will create a module file which you can load into your environment to install packages.

module load spack/myspack

Installing a package with Spack is very simple. Syntax

spack install <package_name>

For example, to install the version 1.3 of zlib package, run command:

spack install zlib@1.3

Once the package is installed successfully, a module is created where you can load in your envrunment to use the package.

To find the correct module name to load, run command:

module spider zlib

Output

------------------------------------------------------------------------------------------------------------------------------------------------------------
  zlib:
------------------------------------------------------------------------------------------------------------------------------------------------------------
     Versions:
        zlib/1.2.12-2022a-gcc_12.1.0-7h2btk3
        zlib/1.2.13-q6ra7r3
        zlib/1.2.13-2023a-gcc_7.5.0-lzzirrq
        zlib/1.2.13-2023a-gcc_12.2.0-6f6s62o
        zlib/1.3-vv6lw7a
        zlib/1.3-wktwfml

------------------------------------------------------------------------------------------------------------------------------------------------------------
  For detailed information about a specific "zlib" package (including how to load the modules) use the module's full name.
  Note that names that have a trailing (E) are extensions provided by other modules.
  For example:

     $ module spider zlib/1.3-wktwfml
------------------------------------------------------------------------------------------------------------------------------------------------------------

To find the dependencies of the module, run:

module spider zlib/1.3-wktwfml

------------------------------------------------------------------------------------------------------------------------------------------------------------
  zlib: zlib/1.3-wktwfml
------------------------------------------------------------------------------------------------------------------------------------------------------------

    You will need to load all module(s) on any one of the lines below before the "zlib/1.3-wktwfml" module is available to load.

      spack/spack21
      spack/myspack

You have to get spack/myspack installed before installing zlib/1.3-wktwfml, run:

module load spack/myspack

Once of the dependencies are loaded, you can load the module of the installed package. To load the zlib/1.3-wktwfml module, run:

module load zlib/1.3-wktwfml

For more information, please refer to the SStack documentation