Module Structure
The idea behind our module organization on MOGON NHR
Hundreds of software modules are installed on a typical cluster during its lifetime. This amount may complicate the usage of the cluster, especially for beginners. At the same time, a lot of advanced users are interested only in the latest versions of the programs. Therefore, for MOGON-NHR we introduce a system for module versions rotation and organization.
The modules are organized into several categories:
- current - most recent versions of the software modules;
- legacy - recently retired current modules;
- archive - recently retired legacy modules and older ones.
By default, you only see the current modules. If you want to use modules from any other category, you have to activate it first.
For example, to activate the category legacy, you have to run following command:
You will now see all the modules from current and legacy categories together.
Rotation policy
We update modules seamlessly to ensure your workflow remains uninterrupted. After testing, we shift module categories: legacy modules move to archive, current modules become legacy, and the ones we’ve updated become current. This cycle is called module rotation.
Every module rotation is done on a maintenance day and is announced by HPC team in advance.
Most common issues
Every policy has a potential to cause little problems. We will list several common ones here.
Usage of specific module versions
It is a good practice to work with the same version of a software throughout your project. For example, you are using Python 3.10.8
and load it with module load lang/Python/3.10.8-GCCcore-12.2.0
. However, after module rotation, this command will fail with:
The reason is the update of the current modules, where Python has changed to a newer version Python 3.11.3
.
You have a choice:
- To keep using your old version, you need to activate legacy modules by executing
- To switch to a newer version of Python, you need to adapt your
module load
command:
GCCcore-12.2.0
to GCCcore-12.3.0
Usage of default module versions
Consider situations where you use the default modules. In this case, you load the latest Python
with
After module rotation, your workflow remains unchanged. However, the Python version you load shifts from 3.10.8
(old current, now in legacy) to 3.11.3
(new current).
This change may significantly impact your program’s behavior. While it might be acceptable for Python
, scientific software like TensorFlow
, Gromacs
, etc., may exhibit deviations from previous behavior.