Chapter 5

Software

Provided Software

On each cluster, one or more stacks of prebuilt software are provided for development, numerics, visualization, and various research disciplines. The software stacks, described in more detail on this page, are bundles of individually loadable modules, where various pre-built software packages are provided. As modules, multiple versions of the same software package can be provided in a way that avoids conflicts, which allows things like:

  • user A could use FFTW 3.3.8 compiled by GCC
  • user B could use FFTW 3.3.9 compiled by GCC in one job and 3.3.8 compiled by GCC in another job
  • user C could load FFTW 3.3.8 compiled by Intel compilers
  • user D could use FFTW 3.3.8 compiled by GCC with OpenMPI
  • user E could use FFTW 3.3.8 compiled by GCC with Intel MPI

Users can load, unload, and search for modules using the module command. See Module Basics for how to use modules.

When Software Isn’t Provided

If a software package is not available in the provided software stack or isn’t built in exactly the way you need (different version, different options/compiler flags, etc), there are two possible paths forward:

  1. Ask if the software package can be added to one of the software stacks. The easiest way to do this is to write a support ticket. There is no guarantee that it will be added, and even if it is added it might not be available until the next module revision which could take months. But, if a software package is needed by many people and isn’t provided, this is how we find out that it should be provided.
  2. Build it yourself on the cluster, possibly using packages in the modules as dependencies, compilers, environment managers, etc.

To help build software yourself, modules are provided for

  1. anaconda/miniconda, which has a vast collection of pre-built software with a focus on numeric and scientific applications. Run module avail anaconda and module avail miniconda to see the available versions.
  2. Spack, which can build a decent set of packages from source allowing fine tuned control of compilation features and optimizing for specific hardware architectures. See the Spack page for more information.