Utiliser des modules: Difference between revisions

Jump to navigation Jump to search
no edit summary
No edit summary
No edit summary
Line 103: Line 103:
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-->
= Hiérarchie de modules = <!--T:27-->
Les principales différences entre l'environnement mis à votre disposition sur les nouveaux serveurs et les serveurs que vous avez utilisés par le passé sont les suivantes.
Plusieurs des systèmes de calcul informatique de pointe à travers le monde utilisent une structure de modules plate avec tous les modules au même niveau. Ceci devient problématique lorsqu'un grand nombre de combinaisons de versions de différents modules sont disponibles. 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/4.0_gcc9.3</tt> et <tt>fftw/3.8_gcc9.3_openmpi4.0</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/9.3 openmpi/4.0_gcc9.3 fftw/3.8_gcc9.3_openmpi4.0}}
== Hiérarchie de modules == <!--T:27-->
La majorité des systèmes utilisent une structure de modules plate avec tous les modules au même niveau. Ceci devient problématique lorsqu'un grand nombre de combinaisons de versions de différents modules sont disponibles. 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}}
vous utiliserez la commande
vous utiliserez la commande
{{Commande|module load gcc/4.8 openmpi/1.6 fftw/3.3}}
{{Commande|module load gcc/9.3 openmpi/4.0 fftw/3.8}}
Ceci est rendu possible avec une hiérarchie de modules. Le module <tt>fftw/3.3</tt> qui est chargé ne sera pas le même si vous avez chargé au préalable le compilateur Intel ou le compilateur GCC.  
Ceci est rendu possible avec une hiérarchie de modules. Le module <tt>fftw/3.8</tt> qui est chargé ne sera pas le même si vous avez chargé au préalable le compilateur Intel ou le compilateur GCC.  


<!--T:28-->
<!--T:28-->
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 parcourt la hiérarchie complète et affiche tous les modules. En spécifiant un module et une version particulière, il est alors possible de savoir quels chemins de la hiérarchie 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, le système de module rend disponible la commande <tt>module spider</tt>. Celle-ci parcourt la hiérarchie complète et affiche tous les modules. En spécifiant un module et une version particulière, il est alors possible de savoir quels chemins de la hiérarchie permettent de charger le module désiré.
 
== Collections de modules == <!--T:29-->
Les collections de modules sont l'une des fonctionnalités additionnelles fournies par Lmod. Voir [[Utiliser des modules#Collections_de_modules_(Lmod_seulement)|cette section]] pour plus de détails.
 
== 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.
 
== 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 les charger. 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-->
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 nœud 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-->
= Remplacement automatique de modules = <!--T:32-->
Lmod permet aux administrateurs de définir un module comme étant permanent (''sticky''). Un tel module ne sera pas enlevé par la commande <tt>module purge</tt>.  
Lorsque le système de modules 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 nœud 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.


= Créer des modules = <!--T:36-->
= Créer des modules = <!--T:36-->
Bureaucrats, cc_docs_admin, cc_staff, rsnt_translations
2,837

edits

Navigation menu