Utiliser des modules: Difference between revisions

Jump to navigation Jump to search
no edit summary
(Marked this version for translation)
No edit summary
Line 4: Line 4:
Les serveurs de calcul de Calcul Canada peuvent exécuter la totalité des logiciels fonctionnant sous Linux. Dans le cas le plus simple, le logiciel dont vous avez besoin sera déjà installé sur l'un des serveurs de calcul. Il sera alors accessible sous la forme d'un '''module'''. Si ce n'est pas le cas, vous pouvez soit demander à notre équipe de l'installer pour vous, soit le faire vous-même.  
Les serveurs de calcul de Calcul Canada peuvent exécuter la totalité des logiciels fonctionnant sous Linux. Dans le cas le plus simple, le logiciel dont vous avez besoin sera déjà installé sur l'un des serveurs de calcul. Il sera alors accessible sous la forme d'un '''module'''. Si ce n'est pas le cas, vous pouvez soit demander à notre équipe de l'installer pour vous, soit le faire vous-même.  


== Les modules == <!--T:2-->
Les modules sont des fichiers de configuration qui contiennent des instructions afin de modifier votre environnement logiciel. Cette architecture modulaire permet d'avoir plusieurs versions d'une même application installées sans que celles-ci entrent en conflit. Pour les nouveaux serveurs de Calcul Canada, les modules sont gérés par l'outil [https://www.tacc.utexas.edu/research-development/tacc-projects/lmod Lmod], développé au [https://www.tacc.utexas.edu/ TACC]. Cet outil remplace [http://modules.sourceforge.net ''Environment Modules''], qui est utilisé sur la plupart des anciens serveurs. Si vous êtes familier avec ce système, vous ne devriez pas être trop dépaysé, car ''Lmod'' a été conçu pour être très similaire à ''Environment Modules''. Référez-vous alors à la section [[#Lmod vs Environment Modules]] pour connaître les différences principales entre les deux systèmes.  
Les modules sont des fichiers de configuration qui contiennent des instructions afin de modifier votre environnement logiciel. Cette architecture modulaire permet d'avoir plusieurs versions d'une même application installées sans que celles-ci entrent en conflit. Pour les nouveaux serveurs de Calcul Canada, les modules sont gérés par l'outil [https://www.tacc.utexas.edu/research-development/tacc-projects/lmod Lmod], développé au [https://www.tacc.utexas.edu/ TACC]. Cet outil remplace [http://modules.sourceforge.net ''Environment Modules''], qui est utilisé sur la plupart des anciens serveurs. Si vous êtes familier avec ce système, vous ne devriez pas être trop dépaysé, car ''Lmod'' a été conçu pour être très similaire à ''Environment Modules''. Référez-vous alors à la section [[#Lmod vs Environment Modules]] pour connaître les différences principales entre les deux systèmes.  


Line 10: Line 9:
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 <tt>PATH</tt> et <tt>LD_LIBRARY_PATH</tt>, pour utiliser les différents logiciels installés.  
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 <tt>PATH</tt> et <tt>LD_LIBRARY_PATH</tt>, pour utiliser les différents logiciels installés.  


=== Principales commandes de <tt>module</tt> === <!--T:4-->
= Principales commandes de <tt>module</tt> = <!--T:4-->
La commande <tt>module</tt> a plusieurs sous-commandes. La syntaxe normale est  
La commande <tt>module</tt> a plusieurs sous-commandes. La syntaxe normale est  
{{Commande|module commande [autres options]}}
{{Commande|module commande [autres options]}}
Line 18: Line 17:
{{Commande|module help}}
{{Commande|module help}}


==== Sous-commande <tt>avail</tt> ==== <!--T:6-->
== Sous-commande <tt>avail</tt> == <!--T:6-->
Pour lister les modules disponibles sur un système donné, utiliser
Pour lister les modules disponibles sur un système donné, utiliser
{{Commande|module avail}}
{{Commande|module avail}}
Line 29: Line 28:
Notez que la commande <tt>module avail</tt> peut ne pas lister certains modules qui sont incompatibles avec les modules que vous avez chargé. Pour voir la liste complète de tous les modules, utilisez la sous-commande <tt>spider</tt> documentée ci-dessous.  
Notez que la commande <tt>module avail</tt> peut ne pas lister certains modules qui sont incompatibles avec les modules que vous avez chargé. Pour voir la liste complète de tous les modules, utilisez la sous-commande <tt>spider</tt> documentée ci-dessous.  


==== Sous-commande <tt>spider</tt> (Lmod seulement) ==== <!--T:9-->
== Sous-commande <tt>spider</tt> (Lmod seulement) == <!--T:9-->
La sous-commande <tt>spider</tt> recherche l'arborescence complète de tous les modules et l'affiche.  
La sous-commande <tt>spider</tt> recherche l'arborescence complète de tous les modules et l'affiche.  
{{Commande|module spider}}
{{Commande|module spider}}
Line 43: Line 42:
cela vous affichera la liste des options de module à charger afin d'accéder à cette version.
cela vous affichera la liste des options de module à charger afin d'accéder à cette version.


==== Sous-commande <tt>list</tt> ==== <!--T:12-->
== Sous-commande <tt>list</tt> == <!--T:12-->
La sous-commande '''<tt>list</tt>''' affiche les modules qui sont présentement chargés dans votre environnement.
La sous-commande '''<tt>list</tt>''' affiche les modules qui sont présentement chargés dans votre environnement.
{{Commande|module list}}
{{Commande|module list}}


==== Sous-commande <tt>load</tt> ==== <!--T:13-->
== Sous-commande <tt>load</tt> == <!--T:13-->
La sous-commande '''<tt>load</tt>''' permet de charger un module donné. Par exemple
La sous-commande '''<tt>load</tt>''' permet de charger un module donné. Par exemple
{{Commande|module load gcc/4.8}}
{{Commande|module load gcc/4.8}}
Line 60: Line 59:
Si vous chargez un module qui est incompatible avec un module déjà chargé, Lmod vous indiquera qu'il a remplacé l'ancien module par le nouveau. Ceci peut se produire en particulier pour des compilateurs et des implémentations MPI.  
Si vous chargez un module qui est incompatible avec un module déjà chargé, Lmod vous indiquera qu'il a remplacé l'ancien module par le nouveau. Ceci peut se produire en particulier pour des compilateurs et des implémentations MPI.  


==== Sous-commande <tt>unload</tt> ==== <!--T:16-->
== Sous-commande <tt>unload</tt> == <!--T:16-->
Pendant de la sous-commande '''<tt>load</tt>''', la sous-commande '''<tt>unload</tt>''' enlève un module de votre environnement. Par exemple
Pendant de la sous-commande '''<tt>load</tt>''', la sous-commande '''<tt>unload</tt>''' enlève un module de votre environnement. Par exemple
{{Commande|module unload gcc/4.8}}
{{Commande|module unload gcc/4.8}}
Line 68: Line 67:
Si certains modules dépendaient de ce compilateur, Lmod vous indiquera qu'ils ont été désactivés.
Si certains modules dépendaient de ce compilateur, Lmod vous indiquera qu'ils ont été désactivés.


==== Sous-commande <tt>purge</tt> ==== <!--T:18-->
== Sous-commande <tt>purge</tt> == <!--T:18-->
La sous-commande '''<tt>purge</tt>''' permet d'enlever d'un seul coup tous les modules que vous avez chargés.
La sous-commande '''<tt>purge</tt>''' permet d'enlever d'un seul coup tous les modules que vous avez chargés.
{{Commande|module purge}}
{{Commande|module purge}}
Line 75: Line 74:
Certains modules peuvent être marqués comme ''sticky'' (permanent) par les administrateurs système. Ces derniers ne seront pas enlevés.
Certains modules peuvent être marqués comme ''sticky'' (permanent) par les administrateurs système. Ces derniers ne seront pas enlevés.


==== Sous-commandes <tt>show</tt>, <tt>help</tt> et <tt>whatis</tt> ==== <!--T:20-->
== Sous-commandes <tt>show</tt>, <tt>help</tt> et <tt>whatis</tt> == <!--T:20-->
Les sous-commandes '''<tt>show</tt>''', '''<tt>help</tt>''' et '''<tt>whatis</tt>''' permettent d'avoir de l'information supplémentaire sur un module donné. La sous-commande '''<tt>show</tt>''' affiche l'intégralité du module, la commande '''<tt>help</tt>''' affiche un message d'aide, et la commande '''<tt>whatis</tt>''' montre une description du module.
Les sous-commandes '''<tt>show</tt>''', '''<tt>help</tt>''' et '''<tt>whatis</tt>''' permettent d'avoir de l'information supplémentaire sur un module donné. La sous-commande '''<tt>show</tt>''' affiche l'intégralité du module, la commande '''<tt>help</tt>''' affiche un message d'aide, et la commande '''<tt>whatis</tt>''' montre une description du module.
{{Commande|module help gcc/4.8}}
{{Commande|module help gcc/4.8}}


==== Sous-commande <tt>apropos</tt> ou <tt>keyword</tt> ==== <!--T:21-->
== Sous-commande <tt>apropos</tt> ou <tt>keyword</tt> == <!--T:21-->
Les sous-commandes <tt>apropos</tt> ou <tt>keyword</tt> permettent de chercher un mot-clé dans la totalité des modules. Si vous ne savez pas quel module est approprié pour réaliser votre calcul, vous pouvez ainsi chercher dans les descriptions.
Les sous-commandes <tt>apropos</tt> ou <tt>keyword</tt> permettent de chercher un mot-clé dans la totalité des modules. Si vous ne savez pas quel module est approprié pour réaliser votre calcul, vous pouvez ainsi chercher dans les descriptions.


=== Chargement automatique des modules === <!--T:22-->
= Chargement automatique des modules = <!--T:22-->
Nous vous '''déconseillons de charger des modules automatiquement dans votre .bashrc'''. Nous vous recommandons plutôt de charger les modules nécessaire au besoin, par exemple dans vos scripts de tâches. Afin de faciliter le chargement d'un grand nombre de modules, nous vous recommandons d'utiliser une collection de modules.  
Nous vous '''déconseillons de charger des modules automatiquement dans votre .bashrc'''. Nous vous recommandons plutôt de charger les modules nécessaire au besoin, par exemple dans vos scripts de tâches. Afin de faciliter le chargement d'un grand nombre de modules, nous vous recommandons d'utiliser une collection de modules.  


=== Collections de modules (Lmod seulement) === <!--T:23-->
= Collections de modules (Lmod seulement) = <!--T:23-->
Lmod vous permet de créer une collection de modules. Pour ce faire, chargez les modules requis. Par exemple:  
Lmod vous permet de créer une collection de modules. Pour ce faire, chargez les modules requis. Par exemple:  
{{Commande|module load gcc/4.8 openmpi/1.8 mkl}}
{{Commande|module load gcc/4.8 openmpi/1.8 mkl}}
Line 98: Line 97:
{{Commande|module restore mes_modules}}
{{Commande|module restore mes_modules}}


=== Modules cachés ===  <!--T:34-->
= Modules cachés =  <!--T:34-->
Certains modules sont cachés. Vous pouvez les ignorer. Il s'agit généralement de modules que vous n'avez pas à charger manuellement. Ils sont chargés automatiquement selon les besoins.  
Certains modules sont cachés. Vous pouvez les ignorer. Il s'agit généralement de modules que vous n'avez pas à charger manuellement. Ils sont chargés automatiquement selon les besoins.  


== Lmod vs Environment Modules == <!--T:26-->
= Lmod vs Environment Modules = <!--T:26-->
Les principales différences entre l'environnement mis à votre disposition sur les nouveaux serveurs de Calcul Canada et les serveurs que vous avez utilisé par le passé sont les suivantes.  
Les principales différences entre l'environnement mis à votre disposition sur les nouveaux serveurs de Calcul Canada et les serveurs que vous avez utilisé par le passé sont les suivantes.  


=== Hiérarchie de modules === <!--T:27-->
== Hiérarchie de modules == <!--T:27-->
La majorité des systèmes utilisent une structure de modules plate : tous les modules sont à un même niveau. Ceci devient problématique lorsqu'un grand nombre de combinaisons de versions de différents modules sont disponibles sur un système. Par exemple, si vous avez à utiliser la bibliothèque [[FFTW]], et que le module <tt>fftw</tt> est disponible en plusieurs versions, dont une version compilée avec le compilateur <tt>gcc</tt> version 4.8 et <tt>openmpi</tt> 1.6, vous avez peut-être déjà vu des modules nommés <tt>openmpi/1.6_gcc4.8</tt> et <tt>fftw/3.3_gcc4.8_openmpi1.6</tt>. Ceci n'est ni élégant, ni pratique. Pour résoudre ce problème, nous utilisons une hiérarchie de modules. Plutôt que d'utiliser la commande
La majorité des systèmes utilisent une structure de modules plate : tous les modules sont à un même niveau. Ceci devient problématique lorsqu'un grand nombre de combinaisons de versions de différents modules sont disponibles sur un système. Par exemple, si vous avez à utiliser la bibliothèque [[FFTW]], et que le module <tt>fftw</tt> est disponible en plusieurs versions, dont une version compilée avec le compilateur <tt>gcc</tt> version 4.8 et <tt>openmpi</tt> 1.6, vous avez peut-être déjà vu des modules nommés <tt>openmpi/1.6_gcc4.8</tt> et <tt>fftw/3.3_gcc4.8_openmpi1.6</tt>. Ceci n'est ni élégant, ni pratique. Pour résoudre ce problème, nous utilisons une hiérarchie de modules. Plutôt que d'utiliser la commande
{{Commande|module load gcc/4.8 openmpi/1.6_gcc4.8 fftw/3.3_gcc4.8_openmpi1.6}}
{{Commande|module load gcc/4.8 openmpi/1.6_gcc4.8 fftw/3.3_gcc4.8_openmpi1.6}}
Line 114: Line 113:
L'inconvénient d'utiliser une hiérarchie de modules est que, puisque des modules peuvent avoir le même nom, seuls les modules compatibles avec les modules ''parents'' sont affichés par la commande <tt>module avail</tt>. Charger un parent est donc un prérequis afin d'avoir accès à certains modules. Pour avoir l'information complète, Lmod rend disponible la commande <tt>module spider</tt>. Celle-ci parcours la hiérarchie complète et afficher tous les modules. En spécifiant un module et une version particulière, il est alors possible quels sont les chemins de la hiérarchie qui permettent de charger le module désiré.
L'inconvénient d'utiliser une hiérarchie de modules est que, puisque des modules peuvent avoir le même nom, seuls les modules compatibles avec les modules ''parents'' sont affichés par la commande <tt>module avail</tt>. Charger un parent est donc un prérequis afin d'avoir accès à certains modules. Pour avoir l'information complète, Lmod rend disponible la commande <tt>module spider</tt>. Celle-ci parcours la hiérarchie complète et afficher tous les modules. En spécifiant un module et une version particulière, il est alors possible quels sont les chemins de la hiérarchie qui permettent de charger le module désiré.


=== Collections de modules === <!--T:29-->
== Collections de modules == <!--T:29-->
Les collections de modules sont l'une des fonctionnalités additionnelles fournies par Lmod. Voir [[#Collections de modules (Lmod seulement)|cette section]] pour plus de détails.
Les collections de modules sont l'une des fonctionnalités additionnelles fournies par Lmod. Voir [[#Collections de modules (Lmod seulement)|cette section]] pour plus de détails.


=== Une seule version chargée à la fois === <!--T:30-->
== Une seule version chargée à la fois == <!--T:30-->
Lmod refusera de charger deux versions d'un même module en même temps. Par exemple, vous ne pourrez pas charger les versions 4.8 et 5.4 du compilateur GCC en même temps.
Lmod refusera de charger deux versions d'un même module en même temps. Par exemple, vous ne pourrez pas charger les versions 4.8 et 5.4 du compilateur GCC en même temps.


=== Un seul module d'une même famille chargé à la fois === <!--T:31-->
== Un seul module d'une même famille chargé à la fois == <!--T:31-->
Il est possible pour les administrateurs de spécifier que deux modules portant des noms différents sont de la même famille. Lmod refusera alors de charger deux modules de la même famille. Des exemples typiques seraient les modules de compilateurs (gcc, intel), les modules MPI (openmpi, mvapich2), ou les modules de la bibliothèque BLAS (mkl, openblas).  
Il est possible pour les administrateurs de spécifier que deux modules portant des noms différents sont de la même famille. Lmod refusera alors de charger deux modules de la même famille. Des exemples typiques seraient les modules de compilateurs (gcc, intel), les modules MPI (openmpi, mvapich2), ou les modules de la bibliothèque BLAS (mkl, openblas).  


=== Remplacement automatique de modules === <!--T:32-->
== Remplacement automatique de modules == <!--T:32-->
Lorsque Lmod détecte deux modules de la même famille, ou deux versions du même module, la commande <tt>module load</tt> remplacera automatiquement le module original par celui qui doit être chargé. Dans le cas où le module remplacé est un noeud de la hiérarchie de modules, les modules dépendants seront chargés de nouveau s'il existe une version compatible, ou désactivés dans le cas contraire.  
Lorsque Lmod détecte deux modules de la même famille, ou deux versions du même module, la commande <tt>module load</tt> remplacera automatiquement le module original par celui qui doit être chargé. Dans le cas où le module remplacé est un noeud de la hiérarchie de modules, les modules dépendants seront chargés de nouveau s'il existe une version compatible, ou désactivés dans le cas contraire.  


=== Modules permanents === <!--T:33-->
== Modules permanents == <!--T:33-->
Lmod permet aux administrateurs de définir un module comme étant permanent (''sticky''). Un tel module ne sera pas enlevé via la commande <tt>module purge</tt>.  
Lmod permet aux administrateurs de définir un module comme étant permanent (''sticky''). Un tel module ne sera pas enlevé via la commande <tt>module purge</tt>.  




</translate>
</translate>
cc_staff
317

edits

Navigation menu