====== 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)