Modules and applications

From ScientificComputing
Revision as of 10:20, 22 January 2021 by Jarunanp (talk | contribs)

Jump to: navigation, search

What is a Modules package?

A Modules package is a tool to let users to easily configure their computing environment which includes

  • Development tools
  • Scientific libraries
  • Communication libraries (MPI)
  • Third-party applications

We employ two types of Modules packages:

  • LMOD Modules implemented on Euler and Leonhard Open
  • Environment Modules implemented on Euler


Two software stacks on Euler

While Leonhard Open contains only one software stack which uses LMOD Modules, Euler contains two software stacks:

  • The new software stack uses LMOD Modules
  • The old software stack uses Environment Modules

Upon your login on Euler, the old software stack is set by default. You can switch from the old software stack to the new software stack by typing the command:

$ env2lmod

and vice-versa

$ lmod2env

All new software is installed exclusively in the new software stack.

Modules commands

Here are commonly used module commands. The commands highlighted in blue are the most frequently used.

module get info about module sub-commands
module avail list all modules available on the cluster
module avail <name> list all modules that match <name>
module key <keyword> list all modules whose description contains <keyword>
module help <name> get information about module <name>
module show <name> show what module name does (without loading it)
module load <name> load module <name>
module list list all currently loaded modules
module unload <name> unload module <name>
module purge unload all modules at once

Example

In this example we load GCC compiler version 4.8.2 and the most recent Python version in the old software stack, switch to the new software stack where we load GCC 6.3.0 and the most recent Python version, then switch back to the old software stack to load Python again

Load GCC and new module in the old software stack:

$ module load new gcc/4.8.2
$ module avail python

------------------------------ /cluster/apps/modules/modulefiles ------------------------------
python/2.7.12  python/2.7.13  python/2.7.6(2.7)   python/2.7.9  python/3.3.3(3:3.3)   python/3.4.3      python/3.6.0

------------------------------ /cluster/apps/modules/new --------------------------------------
python/2.7.14     python/2.7.6_UCS4 python/3.6.1      python/3.7.1

Load the newest Python

$ module load python/3.7.1
Autoloading openblas/0.2.13_seq
$ module list
Currently Loaded Modulefiles:
  1) modules                            3) gcc/4.8.2(default:4.8)             5) python/3.7.1
  2) new                                4) openblas/0.2.13_seq(default:seq)

Switching to the new software stack:

$ env2lmod
$ module list  

Currently Loaded Modules:
  1) StdEnv   2) gcc/4.8.5

Load GCC 6.3.0 and check Python version

$ module load gcc/6.3.0

The following have been reloaded with a version change:
  1) gcc/4.8.5 => gcc/6.3.0
$ module avail python

--------------------------- /cluster/apps/lmodules/Compiler/gcc/6.3.0 -------------------------------------
  python/2.7.14    python/3.6.4    python/3.7.4    python/3.8.5 (D)    python_gpu/3.8.5

 Where:
  D:  Default Module

Use "module spider" to find all possible modules.
Use "module keyword key1 key2 ..." to search for all possible modules matching any of the "keys".

Load new Python

$ module load python/3.8.5
$ module list

Currently Loaded Modules:
 1) StdEnv   2) gcc/6.3.0   3) openblas/0.2.20   4) python/3.8.5

Switching back to the old software stack:

$ lmod2env
$ module list
Currently Loaded Modulefiles:
  1) modules

Load Python 3.7.1 again

$ module load new gcc/4.8.2 python/3.7.1
Autoloading openblas/0.2.13_seq
$ module list
Currently Loaded Modulefiles:
  1) modules                            3) gcc/4.8.2(default:4.8)             5) python/3.7.1
  2) new                                4) openblas/0.2.13_seq(default:seq)

Further reading

The complete guide to setting up your environment