====== Utilisation du système de modules ======
De nombreuses versions de logiciels sont amenées à cohabiter sur le cluster, au fur et à mesure des nouvelles sorties et des migrations. Pour faciliter l'utilisation d'une version précise, et l'adaptabilité dans le temps, un ensemble de module correspondant à chaque installation ont été mis en place, de manière à simplifier le travail de l'utilisateur pour mettre à jour son environnement (PATH, et autres variables) et ses scripts : Voici les commandes principales pour les exploiter.
Voir la listes de tous les logiciels installés au mésocentre [[logiciels_installes]]
===== Lister l'ensemble des modules disponibles =====
$ module avail
...
bio/muscle/3.8.31            gcc/4.9.0(default)           intel/itac/9.0.3.051         lib/boost/gcc/1.59.0         matlab/r2014b                simgrid/3.12                 zebulon/8.5
bio/raxml/8.2.4              gcc/5.1                      intel/mic/14.0.2             lib/cudnn/6.5                matlab/r2015a                simgrid/3.7.1
bio/ray/2.3.1                gpu/cuda/5.5                 intel/mic/15.0.3             lib/gdal/1.10.0              mpi/openmpi/gcc/1.7.5        simgrid/3.8.1
bio/samtools/1.1             gpu/cuda/6.5                 intel/mic/current            lib/gdal/1.10.1              mpi/openmpi/icc/1.7.5        tools/ant/1.8.2
bio/sumatra/1.0              gpu/cuda/7.0                 intel/tbb/4.3.5.187          lib/grass/6.4.3              namd/2.11b2(default)         tools/carma/1.1
bio/t-coffee/10.00           gpu/cuda/7.5                 lang/f2c/default             lib/hdf5/1.8.12              namd/gpu/2.9b3               tools/cmake/2.8.1
bio/t-coffee/9.03            gromacs/mpi/5.0.4            lang/java/1.7.0_55           lib/libpng/1.6.6             numlib/armadillo/gcc/6.300.2 tools/cmake/3.2.3
...
Chaque entrée de la liste est de la forme suivante : ''''/''''/''''. Cette convention de nommage se retrouve dans l'ensemble des autres commandes, pour désigner un module spécifique.
Certains modules sont organisés en catégories :
  * tools
  * lang
  * bio
  * gpu
  * lib
  * numlib
  * ...
 
==== Exemples ====
Afficher la tous les logiciels de la catégorie bio (bioinformatique) 
$ module avail bio
 
Afficher la tous les logiciels de la catégorie lang (langages de programmation ) 
$ module avail lang
 
===== Charger un module =====
Charger la version 2.0 d'un logiciel :
$ module load logiciel/2.0
Il est possible de demander la **dernière version** de logiciel, si aucune version n'est précisée :
$ module load logiciel
Il est possible de charger plusieurs logiciels à la fois :
$ module load logiciel1 logiciel2 ...logicieln
==== Exemples ====
Charger la dernière version de Java
$ module load lang/java
Charger la version 1.7.5 de Open MPI compilé avec GCC
$ module mpi/openmpi/gcc/1.7.5
**Une fois le module est chargé, des informations supplémentaires (variables d'environnement) sont rajoutées à l'environnement utilisateur**
NOM_HOME
NOME_VERSION
**Exemple :**
  * OMPI_HOME : répertoire d'installation du logiciel OMPI 
  * OMPI_VERSION (ex : OMP_VERSION) : version du logiciel OMPI 
  * LD_LIBRARY_PATH : mise à jour automatique de LD_LIBRARY_PATH pour prendre en compte les nouvelles bibliothèques
 
===== Lister les modules actuellement chargés =====
$ module list
===== Décharger un module =====
$ module rm logiciel
===== Chargement des modules au démarrage de la session =====
Il est possible de charger les modules au démarrage de l session en rajoutant les commandes dans le fichier ''$HOME/.basrc'' 
Par exemple, pour charger git et Java :
$ module load git lang/java
===== Search for module =====
To check if a module is installed in the system, one can use:
$ module avail 2>&1 | grep -i "modulename"
 
Why, so complicate? because module sends results to ''stderr''. We need to capture ''stderr'' in ''stdout'', and use ''grep'' to search for corresponding motifs.   
for example, check if PAPI is installed:
$ module avail 2>&1 | grep -i "papi"
intel/imkl/11.1.2.144            perf/papi/gcc/5.4.3
intel/imkl/11.2.3.187            perf/papi/gcc/5.5.1
intel/impi/4.1.3.049             perf/papi/icc/5.4.3(default)