Votre code sur les serveurs de calcul

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

Les serveurs de calcul de Calcul Québec 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.

Sommaire

Les modules

Les modules sont des briques logicielles qui peuvent être ajoutées à votre environnement pour modifier son comportement. Cette architecture modulaire permet d'avoir plusieurs versions d'une même application installées sans que celles-ci entrent en conflit. Les modules sont généralement gérés par l'outil Environment Modules.

Un fichier module (« modulefile ») contient les informations pour configurer l'environnement de l'usager pour une application. Typiquement, un fichier module contient des instructions qui modifient ou initialisent les variables d'environnement, comme PATH et LD_LIBRARY_PATH, pour utiliser les différents logiciels installés. Plusieurs fichiers modules sont disponibles sur chaque système.

Principales commandes de module

La commande module a plusieurs sous-commandes. La syntaxe normale est

[nom@serveur $] module commande [autres options]


Pour connaître la liste des sous-commandes disponibles, utiliser

[nom@serveur $] module help


Sous-commande avail

Pour lister les modules disponibles sur un système donné, utiliser

[nom@serveur $] module avail


Vous pouvez rajouter l'option -l pour obtenir la liste avec la date de dernière modification des modules

[nom@serveur $] module avail -l


Vous pouvez obtenir une liste de modules disponibles pour une bibliothèque ou un outil particulier

[nom@serveur $] module avail openmpi


Sous-commande list

La sous-commande list affiche les modules qui sont présentement chargés dans votre environnement.

[nom@serveur $] module list


Sous-commande add ou load

La sous-commande add (load est synonyme) permet de charger un module donné. Par exemple

[nom@serveur $] module add compilers/gcc/4.7.2


ou

[nom@serveur $] module load compilers/gcc/4.7.2


pourrait charger le module du compilateur GCC version 4.7.2. Pour le nom des modules disponibles sur un serveur donné, utiliser la sous-commande avail.

Vous pouvez charger plus d'un module avec une même commande. Par exemple

[nom@serveur $] module add compilers/gcc/4.7.2 mpi/openmpi/1.6.3_gcc


chargerait à la fois le compilateur GCC 4.7.2 et la bibliothèque OpenMPI 1.6.3 compilée pour GCC.

Sous-commande rm ou unload

Pendant de la sous-commande add (load), la sous-commande rm (unload) enlève un module de votre environnement. Par exemple

[nom@serveur $] module rm compilers/gcc/4.7.2


ou

[nom@serveur $] module unload compilers/gcc/4.7.2


enlèverait le compilateur GCC 4.7.2 de votre environnement.

Sous-commande purge

La sous-commande purge permet d'enlever d'un seul coup tous les modules que vous avez chargés.

[nom@serveur $] module purge


Sous-commandes show, help et whatis

Les sous-commandes show, help et whatis permettent d'avoir de l'information supplémentaire sur un module donné. La sous-commande show affiche l'intégralité du module, la commande help affiche un message d'aide, et la commande whatis montre une description du module.

[nom@serveur $] module help python64/2.7.3


Sous-commande apropos ou keyword

Les sous-commandes apropos ou keyword 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. Par exemple,

[nom@serveur $] module keyword Fourier


donnerait la liste des modules susceptibles de faire des transformées de Fourier.

Chargement automatique des modules

Si vous utilisez toujours les mêmes modules, vous pouvez ajouter ces modules à une liste qui seront ajoutés automatiquement à votre environnement par défaut. Pour gérer cette liste, utilisez les sous-commandes initadd, initrm et initlist. Notez que ces commandes n'ont pas d'effet sur votre session courante, elles ne s'appliqueront qu'à vos sessions futures.

Si vous obtenez un message d'erreur lors de l'exécution de l'une de ces commandes, il est possible que ce soit dû au fait que votre répertoire $HOME ne contienne pas le fichier de configuration .modules. Vous pouvez le créer à l'aide de la commande suivante:

[nom@serveur $] echo "module add null" > $HOME/.modules


Faire installer une application ou un module

Si une application n'est pas disponible sur le serveur que vous utilisez, plusieurs options s'offrent à vous.

  • Vous pouvez tout d'abord vérifier si l'application est disponible sur les autres serveurs de calcul. Pour voir la liste des serveurs de calcul, vous référer au site Web de Calcul Québec.
  • Si l'application n'est disponible sur aucun des serveurs, ou encore que vous voulez utiliser un serveur particulier et que l'application n'y est pas disponible, vous pouvez contacter l'équipe technique de Calcul Québec et demander à ce que l'application soit installée. Dans la majorité des cas, ce sera possible. Selon le cas, l'application sera installée globalement sur le serveur, uniquement pour vous, ou encore pour votre groupe de recherche. S'il est impossible de faire fonctionner l'application sur nos serveurs de calcul, notre équipe pourra étudier avec vous les solutions de rechange possibles.
  • Vous pouvez aussi tenter d'installer l'application vous-même (voir la prochaine section).

Faites-le vous-même

Si l'application est simple à installer, ou encore s'il s'agit d'un code maison, vous pouvez aussi installer l'application vous-même. Pour ce faire, vous aurez généralement besoin du code source et d'un compilateur. Tous les serveurs de calcul proposent plusieurs compilateurs pour plusieurs langages. Pour les langages C, C++, et Fortran, les compilateurs GNU et Intel sont généralement disponibles en différentes versions. D'autres compilateurs, tels que Portland Group (PGI), CLang sont aussi parfois proposés.

Récupérer le code source

Vous devez d'abord récupérer le code source de l'application. La méthode utilisée dépendra de l'application. La situation la plus simple est de télécharger une archive contenant le code source sur un site Web. Vous devrez ensuite l'acheminer sur le serveur de calcul approprié, généralement par Secure Copy. Référez-vous à la page Se connecter et transférer des fichiers pour les instructions de transfert. Vous devrez enfin désarchiver le code source, typiquement par l'une des commandes suivantes

[nom@serveur $] tar xfvz mon_application.tar.gz


ou

[nom@serveur $] unzip mon_application.zip


Compiler l'application

Dans les cas les plus simples, vous pouvez compiler une application donnée en quelques commandes. Les commandes exactes dépendront du paquetage de l'application, mais sont souvent similaires. Vous devrez porter particulièrement attention au répertoire d'installation, qui devra être situé dans votre répertoire personnel ou votre répertoire de groupe. Une fois dans le répertoire contenant le code source, vous trouverez souvent un fichier README ou INSTALL contenant des instructions pour l'installation. Lisez d'abord ces instructions. Dans les sous-sections ci-dessous, on répertorie quelques façons de compiler une application ou une bibliothèque. Notez que vous devez charger un compilateur au préalable.

Make

L'outil Make est fréquemment utilisé pour compiler une application ou une bibliothèque. Si le répertoire de code source contient un fichier Makefile, il est possible que la commande suivante soit suffisante pour compiler :

[nom@serveur $] make


Autoconf

La suite Autoconf est la suite d'outils la plus utilisée pour déployer des applications de manière portable. Si le répertoire source contient un fichier configure, c'est vraisemblablement cette suite qui est utilisée. Dans ce cas, vous devriez pouvoir compiler et installer votre application simplement avec la commande

[nom@serveur $] ./configure --prefix="$HOME/monapplication/" && make && make install


Selon les dépendances de l'application, vous pourriez devoir charger le module d'autres bibliothèques ou encore en installer (ou faire installer) vous-même.

Cette commande configurera, compilera et installera l'application dans le répertoire $HOME/monapplication/, soit dans votre répertoire d'accueil.

Cmake

Cmake est un autre outil fréquemment utilisé pour déployer des applications. Si le répertoire de code source contient un fichier CMakeLists.txt, c'est probablement l'outil qui est utilisé pour la compilation. Si tel est le cas, vous pourrez probablement utiliser la commande

[nom@serveur $] cmake -DCMAKE_INSTALL_PREFIX="$HOME/monapplication" . && make && make install


pour configurer, compiler et installer votre application dans le répertoire $HOME/monapplication/.

Note : il est possible que vous deviez charger un module pour rendre la commande cmake disponible.

Créer un module

Pour savoir comment créer vos propres modules, veuillez vous référer à la page Créer un module.

Particularités de chaque serveur

Les modules de Briarée et Hadès sont partagés. Vous pouvez consulter la liste des modules disponibles sur Briarée et Hadès.
Sur Colosse, les répertoires lmodulefiles de votre répertoire personnel ($HOME) ainsi que ceux de tous les répertoires /rap/ auquel vous avez accès sont automatiquement ajoutés à votre $MODULEPATH s'ils existent. Vous pouvez consulter la liste des modules disponibles sur Colosse.
Sur Cottos, le fichier $HOME/.modules.cottos détermine vos modules par défaut. Votre interpréteur de commandes par défaut, qu'il soit tcsh, Bash ou autre, va l'exécuter à la connexion. Les commandes initlist, initadd et initrm utiliseront ce fichier.
Les modules de Briarée et Hadès sont partagés. Vous pouvez consulter la liste des modules disponibles sur Briarée et Hadès.
Sur Helios, les répertoires lmodulefiles de votre répertoire personnel ($HOME) ainsi que ceux de tous les répertoires /rap/ auquel vous avez accès sont automatiquement ajoutés à votre $MODULEPATH s'ils existent. Vous pouvez consulter la liste des modules disponibles sur Helios.

Mammouth parallèle II

Sur Mammouth parallèle II, le chargement automatique de modules est préconfiguré. Dans votre compte, le fichier $HOME/.modules_mp2 détermine vos modules par défaut. Les commandes initlist, initadd et initrm modifieront ce fichier de façon à modifier la liste de modules par défaut. Notez que ces modifications ne s'appliquent pas à la session courante.

Vous pouvez consulter la liste des modules disponibles sur Mp2.

Mammouth série II

Sur Mammouth série II, le chargement automatique de modules est préconfiguré. Dans votre compte, le fichier $HOME/.modules détermine vos modules par défaut. Les commandes initlist, initadd et initrm modifieront ce fichier de façon à modifier la liste de modules par défaut. Notez que ces modifications ne s'appliquent pas à la session courante.

Vous pouvez consulter la liste des modules disponibles sur Ms2.
La commande module n'est pas installée sur Psi.


Outils personnels
Espaces de noms

Variantes
Actions
Navigation
Ressources de Calcul Québec
Outils
Partager