Skip to content

Migrating to the upgraded module system

The OS upgrade requires reinstalling all software on the HPCC. ICER has also used this as an opportunity to realign our module system closer to the tools we use to install software.

As such, users have to take steps to transition their workflows to work successfully with the new module system. Please follow the steps below to make the necessary changes.

The key points are to:

  1. Look up the new names/versions for software
  2. Make sure that when loading multiple pieces of software at once, they have compatible "toolchains"

Find the new names of software

The names of all nearly all software have changed. To search for the new software names, please review the Available Software page or use the module spider command.

For example, you can load R in the previous module system using

1
module load GCC/11.2.0 OpenMPI/4.1.1 R/4.2.2

On the upgraded module system, search for R and ignore the "gateway" modules that are dependencies. Additionally, most of the versions of software supported have changed, so you may need to search without the version.

input
1
module spider R
output
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
-------------------------------------------------------------------
  R:
-------------------------------------------------------------------
    Description:
      R is a free software environment for statistical computing
      and graphics.

     Versions:
        R/3.6.3-foss-2022b
        R/4.2.2-foss-2022b
        R/4.3.2-gfbf-2023a
        R/4.3.3-gfbf-2023b
    ...

R/4.2.2 is available under the name R/4.2.2-foss-2022b.

The line

1
module load GCC/11.2.0 OpenMPI/4.1.1 R/4.2.2

in a script or on the command line can then be replaced with

1
module load R/4.2.2-foss-2022b

On the new operating system. When there is only one version of the software with that version, you can use only the version and leave off the toolchain identifier, e.g.,

1
module load R/4.2.2

will also work.

Load modules from compatible toolchains

In the new module system, the structure of most module names follows the same format:

1
<software_name>/<software_version>-<toolchain_name>-<toolchain_version>

The "toolchain" is the set of programs used to compile and install that software, and needs to be loaded first before the software itself can be loaded. On the old system, this was done manually, e.g., by first loading GCCcore and OpenMPI (see the above example). On the new system this is done automatically.

However, this allows for the potential of loading modules with incompatible toolchains at the same time. Doing so will produce an error message, e.g.,

input
1
module load R/4.2.2-foss-2022b JAGS/4.3.2-foss-2023a
output
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
Lmod has detected the following error:  The previous module command attempted to load "foss/2023a" while "foss/2022b" was already
loaded. This is likely due to loading a module with incompatible dependencies from the one currently loaded. Please use

    $ module spider <original_module_name>

To search for other versions that may have compatible dependencies. If there are no such versions, please unload your current modules with

    $ module purge

before attempting to load this module. For additional assistance, please contact ICER staff at https://contact.icer.msu.edu.

Instead, you will need to search for versions of the software that have compatible toolchains using the module spider command (again, see the above example).

Another alternative (if it fits your workflow) is to load these modules in separate stages. First, load the first module, and do your work with that software. Then run module purge, load the second module, and do your work with that software.

Loading modules from subtoolchains is also allowed

You are also allowed to load modules from "subtoolchains" that are compatible with a toolchain that is already loaded, that is, software that has been installed with a subset of the pieces in a full toolchain. For example, the foss/2023a toolchain includes GCCcore/12.3.0 which is a subtoolchain. The two primary toolchains are foss and intel. For a full listing of their subtoolchains, see EasyBuild's documentation, but common examples include gfbf, gompi, iimpi, and iimkl.

Most subtoolchains share the same versioning scheme, labeled by a year and a letter. On the HPCC the three primary versions of all toolchains are 2022b, 2023a, and 2023b. So for example, you can load modules with the foss-2023a and gfbf-2023a toolchains at the same time. The exception to this scheme is GCCcore. It is always named using the version of the GCC software, and corresponds to the year/letter scheme as follows:

  • GCCcore/12.2.0 is in all 2022a toolchains
  • GCCcore/12.3.0 is in all 2023a toolchains
  • GCCcore/13.2.0 is in all 2023b toolchains

This can be verified by loading a year/letter toolchain and running module list, e.g.,

input
1
2
module load foss/2023a
module list
output
1
2
3
4
5
6
7
8
9
Currently Loaded Modules:
  1) GCCcore/12.3.0                     9) hwloc/2.9.1-GCCcore-12.3.0       17) OpenBLAS/0.3.23-GCC-12.3.0
  2) zlib/1.2.13-GCCcore-12.3.0        10) OpenSSL/1.1                      18) FlexiBLAS/3.3.1-GCC-12.3.0
  3) binutils/2.40-GCCcore-12.3.0      11) libevent/2.1.12-GCCcore-12.3.0   19) FFTW/3.3.10-GCC-12.3.0
  4) GCC/12.3.0                        12) UCX/1.14.1-GCCcore-12.3.0        20) gompi/2023a
  5) numactl/2.0.16-GCCcore-12.3.0     13) libfabric/1.18.0-GCCcore-12.3.0  21) FFTW.MPI/3.3.10-gompi-2023a
  6) XZ/5.4.2-GCCcore-12.3.0           14) PMIx/4.2.4-GCCcore-12.3.0        22) ScaLAPACK/2.2.0-gompi-2023a-fb
  7) libxml2/2.11.4-GCCcore-12.3.0     15) UCC/1.2.0-GCCcore-12.3.0         23) foss/2023a
  8) libpciaccess/0.17-GCCcore-12.3.0  16) OpenMPI/4.1.5-GCC-12.3.0

Note that software without a toolchain (e.g., MATLAB) can be loaded with any other module.

Use module purge to load software incompatible with default modules

All default modules are installed under 2023a toolchains. If you try to load a module with any other toolchain, you must first run

1
module purge

to avoid the errors discussed above.

Use the exact name of software when loading

At the moment, the module system is case sensitive. For example,

1
module load Python

works, while

1
module load python

does not. ICER is working to resolve this, but for now, please make sure to use the name exactly as specified in the module spider results (note that searching with module spider is not case sensitive).

Search for and load extensions

Some modules include "extensions" to software. For example, the R-bundle-CRAN includes hundreds of R packages, and SciPy-bundle includes many commonly used Python packages for data analysis. When using module spider, you can also search for these extensions:

input
1
module spider numpy
output
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
----------------------------------------------------------------------------
  numpy:
----------------------------------------------------------------------------
     Versions:
        numpy/1.19.4 (E)
        numpy/1.22.3 (E)
        numpy/1.24.2 (E)
        numpy/1.25.1 (E)
        numpy/1.26.2 (E)

Names marked by a trailing (E) are extensions provided by another module.


----------------------------------------------------------------------------
  For detailed information about a specific "numpy" package (including how to load the modules) use the module's full name.
  Note that names that have a trailing (E) are extensions provided by other modules.
  For example:

     $ module spider numpy/1.26.2
----------------------------------------------------------------------------

As the message suggests, extensions are marked with an (E). To figure out what module loads them, run module spider with the specific version:

input
1
module spider numpy/1.26.2
output
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
----------------------------------------------------------------------------
  numpy: numpy/1.26.2 (E)
----------------------------------------------------------------------------
    This extension is provided by the following modules. To access the extension you must load one of the following modules. Note that any module names in parentheses show the module location in the software hierarchy.


       SciPy-bundle/2023.11-gfbf-2023b


Names marked by a trailing (E) are extensions provided by another module.

Request missing modules

If a software module you need was not carried over from the previous system, please request it by submitting a ticket with the subject "OS Upgrade 2024".

If you need access to a piece of software immediately and cannot wait for it to be reinstalled, please look into using our backwards compatibility options.

Version availability

ICER may not be able to install older versions of software especially if they require older compilers that do not work well on the new operating system. Please try using versions of the software that are already installed before reaching out to request older versions. When requesting an older version, please provide a short justification.