Créer un module

De Wiki de Calcul Québec
Aller à : Navigation, rechercher
Autres langues :anglais 100% • ‎français 100%

Description générale

Un fichier de module décrit l'environnement associé à une application. Il permet par exemple d'ajouter en une seule commande des chemins d'accès dans la variable d'environnement $PATH ou encore des chemins vers des bibliothèques dans $LD_LIBRARY_PATH.

Les fichiers de module sont écrits en Tool Command Language (TCL). Vous n'avez cependant pas besoin de connaître ce langage afin d'en écrire un, puisqu'un petit sous-ensemble de commandes est suffisant.

Attention! Lorsque vous créer vos propres modules, vous devez spécifier le chemin complet vers ces modules lorsque vous le chargez. Par exemple, si vous avez un module ~/modulefiles/apps/myapp/1.0.0, vous devez le charger ainsi

[nom@serveur $] module load /home/usager/modulefiles/apps/myapp/1.0.0


Vous pouvez omettre cette complexité si vous ajoutez le répertoire /home/usager/modulefiles à votre variable d'environnement $MODULEPATH. Pour ce faire, utilisez la sous-commande use de module :

[nom@serveur $] module use /home/usager/modulefiles/


Si vous utilisez les modules automatiques, vous pouvez placer cette commande au début de votre fichier ~/.modules. Ne la placez pas dans votre .bashrc car lorsque vous ouvrez une session le fichier .modules est lu avant que ne soit exécuté le fichier .bashrc.

Exemple

Le contenu d'un fichier de module est assez simple, un bon point de départ est de prendre exemple sur un fichier déjà existant et d'en modifier les variables pour les adapter au module que vous venez d'installer :

Fichier : modulefiles/mpi/openmpi/1.6.3_intel
#%Module1.0
#####################################################################
##
## OPENMPI MPI lib
##
##
proc ModulesHelp { } {
        puts stderr "\tAdds the OpenMPI library to your environment. "
}
 
module-whatis "(Category_______) mpi"
module-whatis "(Name___________) OpenMPI"
module-whatis "(Version________) 1.6.3"
module-whatis "(Website________) http://www.open-mpi.org/"
module-whatis "(Authorship_____) The Open MPI Team"
module-whatis "(Compiler_______) Intel 2013"
module-whatis "(Flags__________) CFLAGS='-O3 -xHOST -Wall' ../openmpi-1.6.3/configure --prefix=prefix --with-threads "
module-whatis "                  --enable-mpi-thread-multiple --with-openib --enable-shared --enable-static --with-ft=cr --enable-ft-thread "
module-whatis "                  --with-blcr=/software/apps/blcr/0.8.4 --with-blcr-libdir=/software/apps/blcr/0.8.4/lib --with-tm=/opt/torque "
module-whatis "                  CFLAGS='CFLAGS' --with-io-romio-flags='--with-file-system=testfs+ufs+nfs+lustre'"
module-whatis "(Dependencies___) Intel 2013"
 
conflict                               mpi
prereq                             compilers/intel/2013
set                synopsys            /software/MPI/openmpi/1.6.3_intel
set                blcr_synopsys       /software/apps/blcr/0.8.4
prepend-path       PATH                $synopsys/bin:$blcr_synopsys/bin
prepend-path       LD_LIBRARY_PATH     $synopsys/lib:$blcr_synopsys/lib
prepend-path       LIBRARY_PATH     $synopsys/lib:$blcr_synopsys/lib
prepend-path       CPATH      $synopsys/include
prepend-path       MANPATH             $synopsys/share/man:$blcr_synopsys/man
setenv             OMPI_MCA_plm_rsh_num_concurrent 960


Décortiquons cet exemple. Le fichier débute d'abord par un commentaire (lignes débutant par le signe #), qui spécifie qu'il s'agit d'un module selon le format 1.0. D'autres commentaires indiquent qu'il s'agit d'un module pour la bibliothèque MPI OpenMPI. Le module débute ensuite en définissant une fonction ModulesHelp. Cette fonction sera appelée lorsqu'un utilisateur exécutera la commande

[nom@serveur $] module help mpi/openmpi/1.6.3_intel


La commande affichera dans la sortie d'erreur standard, le message « Adds the OpenMPI library to your environment. ».

Note : Tous les messages affichés par la commande module utilisent la sortie d'erreur (stderr) plutôt que la sortie standard (stdout).

Le module se poursuit ensuite avec une liste de commandes parmi les suivantes :

Commande Utilisation
module-whatis Permet de donner une description plus élaborée du module. Affiché via module whatis nom_du_module.
conflict Spécifie que ce module ne peut pas être chargé si un module donné est déjà chargé.
prereq Spécifie un module prérequis.
set Définit une variable interne au module.
prepend-path Préfixe une variable d'environnement de chemin de type PATH par le chemin spécifié
setenv Définit une variable d'environnement.

Ainsi, le module ci-dessus définit une description détaillée du module avec la commande module-whatis. Il indique ensuite que le module ne peut être chargé avec aucun autre module mpi, c'est-à-dire qu'un seul module mpi peut être chargé à la fois. Il est ensuite spécifié que le compilateur Intel 2013 est prérequis.

Par la suite, le module ajoute des répertoires à plusieurs variables d'environnement, puis définit une variable d'environnement (un paramètre de contrôle OpenMPI dans ce cas-ci).

Outils personnels
Espaces de noms

Variantes
Actions
Navigation
Ressources de Calcul Québec
Outils
Partager