LMOD - New Module System
Advanced users can skip to the summary at the bottom of this page
These are the major changes after the January 2024 maintenance
New Module System (LMOD): All software modules have been reinstalled. Version names for all modules will be slightly different. The output from commands like "module avail" and "module load" will be different.
New Operating System: The operating system is upgraded to RHEL 9.2
MPI programs are compiled with HPCX MPI, the new industry standard
Python packages will not be installed as modules; users can install these packages in their home directories -> Users have better control based upon their specific requirements
Python2 is not longer available as a system-installed program
Users need to make the following changes:
Job Scripts:
Module names
Order of loading is important for MPI applications. Load the MPI module first.
Application changes:
User-installed applications may need to be reinstalled, if they do not work correctly.
Python and Conda environments, R packages may need to be reinstalled.
Use
python -m venv
instead ofvirtualenv
for Python environments
LMOD - Hierarchical Module System
The older module system has a flat structure. This meant that all the modules and their versions were available for you to load. The compiler version and MPI version required for a particular module were indicated, either as a suffix to the version number, or as a message after loading the module.
LMOD is hierarchical. The schematic below shows that the three different types of modules available to you after logging in.
Core: Softwares that are precompiled binaries or compiled with system compiler (GCC 11.3.0)
Compiler: Versions of compilers like GCC, Intel
MPI: MPI implementations
As shown in the schematic, Core, compiler and mpi modules are available by default. You can see the list of these modules by running the command module avail
To load the modules compiled with MPI, you need to load the corresponding MPI modules first. For example, Gromacs
module is not available until you load the hpcx-mpi
module.
You may refer to this table for new module names corresponding to older Oscar modules.
Module commands:
To load a module, you need to run the command module load <name>
. You can see all the available LMOD subcommands by running module --help.
Here are some of the useful commands.
Unlike Pymodules, LMOD will load the dependencies for a package automatically.
Command | Shorter command | |
---|---|---|
module list | ml | Lists all modules that are currently loaded in your software environment. |
module avail <string> | ml av <string> | List available modules that contain "<string>" |
module load <name> | ml <name> | Adds a module to your current environment. If you load using just the name of a module, you will get the default version. To load a specific version, load the module using its full name with the version: "module load fftw/2.1.5" |
module unload <name> | Removes a module from your current environment. | |
module purge | Unloads ALL modules | |
module show <name> | show the commands in the module file | |
module spider <name> | Lists all possible versions of <name>. This includes modules that are NOT core modules. |
Summary
LMOD is hierarchical. By default, core, compiler and mpi modules are available.
Modules compiled with a different compiler are NOT available unless you load that compiler.
To load modules compiled with MPI, load the MPI module first.
Run
module spider <string>
to find all possible module name and versionsRun
module --help
to see all available subcommands.
Last updated