Updated 2021-05-17
Modules Guide¶
Navigating the Modules System¶
At PACE, all Coda systems operate on the same software stack, which is made accessible to users in the use of Lmod, developed by Texas Advanced Computing Center. Lmod is a Lua-based (the L in Lmod) modules system, which supports the hierarchical software module trees. This feature is used extensively by PACE to only expose software supported under a coherent set of MPI implementations and compilers at one time. However, in most cases, as a user, you may just want to explore modules, load modules, and also save them for running jobs. Please have a look at the command summary table below for most common commands.
Lmod Command Table¶
Lmod Command | Definition |
---|---|
module list |
List the modules that are currently in use |
module --help |
Get help for modules |
module help <software> |
Get help for software (provided with some) |
module spider <software> |
General software search, no argument shows all software from A-Z |
module avail <software> |
General software listing in the current scope |
module load <software> |
Load specific software |
module unload <software> |
Unload specific software |
module show <software> |
See what the module evaluates to for the current shell environment |
module purge |
Completely unload modules |
Create Private Modules¶
The modules system allows users to create and use modules in private directories. The following steps outline how to create private modules:
- Make the directory for storing personal modules
mkdir ~/privatemodules
- Create an empty module inside that directory
cp /etc/modulefiles/empty ~/privatemodules/empty
- Load the system-module that allows personal module use
module load use.own
- Check that private modules are now supported
module avail
- The
privatemodules
section should list the "empty" module
- Create your own modules
- Look at the module files in
/etc/modulefiles/
for examples of how to create modules. - User-defined environment variable can be added using
setenv VAR /where/to/find/it
- Look at the module files in
## FAQ
- What happened to
.pacemodules
? It is no longer supported. We are moving to using commands completely supported by Lmod, so that if a user should go to another external system, there will be no surprises. Instead, consider using Lmod's module collections:
Lmod Command | Definition |
---|---|
module save <collection> |
Save the modules to a collection (no collection name is the default) |
module restore <collection> |
Restore the modules in a collection (no collection name is the default) |
-
How do I start over with module collections? Simply delete the folder or files in
$HOME/.lmod.d
. -
Regarding module collections, why not just put everything in my
.bash_profile
or my shell profile? A user is always free to do this. However, separate management of modules might be better for software reproducibility. Consider this example, a user develops software usinggcc/10.1.0
. Then for that specific development, one can stash their modules underneath a collection likemodule save mySoftwareCollection
and load that collection withmodule restore mySoftwareCollection
. -
Do I really need the pace module? If you are an advanced user, and you know what you need on the cluster, then no, it is not needed. However, we can support you best if you work closely with the modules supported by the
pace
module, since there are far too many combinations of MPI and compiler to support.
History¶
PACE systems that were using the operating system Red Hat Enterprise Linux (RHEL) 6, used another modules system, called Environment Modules. Moving to Lmod enabled improvements such as module hierarchy, extensive support for module collections, and strong support for user/community modules.