Skip to content

Searching software modules

This page contains a basic overview of common interactions with the module system. For a guided tutorial, please see our Introduction to the Module System.

Searching in docs

Please refer to the Available Software page for a searchable list of available modules and how to load them.

Command line search using module spider

To search for a particular software module (e.g. "ABC"), you would run

module spider ABC # can also be abc, ABc...

Once you find it, and want to load a specific version (say 1.1.1), run

module spider ABC/1.1.1-foss-2023a # should only be ABC

The resulting output information will tell you what prerequisites modules are needed before loading your ABC/1.1.1-foss-2023a.

Command line searching with a partial name

You don't need to know the full name of the software. For example, let's search for all modules related to VCF:

$ module spider vcf

------------------------
  VCFtools: VCFtools/0.1.16-GCC-12.3.0
------------------------
    Description:
      The aim of VCFtools...

    This module can be loaded directly: module load VCFtools/0.1.16-GCC-12.3.0

    Help:
      ...

------------------------
  vcfR:
------------------------
    Versions:
        vcfR/1.14.0 (E)
        vcfR/1.15.0 (E)

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

------------------------
For detailed information about a specific "vcfR" 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 vcfR/1.15.0
------------------------

The output of module spider may also suggest other ways to search for modules.

See the example for PCRE below, which suggests both "other possible module matches" and "other possible module matches."

$ module spider PCRE

--------------------------
  PCRE:
--------------------------
    Description:
      The PCRE library...

     Versions:
        PCRE/8.44-GCCcore-10.2.0
        ...
        PCRE/8.45-GCCcore-13.2.0
     Other possible modules matches:
        PCRE2

--------------------------
  To find other possible module matches execute:

      $ module -r spider '.*PCRE.*'

--------------------------

Searching for and loading 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
module spider numpy
output
----------------------------------------------------------------------------
  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
module spider numpy/1.26.2
output
----------------------------------------------------------------------------
  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.

Loading a specific version

If a module is loaded without specifying a version - e.g. module load HDF5 - the version of that module from the foss/2023a toolchain (or a subtoolchain) will be loaded. Such modules will be compatible with the HPCC's default modules. In this case, HDF5/1.14.0-gompi-2023a will be loaded.

A specific version of a module can be loaded using its full name. The structure of most module names follows the same format:

<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.

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
module load R/4.2.2-foss-2022b JAGS/4.3.2-foss-2023a
output
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.

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.

Note that module purge is always needed before you start loading your own modules. This command will clear the default modules and prevent version conflicts.

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. Subtoolchains are subsets 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 four 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
module load foss/2023a
module list
output
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.

Saving and restoring module sets

Your currently loaded modules can be saved for easy access at a later time.

To save your modules, run

module save <collection_name>
where <collection_name> is replaced with your desired name.

You can then re-load this collection of modules with

module restore <collection_name>

To see all saved collections, use

module savelist

To see the contents of a collection, use

module describe <collection_name>

A saved collection can be removed with

module disable <collection_name>

Troubleshooting

Sometimes, module spider doesn't work because your personal module cache is out of date. To clear it, do rm ~/.cache/lmod/spider*