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 installés

$ 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 : <catégorie>/<nom du logiciel>/<version>. 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 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
$ module list
$ module rm logiciel

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

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)