Sommaire
Gestion de l'environnement avec les Modules
Le paquetage Modules permet de modifier dynamiquement l'environnement utilisateur (à savoir les variables PATH, MANPATH, LD_LIBRARY_PATH,...) grâce à des fichiers modulefiles définis pour les différentes versions d'applications ou librairies installées sur le système. A l'aide de commande simple de la forme module load ou module rm, il est possible d'altérer vos variables d'environnement pour bénéficier d'une version particulière d'une application ou d'une librairie ou de les restaurer après utilisation.
1. Préparer votre environnement pour la commande 'module'
Pour initialiser le paquetage Modules et pointer sur les fichiers de configuration modulefiles mis en place sur Summit2, rajouter dans votre fichier $HOME/.bashrc sur Summit2 :
. /etc/profile.d/modules.sh export MODULEPATH=/home/sila/modules/compilers:/home/sila/modules/libraries/generic export MODULECONFIGFILE=/home/sila/modules/config/modulerc
Pour éviter toute interférence avec les commandes module, nous vous conseillons de commenter dans le fichier $HOME/.bashrc toutes les lignes qui modifient les variables PATH ou MANPATH pour les applications prises en charge par modules ainsi que les lignes qui chargent l'environnement pour les compilateurs Intel (de la forme ". /opt/intel/...").
Rajouter des alias dans le fichier $HOME/.alias pour simplifier la saisie des commandes (étape optionnelle) :
# Module sub-command aliases alias ml="module list" alias ms="module switch" alias ma="module avail" alias mlo="module load" alias mrm="module rm" alias md="module display" alias mp="module purge"
Se déconnecter/reconnecter à Summit2 pour que les changements soient pris en compte.
2. Les sous-commandes de 'module'
Lister les modules disponibles |
module avail |
ma |
Lister les modules actuellement chargés |
module list |
ml |
Charger le module ncl/6.4.0 |
module load ncl/6.4.0 |
mlo ncl/6.4.0 |
Décharger le module intel/14.0.1.106 |
module rm intel/14.0.1.106 |
mrm intel/14.0.1.106 |
Décharger TOUS les modules |
module purge |
mp |
Obtenir des informations sur le module cuda/8.0.61 |
module display cuda/8.0.61 |
md cuda/8.0.61 |
3. Exemples d'utilisation
Les modules présents par défaut sont les compilateurs intel et les librairies/outils compilés en gfortran :
summit2:~> module avail ----------------------------- /home/sila/modules/compilers ----------------------------- gnu/4.8.5(default) intel/14.0.1.106 intel/17.0.1.132(default) ------------------------- /home/sila/modules/libraries/generic ------------------------- cdo/1.7.2 expert-mode ncl/6.3.0 nco/4.6.5 cuda/8.0.61 hdfview/2.13 ncl/6.4.0 ncview/2.1.7 summit2:~> module list No Modulefiles Currently Loaded.
Charger un compilateur offre un choix de librairies associées à la version du compilateur sélectionné :
summit2:~> module load intel/17.0.1.132 summit2:~> module list Currently Loaded Modulefiles: 1) intel/17.0.1.132(default) summit2:~> module avail ----------------- /home/sila/modules/libraries/vendor/intel-17.0.1.132 ----------------- intel_ompi/1.10.6 intel_ompi/1.6.5 ----------------------------- /home/sila/modules/compilers ----------------------------- gnu/4.8.5(default) intel/14.0.1.106 intel/17.0.1.132(default) ------------------------- /home/sila/modules/libraries/generic ------------------------- cdo/1.7.2 expert-mode ncl/6.3.0 nco/4.6.5 cuda/8.0.61 hdfview/2.13 ncl/6.4.0 ncview/2.1.7
La commande module gère le conflit de version, par exemple ici sur la librairie NCL, la commande module échoue si on tente de charger 2 versions différentes :
summit2:~> module load ncl/6.4.0 summit2:~> module list Currently Loaded Modulefiles: 1) ncl/6.4.0 summit2:~> module load ncl/6.3.0 ncl/6.3.0(11):ERROR:150: Module 'ncl/6.3.0' conflicts with the currently loaded module(s) 'ncl/6.4.0' ncl/6.3.0(11):ERROR:102: Tcl command execution failed: conflict ncl summit2:~> module list Currently Loaded Modulefiles: 1) ncl/6.4.0
Dans ce cas, il faut utiliser la sous-commande switch :
summit2:~> module list Currently Loaded Modulefiles: 1) ncl/6.4.0 summit2:~> module switch ncl/6.3.0 summit2:~> module list Currently Loaded Modulefiles: 1) ncl/6.3.0
Décharger un module compilateur décharge automatiquement les librairies qui dépendent de ce compilateur et masque la liste des librairies associées :
summit2:~> module avail ----------------- /home/sila/modules/libraries/vendor/intel-17.0.1.132 ----------------- intel_ompi/1.10.6 intel_ompi/1.6.5 ----------------------------- /home/sila/modules/compilers ----------------------------- gnu/4.8.5(default) intel/14.0.1.106 intel/17.0.1.132(default) ------------------------- /home/sila/modules/libraries/generic ------------------------- cdo/1.7.2 expert-mode ncl/6.3.0 nco/4.6.5 cuda/8.0.61 hdfview/2.13 ncl/6.4.0 ncview/2.1.7 summit2:~> module list Currently Loaded Modulefiles: 1) intel/17.0.1.132(default) 2) intel_ompi/1.6.5 summit2:~> module rm intel/17.0.1.132 removing intel_ompi summit2:~> module list No Modulefiles Currently Loaded. summit2:~> module avail ----------------------------- /home/sila/modules/compilers ----------------------------- gnu/4.8.5(default) intel/14.0.1.106 intel/17.0.1.132(default) ------------------------- /home/sila/modules/libraries/generic ------------------------- cdo/1.7.2 expert-mode ncl/6.3.0 nco/4.6.5 cuda/8.0.61 hdfview/2.13 ncl/6.4.0 ncview/2.1.7
4. Travailler avec les Modules sur Summit2
4.1. Utilisation typique
En supposant qu'aucun module n'est chargé et que votre environnement est correctement configuré pour la commande 'module', la liste des modules disponibles s'obtient avec :
summit2:~> module list No Modulefiles Currently Loaded. summit2:~> module avail ----------------------------- /home/sila/modules/compilers ----------------------------- gnu/4.8.5(default) intel/14.0.1.106 intel/17.0.1.132(default) ------------------------- /home/sila/modules/libraries/generic ------------------------- cdo/1.7.2 expert-mode ncl/6.3.0 nco/4.6.5 cuda/8.0.61 hdfview/2.13 ncl/6.4.0 ncview/2.1.7
Les commandes module... peuvent être utilisées aussi bien en interactif que dans vos scripts de soumission de job SBATCH. Généralement, la démarche est la suivante :
sélection d'une version de compilateur (chemin /home/sila/modules/compilers) qui introduit un nouveau chemin (/home/sila/modules/libraries/vendor/*), par exemple :
summit2:~> module load intel/14.0.1.106 summit2:~> module list Currently Loaded Modulefiles: 1) intel/14.0.1.106 summit2:~> module avail ----------------- /home/sila/modules/libraries/vendor/intel-14.0.1.106 ----------------- intel_ompi/1.10.6 intel_ompi/1.6.5 ----------------------------- /home/sila/modules/compilers ----------------------------- gnu/4.8.5(default) intel/14.0.1.106 intel/17.0.1.132(default) ------------------------- /home/sila/modules/libraries/generic ------------------------- cdo/1.7.2 expert-mode ncl/6.3.0 nco/4.6.5 cuda/8.0.61 hdfview/2.13 ncl/6.4.0 ncview/2.1.7
sélection d'une librairie associée au compilateur dans ce nouveau chemin (par exemple OpenMpi-1.6.5 compilé avec ifort 14.0.1)
summit2:~> module load intel_ompi/1.6.5 summit2:~> module list Currently Loaded Modulefiles: 1) intel/14.0.1.106 2) intel_ompi/1.6.5
Vous pouvez aussi charger directement un module listé dans le chemin /home/sila/modules/libraries/generic.
4.2. Lister toutes les librairies gérées par Modules
Pour lister toutes les librairies associées à tous les compilateurs, vous pouvez charger le module file expert-mode qui inclut le chemin /home/sila/modules/libraries/vendor :
summit2:~> module load expert-mode summit2:~> module list Currently Loaded Modulefiles: 1) expert-mode summit2:~> module avail ----------------------------- /home/sila/modules/compilers ----------------------------- gnu/4.8.5(default) intel/14.0.1.106 intel/17.0.1.132(default) ------------------------- /home/sila/modules/libraries/generic ------------------------- cdo/1.7.2 expert-mode ncl/6.3.0 nco/4.6.5 cuda/8.0.61 hdfview/2.13 ncl/6.4.0 ncview/2.1.7 ------------------------- /home/sila/modules/libraries/vendor -------------------------- gnu-4.7.2/gnu_gribapi/1.9.9 gnu-4.8.5/gnu_ompi/1.10.6 gnu-4.7.2/gnu_hdf5/1.8.9 gnu-4.8.5/gnu_ompi/1.6.5 gnu-4.7.2/gnu_hdf5/1.8.9ll intel-10.1.021/intel_hdf5/1.8.9 gnu-4.7.2/gnu_hdfeos5/1.14 intel-10.1.021/intel_netcdf/3.6.3 gnu-4.7.2/gnu_netcdf/3.6.3 intel-10.1.021/intel_ompi/1.6.3 gnu-4.7.2/gnu_ompi/1.6.3 intel-14.0.1.106/intel_ompi/1.10.6 gnu-4.7.2/gnu_petsc/3.2p7 intel-14.0.1.106/intel_ompi/1.6.5 gnu-4.7.2/gnu_szip/2.1 intel-17.0.1.132/intel_ompi/1.10.6 gnu-4.8.5/gnu_gribapi/1.13.1 intel-17.0.1.132/intel_ompi/1.6.5
Lorsque le module expert-mode est chargé, veuiller éviter de charger directement les modules listés dans /home/sila/modules/libraries/vendor : utilisez cette liste simplement comme une indication. Par exemple, si vous êtes intéressé par le module intel-14.0.1.106/intel_ompi/1.10.6 (c'est à dire la librairie Open-MPI version 1.10.6 compilée en ifort version 14.0.1.106), nous vous conseillons de charger tout d'abord le module compilateur intel/14.0.1.106 puis le module intel_ompi/1.10.6 plutôt que le module intel-14.0.1.106/intel_ompi/1.10.6.
4.3. Afficher les variables d'environnement positionnées
Pour connaître les effets du chargement d'un module, utiliser module show :
summit2:~> module show ncl/6.3.0 ------------------------------------------------------------------- /home/sila/modules/libraries/generic/ncl/6.3.0: conflict ncl module-whatis Add NCL/NCAR 6.3.0 to your environment variables setenv NCARG_ROOT /opt/ncl/6.3.0 prepend-path PATH /opt/ncl/6.3.0/bin setenv NCL_INCLUDE /opt/ncl/6.3.0/include setenv NCL_LIB /opt/ncl/6.3.0/lib -------------------------------------------------------------------
Ici, charger le module ncl/6.3.0 préfixe la variable PATH avec /opt/ncl/6.3.0/bin et positionne 3 nouvelles variables NCARG_ROOT, NCL_INCLUDE et NCL_LIB.
