The module system
Using software in modules¶
To run software on the cluster, it must be available in the system. Many common programs are pre-installed, but if a specific program is missing, you can install it in your home directory. For installation support, please submit a support request.
We use the Environment Modules system, allowing users to list available software and dynamically load it into their session. The command for this is module
(or ml
). See man module
for details.
If you do not load a specific software version, the system will use the most recent available version.
Important: If the required software is not available, avoid installing it directly with pip
. Instead, use a virtual environment or a container for proper installation.
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/install all software systematically.
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) allows you to manage available software:
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
Viewing Module Details:¶
To see what a module does, use
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-2024a
can not be
combined with anything built for foss-2023b
. 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 matplotlib/3.9.2-gfbf-2024a
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
matplotlib/3.9.2-gfbf-2024a
here) you can list them
Where you will see it was GCCcore-13.3.0
. You can also refer to the table below.
If incorrect modules are loaded, reset with:
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 |
2024a | 13.3.0 | 5.0.3 | 2024.2.0 | 12.6.0 | 3.12.3 |