Ouessant : notice d'utilisation de la commande module

Avant-propos

La commande module est là pour répondre au plus juste à vos besoins spécifiques, afin d'utiliser les compilateurs, bibliothèques mathématiques ou utilitaires sans avoir à en chercher l'emplacement sur les disques. Elle fonctionne en enrichissant des variables d'environnement en fonction du produit (compilateur, débogueur, etc…) que vous souhaitez utiliser.

La commande module sur Ouessant provient du produit lmod qui ajoute un notion de hiérarchie dans les modules.

Syntaxe

Commande Action
module avail Liste les différents produits disponibles et leurs versions
module whatis <produit> Décrit les informations sur le produit
module list Liste les produits chargés
module load <produit> Charge l'environnement du produit
module unload <produit> Décharge l'environnement du produit
module switch <produit1> <produit2> Remplace le produit1 par le produit2
module purge Décharge l'ensemble des modules chargés

Lorsqu'un produit possède plusieurs versions disponibles on peut les distinguer en utilisant la syntaxe produit/version

Hiérarchie des modules

La notion de hiérarchie permet de gérer les dépendances entre les produits. Il y a trois niveaux :

Niveau Type de produits
level0 Outils de bases, compilateurs
level1 Produits dépendant des compilateurs, bibliothèque MPI
level2 Produits dépendant des compilateurs et de MPI
  • Uniquement les produits level0 sont accessibles au départ pour les utilisateurs
  • Les produits level1 sont accessibles quand l'utilisateur a chargé un produit level0, uniquement les produits level1 dépendant de ce produit level0 seront accessibles.
  • Les produits level2 sont accessibles quand l'utilisateur a chargé un produit level1, uniquement les produits level2 dépendant de ce produit level1 seront accessibles.

La commande module spider liste tous les produits quels que soient leurs niveaux. La commande module spider <produit> permet de connaitre la hiérarchie du module.

Liste des produits disponibles

Vous cherchez un produit spécifique, une version particulière d'une bibliothèque ? L'avons-nous à votre disposition ? Pour répondre à cette question, la commande à exécuter est module avail :

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

Avec cette commande on ne voit que les produits du niveau 0. Pour avoir la liste complète, il faut plutôt utiliser :

$ 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

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

Cette liste évolue en permanence (la liste figurant ci-dessus est celle en date d'avril 2017).

Chargement d'une application

Pour lancer une application, il faut charger le produit explicitement avant l'exécution à l'aide de la commande module load :

$ module load namd

La commande module complète alors la variable d'environnement $PATH de manière à pouvoir exécuter le produit sans avoir à positionner explicitement de chemin (absolu ou relatif) pour préciser sa localisation. On peut voir toutes les variables d'environnement positionnées par le chargement du module à l'aide de la commande module whatis :

$ 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
-------------------------------------------------------------------