Using software in modules¶
To get your work done on the cluster, the software you require must be available on the cluster. Much common software is already installed, but if you need some special program it has to be installed. As a user you have the possibility to install software in your home directory. If you need support on installation please send a support request.
To organise much of the software installed on the cluster we use the Environment Module System https://en.wikipedia.org/wiki/Environment_Modules_(software). It allows you to list available software and dynamically load software modules in your command line session. The command used is simply called module, see man module for detailed usage information.
We offer a module system with a lot of pre-installed software. If your software isn't available, we offer several compilers for compiling the software yourself. Many languages also have systems in place for user local installations, see Python, Perl below. If it's a common software, we can do a system installation.
You can also use libraries, build tools, and compilers from the module system to build your own software.
We use EasyBuild to build all software.
Modules¶
A module system is used to allow the user to specify which application/software they want to use on the cluster. The modules package allows dynamical modification of a user's environment (PATH etc.), which makes the program available from the shell. Modules can be loaded and unloaded dynamically.
The module
command¶
The module command (or the ml
shortcut) controls how to change the software
you have available. For the complete manual, please use
To search for a module names:
To search for keywords in a module (such as extensions in bundles):
To view available software possible to load directly:
To see what modules are loaded at the moment use:
To load/unload a module:
module load <modulename>
module unload <modulename>
module purge # Unloads all currently loaded modules`
ml <modulename>
ml unload <modulename>
ml purge
To see what a module does, use
This will display what environment variables the module sets or modifies.
Toolchains¶
A toolchain is a set of modules that makes up the necessary components to build most software.
Most commercial (closed source) tools, do not require a toolchain, e.g. Mathematica, MATLAB. These can be loaded directly;
other software is build for a particular toolchain, predominatly foss
(GCC,
OpenMPI, OpenBLAS), and intel
.
graph TD
GCCcore --> GCC & intel-compilers & NVHPC
GCC --> gompi & gfbf --> foss
intel-compilers --> iimpi & iimkl --> intel
NVHPC --> nvompi --> nvofbf
Note: You can see the CUDA version in as a version suffix, indicating GPU support (but remember to look at the job statistics to verify that you are actually using the GPUs).
Finding compatible software¶
You can't mix toolchains; something built with e.g. foss-2022a
can not be
combined with anything built for foss-2021b
. Loading most modules will load
many additional modules which it depends on, and trying to swap them out will
not be compatible. If you need a library updated for a newer toolchain you can
request it by contacting the support.
The module command will complain if you accidentally try to load incompatible modules.
module load TensorFlow/2.11.0-foss-2022a-CUDA-11.7.0
module load CMake/3.27.6-GCCcore-13.2.0 # This will fail; it uses a different compiler version
To find which compiler you have currently loaded (via
TensorFlow/2.11.0-foss-2022a-CUDA-11.7.0
here) you can list them
module load TensorFlow/2.11.0-foss-2022a-CUDA-11.7.0
moduel list # shows all the loaded dependencies
where you will see it was GCCcore-11.3.0
.
You can module purge
to start over if you loaded the wrong versions.
Recent toolchains¶
Key software in recent toolchains:
Release | GCC | OpenMPI | Intel | CUDA | Python |
---|---|---|---|---|---|
2021a | 10.3.0 | 4.1.1 | 2021.2.0 | 11.3.1 | 3.9.5 |
2021b | 11.2.0 | 4.1.1 | 2021.4.0 | 11.4.1 | 3.9.6 |
2022a | 11.3.0 | 4.1.4 | 2022.1.0 | 11.7.0 | 3.10.4 |
2022b | 12.2.0 | 4.1.4 | 2022.2.1 | 12.0.0 | 3.10.8 |
2023a | 12.3.0 | 4.1.5 | 2023.1.0 | 12.1.1 | 3.11.3 |
2023b | 13.2.0 | 4.1.6 | 2023.2.1 | 12.4.0 | 3.11.5 |