Using the Module System
LMOD is very useful software system that is used on HPC clusters to manage several different software stacks and user environments. This allow users to switch between software stacks and packages on the cluster.
Get a List of ALL Software
The spider subcommand is a great search tool to find out if the software package has been installed as a system package. From the command line, run a spider command to output a list of the available software for the entire system:
module spider
Ex: module spider
Running the module spider command on Medicinebow and possible output:
[arccuser1@mblog1 ~]$ module spider
----------------------------------------------------------------------------
The following is a list of the modules and extensions currently available:
----------------------------------------------------------------------------
adios2: adios2/2.9.2-ompi
af3cli: af3cli/0.4.2
alphafold: alphafold/2.3.2
alphafold3: alphafold3/3.0.0
ansys: ansys/2024R2
apptainer: apptainer/default, apptainer/1.3.5, apptainer/1.4.1
arcc: arcc/1.0 ARCC added tools to the cluster
aspera-cli: aspera-cli/3.7.7
assimp: assimp/5.3.1
astral: astral/5.7.8
atk: atk/2.38.0
autoconf: autoconf/2.69_x86_64, autoconf/2.69_zen4
automake: automake/1.16.5_x86_64, automake/1.16.5_zen4
bam-readcount: bam-readcount/0.8.0
bcftools: bcftools/1.20
beagle-lib: beagle-lib/4.0.0
beast1: beast1/1.10.4
beast2: beast2/2.7.7
bedops: bedops/2.4.41
berkeley-db: berkeley-db/18.1.40_x86_64, berkeley-db/18.1.40_zen4
binutils: binutils/2.41
bison: bison/3.8.2
blast: blast/2.16.0
boost: boost/1.82.0__filesystem_True, boost/1.83.0__filesystem_False, ...
bowtie2: bowtie2/2.5.4
bwa: bwa/0.7.17
cairo: cairo/1.16.0
cgal: cgal/5.5.2
cmake: cmake/3.27.7
cuda-toolkit: cuda-toolkit/11.7.1, cuda-toolkit/12.4.1, ...
curl: curl/8.4.0__libidn2_False, curl/8.4.0__libidn2_True
cutadapt: cutadapt/4.1
diffutils: diffutils/3.9_x86_64, diffutils/3.9_zen4
dorado: dorado/0.8.2
eigen: eigen/3.4.0
elfutils: elfutils/0.189
elpa: elpa/2023.05.001-ompi
expat: expat/2.5.0
fastp: fastp/0.23.4
fastqc: fastqc/0.12.1
fftw: fftw/3.3.10-ompi, fftw/3.3.10
flex: flex/2.6.3, flex/2.6.4
font-util: font-util/1.4.0
freetype: freetype/2.11.1
fribidi: fribidi/1.0.12
g2c: g2c/1.7.0
gaussian: gaussian/16.AVX2.b01
gcc: gcc/11.4.0, gcc/13.2.0, gcc/14.2.0
gcloud: gcloud/521.0.0
gdal: gdal/3.7.3
gdbm: gdbm/1.23_x86_64, gdbm/1.23_zen4
gdk-pixbuf: gdk-pixbuf/2.42.10
geos: geos/3.12.0
gettext: gettext/0.22.3_x86_64, gettext/0.22.3_zen4
giflib: giflib/5.2.1
git: git/2.42.0
git-lfs: git-lfs/3.3.0
glib: glib/2.78.0
glproto: glproto/1.4.17
gmake: gmake/4.4.1_x86_64, gmake/4.4.1_zen4
gmp: gmp/6.2.1_x86_64, gmp/6.2.1_zen4
gnupg: gnupg/2.4.3
go: go/1.21.3
go-bootstrap: go-bootstrap/1.17.13
go-md2man: go-md2man/2.0.2
gobject-introspection: gobject-introspection/1.76.1
graphite2: graphite2/1.3.14
gsl: gsl/2.7.1
gsutil: gsutil/491.0.0
guppy-gpu: guppy-gpu/6.5.7
harfbuzz: harfbuzz/7.3.0
hdf5: hdf5/1.10.11__hl_True__fortran_False-ompi, ...
help2man: help2man/1.49.3
hisat-genotype: hisat-genotype/1.3.3
hisat2: hisat2/2.2.1
htslib: htslib/1.20
hypre: hypre/2.29.0-ompi
icu4c: icu4c/67.1
idl: idl/9.0
interproscan: interproscan/5.63-95.0
intltool: intltool/0.51.0
iq-tree: iq-tree/2.3.6
jasper: jasper/1.900.1, jasper/3.0.3
json-glib: json-glib/1.6.6
julia: julia/1.10.3, julia/1.11.6
kbproto: kbproto/1.0.7
kentutils: kentutils/1.04.0
keyutils: keyutils/1.6.1
krb5: krb5/1.20.1
lcms: lcms/2.13.1
libbsd: libbsd/0.11.7
libffi: libffi/3.4.4, libffi/3.4.6
libfontenc: libfontenc/1.1.7
libgcrypt: libgcrypt/1.10.2
libgd: libgd/2.3.3
libgeotiff: libgeotiff/1.7.1
libgit2: libgit2/1.7.0
libiconv: libiconv/1.17_x86_64, libiconv/1.17_zen4
libidn2: libidn2/2.3.4
libjpeg-turbo: libjpeg-turbo/3.0.0
libpng: libpng/1.6.39.
libsigsegv: libsigsegv/2.14_x86_64, libsigsegv/2.14_zen4
libslirp: libslirp/4.7.0
libtiff: libtiff/4.5.1
libtool: libtool/2.4.7_x86_64, libtool/2.4.7_zen4
libunistring: libunistring/1.1
libunwind: libunwind/1.6.2
libx11: libx11/1.8.4
libxau: libxau/1.0.8
libxcb: libxcb/1.14
libxcrypt: libxcrypt/4.4.35
libxdmcp: libxdmcp/1.1.4
libxext: libxext/1.3.3
libxfixes: libxfixes/5.0.2
libxfont: libxfont/1.5.4
libxft: libxft/2.3.2
libxi: libxi/1.7.6
libxkbcommon: libxkbcommon/1.5.0
libxkbfile: libxkbfile/1.0.9
libxml2: libxml2/2.10.3_x86_64, libxml2/2.10.3_zen4
libxmu: libxmu/1.1.4
libxpm: libxpm/3.5.12
libxrandr: libxrandr/1.5.3
libxrender: libxrender/0.9.10
libxscrnsaver: libxscrnsaver/1.2.2
libxt: libxt/1.1.5
libxtst: libxtst/1.2.2
lizard: lizard/1.0
lzo: lzo/2.10
m4: m4/1.4.19_x86_64, m4/1.4.19_zen4
mafft: mafft/7.526
matlab: matlab/2025b
mgard: mgard/2023-03-31
miniconda3: miniconda3/24.3.0
mpc: mpc/1.3.1_x86_64, mpc/1.3.1_zen4
mpfr: mpfr/4.2.0_x86_64, mpfr/4.2.0_zen4
multiqc: multiqc/1.24.1
muscle: muscle/5.2
ncurses: ncurses/6.4_x86_64, ncurses/6.4_zen4
nextflow: nextflow/23.10.0, nextflow/23.10.1
ninja: ninja/1.11.1
npth: npth/1.6
nvhpc: nvhpc/24.3, nvhpc/25.7
nvhpc-byo-compiler: nvhpc-byo-compiler/24.3, nvhpc-byo-compiler/25.7
nvhpc-hpcx: nvhpc-hpcx/24.3, nvhpc-hpcx/25.7
nvhpc-hpcx-2.20-cuda12: nvhpc-hpcx-2.20-cuda12/25.7
nvhpc-hpcx-cuda12: nvhpc-hpcx-cuda12/24.3, nvhpc-hpcx-cuda12/25.7
nvhpc-nompi: nvhpc-nompi/24.3, nvhpc-nompi/25.7
nvhpc-openmpi3: nvhpc-openmpi3/24.3
nvhpc-sdk: nvhpc-sdk/24.3, nvhpc-sdk/25.7
oneapi: oneapi/2024.1.0, oneapi/2024.2.1
openblas: openblas/0.3.24
pango: pango/1.50.13
parallel-netcdf: parallel-netcdf/1.12.3-ompi
paraview: paraview/5.12.0
parmetis: parmetis/4.0.3-ompi
pcre: pcre/8.45
pcre2: pcre2/10.42
perl: perl/5.38.0_x86_64, perl/5.38.0_zen4
perl-clone: perl-clone/0.46
perl-data-dumper: perl-data-dumper/2.173
perl-encode-locale: perl-encode-locale/1.05
perl-extutils-config: perl-extutils-config/0.008
perl-file-listing: perl-file-listing/6.04
perl-html-parser: perl-html-parser/3.72
perl-http-message: perl-http-message/6.44
perl-http-negotiate: perl-http-negotiate/6.01
perl-io-html: perl-io-html/1.004
perl-libwww-perl: perl-libwww-perl/6.68
perl-lwp-mediatypes: perl-lwp-mediatypes/6.02
perl-module-build: perl-module-build/0.4232
perl-net-http: perl-net-http/6.22
perl-uri: perl-uri/5.08
perl-www-robotrules: perl-www-robotrules/6.02
perl-xml-parser: perl-xml-parser/2.46
petsc: petsc/3.20.1-ompi
picard: picard/3.2.0
pigz: pigz/2.7_x86_64, pigz/2.7_zen4
pinentry: pinentry/1.2.1
pixman: pixman/0.42.2
pkgconf: pkgconf/1.9.5_x86_64, pkgconf/1.9.5_zen4
podman: podman/4.5.1
proj: proj/9.2.1
protobuf: protobuf/3.21.12
py-cython: py-cython/0.29.36, py-cython/3.0.4
py-mako: py-mako/1.2.4
py-markupsafe: py-markupsafe/2.1.3
py-mpi4py: py-mpi4py/3.1.4-ompi
py-numpy: py-numpy/1.26.1
py-packaging: py-packaging/23.1
py-pip: py-pip/23.1.2
py-pyproject-metadata: py-pyproject-metadata/0.7.1
py-setuptools: py-setuptools/68.0.0
py-tomli: py-tomli/2.0.1
pycharm: pycharm/2024.2.4
python: python/3.10.6, python/3.12.0
python2: python2/2.7.18
qiime2-amplicon: qiime2-amplicon/2024.5
qiime2-metagenome: qiime2-metagenome/2024.5
qperf: qperf/0.4.11
qt: qt/5.15.11
r: r/4.4.0
r-class: r-class/7.3-21
r-classint: r-classint/0.4-9
r-dbi: r-dbi/1.1.3
r-e1071: r-e1071/1.7-13
r-kernsmooth: r-kernsmooth/2.23-20
r-magrittr: r-magrittr/2.0.3
r-mass: r-mass/7.3-59
r-proxy: r-proxy/0.4-27
r-rcpp: r-rcpp/1.0.10
r-s2: r-s2/1.1.2
r-units: r-units/0.8-1
r-wk: r-wk/0.7.2
randrproto: randrproto/1.5.0
rclone: rclone/1.63.1
rdma-core: rdma-core/41.0
re2c: re2c/2.2
readline: readline/8.2_x86_64, readline/8.2_zen4
recordproto: recordproto/1.14.2
regtools: regtools/1.0.0
renderproto: renderproto/0.11.1
rseqc: rseqc/5.0.3
rstudio: rstudio/2024.04.1, rstudio/2024.04.2
ruby: ruby/3.1.0
rust: rust/1.75.0
rust-bootstrap: rust-bootstrap/1.75.0
samtools: samtools/1.20
shared-mime-info: shared-mime-info/1.10
silver-searcher: silver-searcher/2.2.0
singularity: singularity/4.1.0
slirp4netns: slirp4netns/1.2.0
slurm: slurm/latest
snappy: snappy/1.1.10
sonnet: sonnet/19.52.2025
spades: spades/4.0.0
sqlite: sqlite/3.43.2
sratoolkit: sratoolkit/3.1.1
stress-ng: stress-ng/0.17.08
superlu-dist: superlu-dist/8.1.2-ompi
swig: swig/4.1.1
tcl: tcl/8.6.12
texinfo: texinfo/7.0.3_x86_64, texinfo/7.0.3_zen4
trimmomatic: trimmomatic/0.39
udunits: udunits/2.2.28
vcftools: vcftools/0.1.17
visual-studio-code: visual-studio-code/1.94.2
voropp: voropp/0.4.6
vsearch: vsearch/2.22.1
wannier90: wannier90/3.1.0-ompi, wannier90/3.1.0
xcb-proto: xcb-proto/1.15.2
xcb-util: xcb-util/0.4.1
xextproto: xextproto/7.3.0
xproto: xproto/7.0.31
yaml-cpp: yaml-cpp/0.7.0
zfp: zfp/0.5.5
zlib: zlib/1.3
zlib-ng: zlib-ng/2.1.4_x86_64, zlib-ng/2.1.4_zen4
zoltan: zoltan/3.901-ompi
zstd: zstd/1.5.5_x86_64__programs_False, zstd/1.5
5_x86_64__programs_True, ...
----------------------------------------------------------------------------
To learn more about a package execute:
$ module spider Foo
where "Foo" is the name of a module.
To find detailed information about a particular package you
must specify the version if there is more than one version:
$ module spider Foo/11.1
----------------------------------------------------------------------------
If you expended the section, you may notice the list of possible modules available on Medicinebow is very long and there are probably a large number of them that you're not concerned with. If you're wondering how to search for a specific package by name, continue to the next section.
Search for a Specific Module
To search for specific packages and/or versions, you can supply the names/arguments to the command:
module spider samtools
Ex: module spider miniconda3
Running the module spider miniconda3 command on Medicinebow and possible output:
[arccuser1@mblog1 ~]$ module spider miniconda3
----------------------------------------------------------------------------
miniconda3: miniconda3/24.3.0
----------------------------------------------------------------------------
You will need to load all module(s) on any one of the lines below before the "miniconda3/24.3.0" module is available to load.
arcc/1.0
Help:
The minimalist bootstrap toolset for conda and Python3.
If there is only one version, the output will contain information regarding which compilers are required to be loaded before the package can be loaded as well as provide a brief segment on the help of the module. If there are multiple versions available, the output contains which versions are available and instructions to get more information on the individual version.
Find out how to load a Specific Version of a Module
To get information regarding a specific version of the package, include the version as part of the argument in the command:
module spider samtools/1.6
For example, when specifying all apps you want to load the general process is:
1. Find versions
2. Find a version’s dependencies.
3. Check what is already loaded and what is missing.
4. Load required (missing) dependencies.
5. Load application
There are opportunities to use regular expressions to search for modules. See output from module help command described below for more information.
Get a list of all available LMOD commands
To get a full list of all available LMOD commands, use a module --help
Ex: module --help
Running the module --help command on Medicinebow and possible output:
[arccuser1@mblog1 ~]$ module --help
Usage: module [options] sub-command [args ...]
Options:
-h -? -H --help This help message
-s availStyle --style=availStyle Site controlled avail style: grouped
(default: grouped)
--regression_testing Lmod regression testing
-D Program tracing written to stderr
--debug=dbglvl Program tracing written to stderr (where
dbglvl is a number 1,2,3)
--pin_versions=pinVersions When doing a restore use specified
version, do not follow defaults
-d --default List default modules only when used with
avail
-q --quiet Do not print out warnings
--expert Expert mode
-t --terse Write out in machine readable format for
commands: list, avail, spider, savelist
--initial_load loading Lmod for first time in a user
shell
--latest Load latest (ignore default)
--ignore_cache Treat the cache file(s) as out-of-date
--novice Turn off expert and quiet flag
--raw Print modulefile in raw output when used
with show
-w twidth --width=twidth Use this as max term width
-v --version Print version info and quit
-r --regexp use regular expression match
--gitversion Dump git version in a machine readable
way and quit
--dumpversion Dump version in a machine readable way
and quit
--check_syntax --checkSyntax Checking module command syntax: do not
load
--config Report Lmod Configuration
--config_json Report Lmod Configuration in json format
--mt Report Module Table State
--timer report run times
--force force removal of a sticky module or save
an empty collection
--redirect Send the output of list, avail, spider
to stdout (not stderr)
--no_redirect Force output of list, avail and spider
to stderr
--show_hidden Avail and spider will report hidden
modules
--spider_timeout=timeout a timeout for spider
-T --trace
--nx --no_extensions
--loc --location Just print the file location when using
show
module [options] sub-command [args ...]
Help sub-commands:
------------------
help prints this message
help module [...] print help message from module(s)
Loading/Unloading sub-commands:
-------------------------------
load | add module [...] load module(s)
try-load | try-add module [...] Add module(s), do not complain if not
found
del | unload module [...] Remove module(s), do not complain if not
found
swap | sw | switch m1 m2 unload m1 and load m2
purge unload all modules
refresh reload aliases from current list of
modules.
update reload all currently loaded modules.
Listing / Searching sub-commands:
---------------------------------
list List loaded modules
list s1 s2 ... List loaded modules that match the
pattern
avail | av List available modules
avail | av string List available modules that contain
"string".
overview | ov List all available modules by short
names with number of versions
overview | ov string List available modules by short names
with number of versions that contain
"string"
spider List all possible modules
spider module List all possible version of that module
file
spider string List all module that contain the
"string".
spider name/version Detailed information about that version
of the module.
whatis module Print whatis information about module
keyword | key string Search all name and whatis that contain
"string".
Searching with Lmod:
--------------------
All searching (spider, list, avail, keyword) support regular expressions:
-r spider '^p' Finds all the modules that start with
`p' or `P'
-r spider mpi Finds all modules that have "mpi" in
their name.
-r spider 'mpi$ Finds all modules that end with "mpi" in
their name.
Handling a collection of modules:
--------------------------------
save | s Save the current list of modules to a
user defined "default" collection.
save | s name Save the current list of modules to
"name" collection.
reset The same as "restore system"
restore | r Restore modules from the user's.
"default" or system default.
restore | r name Restore modules from "name" collection.
restore system Restore module state to system defaults.
savelist List of saved collections.
describe | mcc name Describe the contents of a module
collection.
disable name Disable (i.e. remove) a collection.
Miscellaneous sub-commands:
---------------------------
is-loaded modulefile return a true status if module is loaded.
is-avail modulefile return a true status if module can be
loaded.
show modulefile show the commands in the module file.
use [-a] path Prepend or Append path to MODULEPATH.
unuse path remove path from MODULEPATH.
tablelist output list of active modules as a lua
table.
Important Environment Variables:
--------------------------------
LMOD_COLORIZE If defined to be "YES" then Lmod prints
properties and warning in color.
--------------------------------------------------------------------------
Lmod Web Sites
Documentation: http://lmod.readthedocs.org
GitHub: https://github.com/TACC/Lmod
SourceForge: https://lmod.sf.net
TACC Homepage: https://www.tacc.utexas.edu/research-development/tacc-projects/lmod
To report a bug please read http://lmod.readthedocs.io/en/latest/075_bug_reporting.html
--------------------------------------------------------------------------
Modules based on Lua: Version 8.7 2022-04-16 13:49 -05:00
by Robert McLay mclay@tacc.utexas.edu.
What modules are available
Module avail
Additionally, using the avail subcommand will show a table of available modules that are capable of being loaded into the current environment.
Loading and Unloading Modules
To remove the software from the environment, using the unload subcommand will remove the module from the environment. If the module specified isn't loaded, this becomes a no-op (no operation).
It is important to note that when loading modules that are dependent on a compiler and the compiler module is unloaded, Lmod will deactivate the dependent modules until the correct compiler is loaded or that an appropriate compiler is loaded that has alternative versions of the software available.
Module Collections
Module collections are a great method to keep certain software stacks in order and switch between them regularly and quickly. They allow for all modules to be loaded, then saved, and recalled later for use.
To save a module collection:
By default, this is will save the loaded modules as the default collection. You can optionally supply a name to the command to give a custom name and have many collections available:Swapping between collections requires the restore subcommand is used. Without any additional arguments, the module system will load your default collection. If there is no default collection defined, the system default collection will be loaded. Use a NAME as an argument to load a specific collection.
A special condition to load the system defined collection is done with the reset subcommand allowing a fresh start of configured modules. Note, this doesn't take into account what is inserted into shell startup files (i.e., .bashrc, .cshrc, etc.) or optionally: To query the system and determine which module collections have been created, use the savelist subcommand. It's important to use names that are memorable, but that doesn't necessarily describe all the contents of the collection. To list which modules are part of the collection, use the describe subcommand with an optional argument to list contents of a certain NAME collection.To disable a module collection that is no longer needed, use the disable subcommand.
Automatically Loading Modules
Some core modules are automatically loaded when logging in. On MedicineBow and GannettPeak, these automatically-loaded modules do not include a compiler module such as gcc or intel that start the hierarchy for the organization of other modules, since for different users, different choices of default compiler would make sense. However, a user can customize the automatically-loaded modules by adding module load commands to the .bashrc file in their home directory.
Examples
To automatically load one of the compilers when logging in, append the following lines to your .bashrc file:
For gcc
Module shorthand with ml
Lmod provides a shorthand interface to the modules command as ml. The command is quite powerful and allows quick access to the modules system. The default action of ml is to list the loaded modules. Providing a module as an argument will load the module.
Modules can quickly be unloaded as well by supplying a nearly identical command, but with the - operator before the argument: Querying the system of available modules is easy:The ml command is very useful and should be explored.