Environnements logiciels
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 :
Lister l'ensemble des modules disponibles:
pour avoir les descriptifs en plus :
Lister les modules disponibles pour une bibliothèque ou un outil particulier:
pour avoir le descriptif en plus :\
Lister les modules actuellement chargés dans votre environnement
Charger un module particulier (opencv par exemple):
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:
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:
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.
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.
Pour lister vos sauvegardes :
Et pour recharger votre configuration sauvegardée :
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 (chimayXX): 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
Cela peut également être fait directement dans votre shell sans utiliser l'option --redirect
créer et adapter les modules à vos besoins:
Placez vos fichiers modules dans un répertoire de votre choix, puis ajoutez ce répertoire dans le [MODULESPATH] avec la commande:
note: deux syntaxes sont possibles, en langage tcl (cf. modules) ou en lua (cf. lmod).