Ouessant : User instructions for the module command

Introduction

The module command exists in order to most effectively respond to your specific needs: setting environment variables such as compilers, mathematical libraries and tools, without you having to look for them on the disks. It enhances the environment variables according to the product which you would like to use (compiler, debugger, etc.).

The module command on Ouessant is from the Lmod product which provides the concept of module hierarchy.

Syntax

Command Action
module avail Lists the different products available and their versions
module whatis <product> Provides information about the product
module list Lists the loaded products
module load <product> Loads the product environment
module unload <product> Unloads the product environment
module switch <product1> <product2> Replaces product1 by product2
module purge Unloads all of the loaded modules

When a product has several available versions, we can differentiate them by using the product/version syntax.

The module hierarchy

The hierarchy concept allows managing dependencies between the products. This hierarchy consists of three levels:

Level Type of product
level0 Basic tools, compilers
level1 Products dependent on the compilers (e.g. the MPI library)
level2 Products dependent on the compilers and on the MPI library
  • Only level-0 products are accessible to the users at the start.
  • Level-1 products are accessible when the user has loaded a level-0 product; only the level-1 products dependent on this level-0 product are accessible.
  • Level-2 products are accessible when the user has loaded a level-1 product; only the level-2 products dependent on this level-1 product are accessible.

The module spider command lists all the products, no matter what their levels. You can see the module hierarchy by using the module spider <produit> command.

List of available products

You are looking for a specific product, a particular library version? Do we have it available? To respond to this question, you may use the module avail command:

$ module avail

----------------------------------------------------------------- /pwrlocal/pub/lmod/lmod/modulefiles/level0 ------------------------------------------------------------------
   at/9.0    (D)    cuda/8.0     gcc/4.8                    llvm/clang/cc6.0/161122      nccl/1.3     pgi/17.03    (D)    valgrind/3.11        xlc/14.1.0        xlf/16.1.0
   at/10.0          cudnn/5.1    jube/2.1                   llvm/xlflang/cc6.0/161206    pgi/16.10    starpu/1.2.1        xlc/13.1.4           xlf/15.1.4
   cmake/3.7        essl/5.5     llvm/clang/cc3.7/161028    mpitrace/17.02               pgi/17.01    starpu/1.3.0 (D)    xlc/13.1.5    (D)    xlf/15.1.5 (D)

  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".

With this command, we can only see the level-0 products. To see the complete list, use:

$ module spider

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
The following is a list of the modules currently available:
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  at: at/9.0, at/10.0

  cmake: cmake/3.7

  cuda: cuda/8.0

  cudnn: cudnn/5.1

  essl: essl/5.5

  fftw: fftw/3.3

  gcc: gcc/4.8

  hdf5: hdf5/1.8, hdf5/1.10

  jube: jube/2.1

  lapack: lapack/3.6, lapack/3.7

  llvm/clang/cc3.7: llvm/clang/cc3.7/161028

  llvm/clang/cc6.0: llvm/clang/cc6.0/161122

  llvm/xlflang/cc6.0: llvm/xlflang/cc6.0/161206

  metis: metis/5.1

  mpitrace: mpitrace/17.02

  nccl: nccl/1.3

  netcdf-c: netcdf-c/4.3, netcdf-c/4.4

  netcdf-fortran: netcdf-fortran/4.2, netcdf-fortran/4.4

  ompi: ompi/1.10+lsf, ompi/1.10, ompi/1.10.2+ext+lsf, ompi/1.10.5+ext+lsf

  openblas: openblas/0.2

  parmetis: parmetis/4.0

  perte: perte/2.3

  pgi: pgi/16.10, pgi/17.01, pgi/17.03

  ppedev: ppedev/2.3

  python: python/2.7.12

  scalasca: scalasca/2.3.1

  smpi: smpi/10.1

  starpu: starpu/1.2.1, starpu/1.3.0

  valgrind: valgrind/3.11

  xlc: xlc/13.1.4, xlc/13.1.5, xlc/14.1.0

  xlf: xlf/15.1.4, xlf/15.1.5, xlf/16.1.0

  xlmass: xlmass/8.1.5

  xlsmp: xlsmp/4.1.5

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------

To learn more about a package, execute:
  
   $ module spider Foo

where "Foo" is the name of a module.

To find detailed information about a particular package, you
must specify the version (if there is more than one version):

   $ module spider Foo/11.1

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------

This list is always evolving (the above list dates from April 2017).

Loading an application

To launch an application, you must explicitly load the product before the execution by using the module load command:

$ module load namd

The module command completes the $PATH environment variable allowing the execution of the product without needing to explicitly position the path (absolute or relative) for specifying its location. All the environment variables are positioned by loading the module with the module whatis command:

$ module whatis namd
-------------------------------------------------------------------
/smplocal/pub/Modules/IDRIS/modulefiles/applications/namd/2.9:

conflict         namd
prepend-path     PATH /smplocal/prod/NAMD/2.9/bin
module-whatis    namd version 2.9
-------------------------------------------------------------------