start:working_on_mogon:workflow_organization:setting_up_environment_modules

Setting Up Environment (Modules)

To run jobs on MOGON, you need to set up your environment correctly. This wiki page will help you to do so.

Environment modules, a.k.a modulefiles, are a way to set up a working environment (under Linux/Unix) dynamically. HPC system administration has to be rather conservative: In order to provide a consistent environment it is not impossible to install the newest (untested) piece of software (or kernel stuff) system-wide. On the other hand the requirement to run state of the art scientific software has to be fulfilled. This is where environment modules step in rather handy:

So, loading a particular module will set up an environment? This is mainly done by exporting environment variables, particularly PATH and (LD)_LIBRARY_PATH and others. Usually modulefiles contain code to sanitize the setup, e.g. reporting conflicts with other loaded modules or deprecation warnings.

Lmod: A New Environment Module System

Lmod is a Lua based module system that easily handles the MODULEPATH Hierarchical problem. Environment Modules provide a convenient way to dynamically change the users’ environment through modulefiles. This includes easily adding or removing directories to the PATH environment variable. Modulefiles for Library packages provide environment variables that specify where the library and header files can be found.

Lmod Documentation

Create the file .lmod in your home directory with the following command in order to use Lmod at the next login:

touch ~/.lmod

Create the file .nolmod in your home directory with the following command in order to use Lmod at the next login:

touch ~/.nolmod

Working with Lmod

Command Description Comment
module help get a list of all commands known to module
module avail find out what modules are available
module list list loaded modules
module load/add loads modules/packages
module unload unloads modules/packages
module swap change from one compiler to another module swap gcc intel
module reset go back to an initial set of modules

In many cases there are several versions of the same compiler/program installed. You have to check that your desired version is available.

You can get an overview of all available modules using the command

module avail

or

module av

You can use the search capabilities to refine your search, e.g.:

module av mathematica

gives

JGU HPC Modules
 
------------------- /cluster/easybuild/broadwell/modules/all -------------------
   math/Mathematica/11.1.1    math/Mathematica/12.2.0 (D)
 
  Where:
   D:  Default Module
Questions? contact us at hpc@uni-mainz.de
yet more ...

EasyBuild, our software installation framework provides prefixes – at least the way we install software – for modulefiles: bio, chem and phys. This classification is a bit arbitrary at times, but you can search for the respective strings and look whether your desired application is already available.

Other classes include lib and compiler. Of particular relevance is sometimes the lang category, e.g. for providing scripting languages with their correct version (see for example the entries on Python, R and BioConductor and Perl).

For example with:

module avail/av phys

you get all the Modules in phys

[joe_user@login23 ~]$ module avail phys
JGU HPC Modules
 
------------------- /cluster/easybuild/broadwell/modules/all -------------------
   phys/ESPResSo++/2.0.1-foss-2018b
   phys/HOOMD/2.5.1-fosscuda-2019b-double
   phys/HOOMD/2.9.1-fosscuda-2019b-double
   phys/HOOMD/2.9.1-fosscuda-2019b-single
   phys/HOOMD/2.9.6-fosscuda-2019b-single
   phys/HOOMD/2.9.6-fosscuda-2020b-double
   phys/HOOMD/2.9.6-fosscuda-2020b-single (D)
   phys/UDUNITS/2.2.26-GCCcore-8.3.0
   phys/UDUNITS/2.2.26                    (D)
 
  Where:
   D:  Default Module
Questions? contact us at hpc@uni-mainz.de
yet more ...

The command module spider lists all modules that can be loaded on MOGON.

module spider mathematica

gives

----------------------------------------------------------------------------
  math/Mathematica:
----------------------------------------------------------------------------
    Description:
      Mathematica is a computational software program used in many
      scientific, engineering, mathematical and computing fields.
 
     Versions:
        math/Mathematica/11.1.1
        math/Mathematica/12.2.0
 
----------------------------------------------------------------------------
  For detailed information about a specific "math/Mathematica" 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 math/Mathematica/12.2.0
----------------------------------------------------------------------------

Now, knowing the modules that are available you can go on by loading the module(s) you need. This will happen using the command module load [module] or module add [module].

Example: Maybe you want to load gcc (version 10.2.0) and OpenMPI, so you would do

module load mpi/OpenMPI/4.0.5-GCC-10.2.0

That's all - OpenMPI (version 4.0.5) was compiled with gcc 10.2.0 as the version string indicates, but mpicc depends on the specific compiler (and libraries), hence gcc is also provided in the correct version.

module list

From the example above:

Currently Loaded Modules:
  1) compiler/GCCcore/10.2.0        4) lib/libfabric/1.11.0-GCCcore-10.2.0
  2) compiler/GCC/10.2.0            5) lib/PMIx/3.1.5-GCCcore-10.2.0
  3) lib/UCX/1.9.0-GCCcore-10.2.0   6) mpi/OpenMPI/4.0.5-GCC-10.2.0

To expel a specific module you can use the command

module rm [module]

or

module unload [module]

If you want to unload all your loaded modules, use

module purge
module show

For those of you who can’t type the mdoule, moduel, err module command correctly, Lmod has a tool for you. With ml you won’t have to type the module command again. The two most common commands are module list and module load <something> and ml does both: Lmod Documentation

ml

means module list. And

ml foo

means module load foo.

ml -bar

means module unload bar. It is not surprising that these can be combined:

ml foo -bar

means module unload bar; module load foo.

You can do all the module commands:

ml spider
ml avail
ml show foo

User defined initial list of login modules

module load module1 module2 ...

On MOGON, users can create as many collections as they like. You can save to a nemed collection with:

module save <collection_name>

The collection is restored with:

module restore <collection_name>

You can display the contents of a name collection with

module describe <collection_name>

Use the following command to list the collections you already have:

module savelist

Finally, you can deactivate a collection with:

module disable <collection_name>

If no <collection_name> is specified, the default is disabled. Note that the collection is not removed, only renamed. If you disable the collection foo, the file foo is renamed to foo~. To restore the foo collection, you must do the following:

cd ~/.lmod.d; mv foo~ foo

Working with Environment Modules

In order to use the old Environment Modules system, the file ~/.lmod should not be present in your home directory.

Before we really start, the most frequently used commands at a glance:

Command Description
module -h|help shows an overview of all available commands
module avail shows all available modules
module load|add [module] loads the module [module]
module list shows all loaded modules
module rm|unload [module] unloads the module [module]
module purge unloads all loaded modules

In many cases there are several versions of the same compiler/program installed. You have to check that your desired version is available. Yo can get an overview of all available modules using the command module avail 1).

As module reports on standard error, a grep for a particular module can be done like:

$ module avail |& grep <your_module_you_are_looking_for>

EasyBuild, our software installation framework provides prefixes – at least the way we install software – for modulefiles: bio, chem and phys. This classification is a bit arbitrary at times, but you can search for the respective strings and look whether your desired application is already available.

Other classes include lib and compiler. Of particular relevance is sometimes the lang category, e.g. for providing scripting languages with their correct version (see for example the entries on Python, R and BioConductor and Perl).

Now, knowing the modules that are available you can go on by loading the module(s) you need. This will happen using the command module load [module] or module add [module] 2).

Example: Maybe you want to load gcc (version 6.3.0) and OpenMPI, so you would do:

$ module load mpi/OpenMPI/2.0.2-GCC-6.3.0

That's all - OpenMPI (version 2.0.2) was compiled with gcc 6.3.0 as the version string indicates, but mpicc depends on the specific compiler (and libraries), hence gcc is also provided in the correct version.

We strongly suggest to avoid loading modules in your .bashrc-file, because we frequently observed that this leads to conflicting environments in the long run. Alternatives are:
  • Loading modules in submission scripts and
  • sourcing environment setup scripts interactively, depending on a particular workflow.
Which module is the right?
  • You sometimes see module load <category>/<entry> – not followed by a version string. This will take the most recent version (alphabetically).
  • It is sufficient to load one module per application/library/scripting language.
  • If in doubt contact the HPC-team.

If you want to check your loaded modules, simply use module list.

From the example above:

$ module list
Currently Loaded Modulefiles:
  1) compiler/GCCcore/6.3.0        3) mpi/OpenMPI/2.0.2-GCC-6.3.0
  2) compiler/GCC/6.3.0

To expel a specific module you can use the command module rm [module] or module unload [module]. If you want to unload all your loaded modules, use module purge.

Example:

$ module unload compiler/GCCcore/6.3.0
$ module purge

1)
In the past we had a dynamic list of available modulefiles linked, here. This list has been removed, because it was impossible to keep track of the changed settings on two clusters.
2)
They are equal. It's yours to chose which you like more
  • start/working_on_mogon/workflow_organization/setting_up_environment_modules.txt
  • Last modified: 2021/06/09 15:36
  • by jrutte02