Updated 2021-05-17

Modules Guide

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:

  1. Make the directory for storing personal modules
    • mkdir ~/privatemodules
  2. Create an empty module inside that directory
    • cp /etc/modulefiles/empty ~/privatemodules/empty
  3. Load the system-module that allows personal module use
    • module load use.own
  4. Check that private modules are now supported
    • module avail
    • The privatemodules section should list the "empty" module
  5. 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

## 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 using gcc/10.1.0. Then for that specific development, one can stash their modules underneath a collection like module save mySoftwareCollection and load that collection with module 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.