Software

We provide a basic set of toolchains and some common libraries via modules.

To build common HPC software packages, we provide a central installation of the Spack package manager.

Subsections of Software

Modules

We use the Lmod module system:

  • module available (shortcut ml av) lists available modules
  • module load loads selected modules
  • module list shows modules currently loaded in your environment

There are also hidden modules that are generally less relevant to users but can be viewed with ml --show_hidden av.

We are committed to providing the tools you need for your research and development efforts. If you require modules that are not listed here or need different versions, please contact our support team, and we will be happy to assist you.

Compilers

  • GCC 11.4.1, default on the system.
  • GCC 13.2.0.
  • AOCC 4.2.0, AMD Optimizing C/C++ Compiler
  • Intel OneAPI Compilers: 2024.1.0
  • Intel Classic Compilers: 2021.10.0
  • NVHPC 24.7, NVIDIA HPC Compilers

MPI Libraries

  • OpenMPI 4.1.6
  • OpenMPI 5.0.3 (default).
  • MPICH 4.2.1
  • Intel OneAPI MPI 2021.12.1.

Mathematical Libraries

  • AMD Math Libraries:
  • AMD BLIS, BLAS-like libraries.
  • AMD FFTW, a fast Fourier transform library.
  • AMD libFLAME, a library for dense matrix computations. (LAPACK)
  • AMD ScaLAPACK.
  • HDF5: Version 1.14.3 (built with MPI)
  • Boost 1.85.0

Programming Languages

  • Julia 1.10.2, a high-level, high-performance dynamic programming language.
  • R 4.4.0, for statistical computing.
  • Python 3.11.7

Tools and Utilities

  • CUDA Toolkit 12.6.1
  • GDB (GNU Debugger)
  • Apptainer

Spack

We use the Spack package manager to build a set of common HPC software packages.

This section describes how to use an extent the central installation.

Alternatively, you can use a full independent Spack installation in your home directory, or use EasyBuild.

Using the Central Installation

Activate the central Spack installation with source /cluster/spack/0.22.2/share/spack/setup-env.sh.

You can use this as a starting point for your own software builds, without the need to rebuild everything from scratch.

For this purpose, add the following three files to ~/.spack:

  • ~/.spack/upstreams.yaml
    upstreams:
      central-spack:
        install_tree: /cluster/spack/0.22.2/opt/spack
  • ~/.spack/config.yaml
    config:
      install_tree:
        root: $HOME/spack/opt/spack
      source_cache: $HOME/spack/cache
  • ~/.spack/modules.yaml
    modules:
      default:
        roots:
          lmod: $HOME/spack/share/spack/lmod
        enable: [lmod]
        lmod:
          all:
            autoload: direct
          hide_implicits: true
          hierarchy: []

Also, put these two lines into your ~/.bashrc:

export MODULEPATH=$MODULEPATH:$HOME/spack/share/spack/lmod/linux-almalinux9-x86_64/Core
. /cluster/spack/0.22.2/share/spack/setup-env.sh

You can then use the central Spack installation, with local additions added in ~/spack.

Run spack compiler find to add the system compiler to your compiler list. Also run it after loading other compilers via module load to add those, too.

Overriding Package Definitions

If you need to override selected package definitions, create an additional file ~/.spack/repos.yaml:

repos:
  - $HOME/spack/var/spack/repos

and create a description for your local repo in ~/spack/var/spack/repos/repo.yaml:

repo:
  namespace: overrides

You can then copy the package definition you need to override, and edit it locally. Example for ffmpeg:

$ cd ~/spack/var/spack/repos/
$ mkdir -p packages/ffmpeg
$ cp /cluster/spack/0.22.2/var/spack/repos/builtin/packages/ffmpeg/package.py packages/ffmpeg
$ vim packages/ffmpeg/package.py
... edit as necessary (e.g. disable the patch for version 6.1.1) ...

When running spack install ffmpeg, your local override will take precedence over the central version.