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
------------------------
Other ways to search
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:
module spider numpy
----------------------------------------------------------------------------
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:
module spider numpy/1.26.2
----------------------------------------------------------------------------
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.,
module load R/4.2.2-foss-2022b JAGS/4.3.2-foss-2023a
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 all2022a
toolchainsGCCcore/12.3.0
is in all2023a
toolchainsGCCcore/13.2.0
is in all2023b
toolchains
This can be verified by loading a year/letter toolchain and running module list
, e.g.,
module load foss/2023a
module list
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>
<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*