Environnement logiciel

Plusieurs versions d'un même logiciel peuvent cohabiter sur la plate-forme de calcul. Il convient donc de disposer d'un moyen simple de modifier son environnement en fonction de la version que l'on veut utiliser. Sur Calculco, certaines versions sont accessibles sous forme de modules et d'autres sous forme de packages.
- Les packages installés sont ceux issus de la dernière version stable du système d'exploitation debian et dans ce cas ils sont accessibles aisément car leurs binaires/librairies/include sont situés dans les chemins par défaut du système. Vous n'avez donc pas à modifier votre environnement pour les utiliser.
- Les autres versions d'un logiciel, qui ont été spécialement recompilées, ne sont pas installées dans les chemins standards du système mais sont disponibles sous forme de modules. Cette architecture modulaire est gérée par l'outil Lmod développé au TACC.

Les modules

Un fichier module (« modulefile ») contient les informations nécessaires pour rendre disponible une application ou une bibliothèque dans la session de l'usager. Typiquement, un fichier module contient des instructions qui modifient ou initialisent les variables d'environnement, comme par exemple PATH, LD_LIBRARY_PATH, CPATH, PKG_CONFIG_PATH pour utiliser la version du logiciel installé.


Commandes

La commande module a plusieurs sous-commandes. La syntaxe est : module commande [options]

Voici les principaux usages de cette commande afin de gérer votre environnement (la formulation abrégée a été ajoutée entre parenthèses) :

Lister les sous-commandes disponibles :

# module help (ou ml help)

 
Lister l'ensemble des modules disponibles :

# module avail (ou ml av)

pour avoir les descriptifs en plus :

# module spider (ou ml spider)


Lister les modules disponibles pour une bibliothèque ou un outil particulier
(opencv par exemple) :

# module avail opencv (ou ml av opencv)

pour avoir le descriptif en plus :

# module spider opencv (ou ml spider opencv)

 
Lister les modules actuellement chargés dans votre environnement :

# module list (ou ml)

Charger un module particulier (opencv par exemple) :

# module load OpenCV (ou ml OpenCV)

Cela chargera la version OpenCV/3.2, c'est celle par défaut si vous ne précisez pas de version. Elle est marquée avec un D lorsque vous demandez la liste des versions disponibles pour opencv. Pour charger une autre version vous devez spécifier le nom de module complet. Vous pouvez vous aider de la completion pour cela ou le récupérer via la commande ml av opencv.
Si votre module dépend d'autres modules, ceux-ci sont chargés automatiquement.


Enlever un module de votre environnement :

# module unload OpenCV (ou ml -OpenCV)

Cette fois si d'autres modules dont dépendait votre logiciel avaient été chargés, ils ne seront pas enlevés car ils sont peut-être utilisés par ailleurs par d'autres modules que vous utilisez. Si vous voulez changer d'environnement, il est conseillé de nettoyer votre environnement avant de recharger de nouveaux modules. Cela peut-être fait grâce à la commande ci après.


Enlever tous les modules actuellement chargés :

# module purge (ou ml purge)


Sauvegarder, restaurer son environnement :

Si vous avez l'habitude de travailler avec un environnement composé d'une collection de modules, vous pouvez sauvegarder cette configuration pour la recharger facilement lors de votre prochaine connexion.

# module save

Cela créera votre environnement par défaut avec les modules actuellement chargés. Si vous travaillez généralement avec plusieurs environnements différents, nommer vos sauvegardes.

# module save maListe1

Pour lister vos sauvegardes :

# module savelist

Et pour recharger votre configuration sauvegardée :

# module restore maListe1

Ces configurations sont sauvegardées dans le répertoire .lmod.d à votre racine. Si vous désirez supprimer une liste il suffira d'y supprimer le fichier adéquat.

  

Notes OAR :

L'exécution de tâches sur la plate-forme se fait via le gestionnaire de ressources et de tâches OAR, les mécanismes y sont décrits dans l'article lancer un calcul. Toutes les commandes "module" qui ont été décrites sont disponibles directement lorsque que vous travaillez en interactif sur un nœud de calcul. En mode batch il faudra ajouter l'instruction suivante dans votre script avant d'utiliser une commande module :
source /nfs/opt/env/env.sh

Rq: sessions interactives (oarsub -I) 

L'environnement choisi n'est pas transmis du frontal (calculco) aux nœuds (orvalXX): ne chargez pas vos modules sur le frontal avant de lancer la commande oarsub -I , mais après, une fois que le nœud vous a été attribué.


Astuces :

Le nombre de modules grandissant, il est difficile de trouver facilement ce que l'on cherche via les commandes brutes ml av ou ml spider sans filtrer la sortie si on ne connait pas exactement le nom du logiciel ou de la librairie que l'on recherche. Les commandes "module" renvoient malheureusement les résultats sur la sortie d'erreur et la commande grep ne pourra les intercepter par défaut. Pour filtrer votre recherche il faudra utiliser l'option --redirect pour rediriger la sortie d'erreur sur la sortie standard avant d'utiliser la commande grep. Voici les exemples de recherche pour opencv :

# ml av --redirect | grep -i opencv
# ml spider --redirect | grep -i opencv

Cela peut également être fait directement dans votre shell sans utiliser l'option --redirect :

# ml av |& grep -i opencv
# ml spider |& grep -i opencv

 

Accéder  precedent           suite  Lancer un calcul