Accessing software with Lmod

Accessing software with Lmod

Since October 2016 we are using a set of tools called EasyBuild and Lmod to install and manage software packages and their accompanying modules.

This results in a different naming of the modules themselves and also a completely different module layout, compared to how it was done with Tcl modules.

The modules are installed hierarchically in such a way that not all modules are visible initially.

The EasyBuild Hierarchial Module Naming System (HMNS for short) ensures that the correct libraries are available for a specific application while keeping the output of module avail to a minimum. See our support page on Lmod for more information on how to use the Lmod system.

Verify that your environment works

Before trying anything else please check if your environment is correctly setup to work on our systems. Version number changes as we make updates.

Check the output of this command:

module --version 2>&1 | head -n 2

If it shows:

On Kebnekaise:

Modules based on Lua: Version 7.8.20

then your enviroment is working, if not send a mail to support@hpc2n.umu.se asking for help, please make sure to state your username. 

Compilers and compiler toolchains

The module hierarchy is based on compiler toolchains.

A compiler toolchain is a bundling of software that makes up a complete environment for compiling software (or using a specific prebuilt software), usually including a compiler suite, an MPI version, BLAS, LAPACK, ScaLapack, and FFTW versions.

It may also be just a compiler, like GCC alone.

An example of a compiler toolchain is foss, which is based on the GCC compiler.

$ module add foss/2016.09
$ module list

Currently Loaded Modules:
  1) snicenvironment (S)   7) OpenMPI/2.0.1
  2) systemdefault   (S)   8) OpenBLAS/0.2.19-LAPACK-3.6.1
  3) GCCcore/6.2.0         9) FFTW/3.3.5
  4) GCC/6.2.0-2.27       10) ScaLAPACK/2.0.2-OpenBLAS-0.2.19-LAPACK-3.6.1
  5) numactl/2.0.11       11) foss/2016.09
  6) hwloc/1.11.4

There are multiple toolchains, each one based on one of the compiler suites, GCC, icc/ifort, PGI, and others.

Available toolchains include:

  • GCC: GCC only
  • foss: GCC, OpenMPI, OpenBLAS/LAPACK, FFTW, ScaLAPACK
  • gompi: GCC, OpenMPI
  • gompic: GCC, OpenMPI, CUDA
  • fosscuda: gompic, OpenBLAS/LAPACK, FFTW, ScaLAPACK
  • iccifort: icc, ifort
  • iimpi: icc, ifort, IntelMPI
  • intel: icc, ifort, IntelMPI, IntelMKL
  • intelcuda: intel, CUDA
  • PGI: Portland compiler only
  • pompi: PGI, OpenMPI
  • pomkl: PGI, OpenMPI, IntelMKL

The main toolchains to use are foss, intel, fosscuda, intelcuda. More toolchains will be available in time.

How does the Hierarchial Module Naming System work

Initially you only see a small set of modules when doing module avail, these modules only depend on the libraries installed with the operating system.

$ module avail

---------------------------- /hpc2n/eb/modules/all/Core -----------------------------
   Allinea/6.1.1               gompic/2016.10
   EasyBuild/3.0.0-hpc2n.00    goolfc/2016.10
   GC3Pie/2.4.2                icc/2017.1.132-GCC-5.4.0-2.26
   GCC/5.4.0-2.26              iccifort/2017.1.132-GCC-5.4.0-2.26
   GCCcore/5.4.0               iccifortcuda/2016.11
   M4/1.4.17                   ifort/2017.1.132-GCC-5.4.0-2.26
   PGI/16.9-GCC-5.4.0-2.26     iimpi/2017.01-GCC-5.4.0-2.26
   VASP-data/5.4               iimpic/2016.11
   foss/2016b                  intel/2017.01
   gaussian/09.e.01-AVX        intelcuda/2016.11
   gcccuda/2016.10             ncurses/6.0
   gettext/0.19.8              pomkl/2016.11
   gompi/2016b                 pompi/2016.11

------------------------ /hpc2n/eb/software/modulefiles/Core ------------------------
   snicenvironment (S,L)    systemdefault (S,L)

------------------- /hpc2n/eb/software/lmod/lmod/modulefiles/Core -------------------
   lmod/6.5    settarg/6.5

  Where:
   S:  Module is Sticky, requires --force to unload or purge
   L:  Module is loaded

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

When loading one of the compiler toolchains you get access to modules built with that specific toolchain.

$ module add GCC
$ module avail

----------------- /hpc2n/eb/modules/all/Compiler/GCC/6.2.0-2.27 ------------------
   OpenMPI/2.0.1    hwloc/1.11.4    numactl/2.0.11

--------------------------- /hpc2n/eb/modules/all/Core ---------------------------
   Autoconf/2.69                    foss/2016b
   Automake/1.15                    foss/2016.09                       (D)
   Autotools/20150215               gettext/0.19.8
   EasyBuild/2.9.0                  gompi/2016b
   GCC/4.9.3-binutils-2.25          gompi/2016.09                      (D)
   GCC/5.4.0-2.26                   icc/2017.0.098-GCC-5.4.0-2.26
   GCC/6.2.0-2.27          (L,D)    iccifort/2017.0.098-GCC-5.4.0-2.26
   ...                              ...

As you can see the GCC module adds another module path (/hpc2n/eb/modules/all/Compiler/GCC/6.2.0-2.27) which contains some modules built with that specific toolchain.

If you load the foss toolchain instead you get access to even more modules.

$ module add foss/2016.09
$ module avail

------------- /hpc2n/eb/modules/all/MPI/GCC/6.2.0-2.27/OpenMPI/2.0.1 -------------
   Boost/1.61.0               GROMACS/2016-mt                              (D)
   CMake/3.5.2                OpenBLAS/0.2.19-LAPACK-3.6.1                 (L)
   FFTW/3.3.5          (L)    ScaLAPACK/2.0.2-OpenBLAS-0.2.19-LAPACK-3.6.1 (L)
   GROMACS/2016-hybrid        ncurses/6.0                                  (D)

----------------- /hpc2n/eb/modules/all/Compiler/GCC/6.2.0-2.27 ------------------
   OpenMPI/2.0.1 (L)    hwloc/1.11.4 (L)    numactl/2.0.11 (L)

--------------------------- /hpc2n/eb/modules/all/Core ---------------------------
   Autoconf/2.69                    foss/2016b
   Automake/1.15                    foss/2016.09                       (L,D)

How to find a specific software

Since not every module is visible initially you can not use the module avail command to find software like GROMACS, NAMD, VASP, etc.

To find software hidden by the hierarchy you should use the module spider command.

$ ml spider
----------------------------------------------------------------------------------
The following is a list of the modules currently available:
----------------------------------------------------------------------------------
...
  GNU: GNU/4.9.3-2.25
    Compiler-only toolchain with GCC and binutils. - Homepage:
    http://www.gnu.org/software/

  GROMACS: GROMACS/2016-hybrid, GROMACS/2016-mt
    GROMACS is a versatile package to perform molecular dynamics, i.e. simulate the
    Newtonian equations of motion for systems with hundreds to millions of particles.
    - Homepage: http://www.gromacs.org 

...

See also the support page on Lmod for more information on the spider command.

Updated: 2024-10-10, 12:39