Formation pour l'introduction à l'utilisation des moyens de calcul
Supports de présentations :
Connexion aux clusters
Pour la formation nous utiliserons le compte commun suivant : formationmeso
Et nous nous connecterons à la machine mesologin1.univ-fcomte.fr via SSH comme ceci :
$ ssh formationmeso@mesologin1.univ-fcomte.fr
Le mot de passe vous sera communiqué pendant la séance
Découverte de l'environnement
Organisation du stockage
Chaque utilisateur peut utiliser deux répertoires pour stocker ses données sur le mésocentre :
$HOME
- Répertoire de connexion par défaut
- Lecture/écriture sur les noeuds de connexion
- Lecture seule sur les noeuds de calcul
- Limité à 10Go par utilisateur
- Sauvegarde quotidienne
$WORK
- Lecture/écriture sur tout le cluster
- Limite de taille à 600Go par utilisateur
- Pas de sauvegarde
Ces deux répertoires sont uniques pour chaque utilisateur. La commande echo permet d'afficher leur localisation exacte :
$ echo $HOME $ echo $WORK
Il existe plusieurs raccourcis permettant de se placer dans $HOME
:
$ cd $ cdh $ cd $HOME
De la même manière, pour se placer dans $WORK
:
$ cdw $ cd $WORK
Enfin, la commande suivante permet de vérifier l'utilisation disque, dans ces deux répertoires :
$ meso-quota
Les modules
Vérifier la liste des logiciels disponibles :
$ module avail
Charger le logiciel Matlab :
$ module load matlab
Afficher la liste des modules chargés :
$ module list
Décharger le logiciel Matlab :
$ module rm matlab
Décharger tous les modules :
$ module purge
Files d'attentes et jobs
Récupérer la liste de tous les jobs en cours d'exécution :
$ qstatAll
Récupérer la liste de mes jobs :
$ qstat
Récupérer la liste des files d'attente disponibles et leur utilisation :
$ qstat -g c
Soumission des calculs avec SGE
- Calcul séquentiel
- Calcul parallèle : tableaux de tâche
- Calcul parallèle mémoire partagée : OpenMP
- Calcul parallèle mémoire distribué : MPI
Pour éviter tout problème d'édition des fichiers, créer votre propre répertoire de travail pour la suite des exercices :
$ cd $WORK $ mkdir <nom du participant> $ cd <nom du participant>
- nano
- vim
- emacs
- gedit
Copie des fichiers d'exemple (calcul de PI)
$ cp -a $HOME/TP .
Placement dans le répertoire TP
$ cd TP
Soumission d'un calcul séquentiel
Préparation du script de soumission :
$ cp script_base.sge pi_seq.sge
Compilation de la version séquentielle du calcul de PI :
$ make pi_ser
Ensuite, le job peut être soumis avec qsub
:
$ qsub pi_seq.sge
Soumission d'un tableau de tâche
En augmentant la valeur de n, il est possible d'augmenter la précision obtenue pour la valeur de pi. Un calcul séquentiel devient dans ce cas très long : il est intéressant de découper la plage de valeurs en tâches, qui vont chacune calculer une fraction de la surface.
C'est possible avec SGE via l'utilisation de tableaux de tâches.
Le fichier d'exemple correspondant est pi_task
.
Préparation du script de soumission :
$ cp script_base.sge pi_task.sge
Modifiez le script pour intégrer l'exécution de pi_task, en rajoutant le paramètre SGE suivant dans le script pi_task.sge :
#$ -t 1-20
L'exécutable attend deux paramètres dans le script SGE :
- L'identifiant de la tâche (
$SGE_TASK_ID
) - Le nombre de tâches total (ici 20, puisqu'il y a 20 tâches)
Ensuite, le job peut être soumis avec qsub
:
$ qsub pi_task.sge
Calcul avec Matlab (SGE)
Il est également possible de réaliser le calcul de PI avec Matlab (fichier pi_matlab.m
).
$ cp script_base.sge pi_matlab.sge
Il est nécessaire de charger matlab dans le script SGE, puis de lui indiquer le code à exécuter :
- pi_matlab.sge
module load matlab export HOME=$WORK matlab -nojvm -nodisplay -nosplash -r 'pi_matlab(1000000000);exit'
Pour la gestion des jetons Matlab, il est obligatoire de demander la ressource correspondante lors de la soumission en indiquant le paramètre SGE suivant dans le script pi_matlab.sge :
#$ -l matlab=1
Soumission du job
$ qsub pi_matlab.sge
Soumission d'un calcul parallèle en mémoire partagée (OpenMP)
Cette fois, un seul job SGE utilise plusieurs coeurs.
Pour cela, il est nécessaire de demander un environnement parallèle (-pe
), associé à un nombre de slots.
Préparation du script de soumission:
$ cp script_base.sge pi_omp.sge
Compilation de la version parallèle OpenMP :
$ make pi_omp
L'exécutable est pi_omp
.
Pour une exécution sur un environnement parallèle openmp, il est nécessaire d'ajouter le paramètre suivant dans le script sge pi_omp.sge:
#$ -pe openmp X
Ou X correspond au nombre de coeurs souhaités (maximum 16)
On rajoute également :
$ export OMP_NUM_THREADS=$NSLOTS
Pour forcer l'application à utiliser le nombre de cœurs demandés.
Soumission du job
$ qsub pi_omp.sge
Soumission d'un calcul parallèle en mémoire distribué MPI
Préparation du script de soumission:
$ cp script_base.sge pi_mpi.sge
Pour compiler la version parallèle MPI, il est d'abord nécessaire de charger la librairie MPI:
$ module load mpi/openmpi $ make pi_mpi
L'exécutable est pi_mpi.
Pour une exécution sur environnement parallèle MPI, il faut spécifier l'environnement suivant dans le script pi_mpi.sge:
#$ -pe mpi X
Ou X correspond au nombre de coeurs souhaités, le maximum étant de 32 pour la file formation.q
Il faudra aussi charger le module MPI avant de lancer l'exécutable dans le script:
module load mpi/openmpi mpirun -np $NSLOTS ./pi_mpi
Soumission du job
$ qsub pi_mpi.sge
Lancement de traitements interactifs
La machine prévue pour les traitements interactifs est mesoshared :
$ ssh -XC mesoshared.univ-fcomte.fr
Il est ensuite possible de lancer Matlab directement.
Import et récupération des données sur le mésocentre
Jusqu'à présent, nous avons utilisé des données déjà présentes sur le cluster. Il est bien entendu possible de copier des données extérieures sur le stockage mésocentre et de récupérer des résultats sur vos machines.
Pour cela, il est possible d'utiliser scp
en ligne de commande, ou des outils graphiques comme FileZilla
ou GFTP (de nombreux clients existent).
ma-machine $ scp donnees.txt formationmeso@mesologin1.univ-fcomte.fr:WORK
Documentation
Voici tous les liens nécessaires vers la documentation du mésocentre :
1. Présentation du mésocentre
Présentation : http://mesowiki.univ-fcomte.fr/dokuwiki/doku.php/presentation_mesocentre
Détails des clusters : http://mesowiki.univ-fcomte.fr/dokuwiki/doku.php/moyens_de_calcul
Logiciels installés : http://mesowiki.univ-fcomte.fr/dokuwiki/doku.php/logiciels_installes
2. Accès aux ressources
Connexion au cluster : http://mesowiki.univ-fcomte.fr/dokuwiki/doku.php/connexion_au_cluster
Accès VPN : http://mesowiki.univ-fcomte.fr/dokuwiki/doku.php/acces_vpn
3. Environnement de travail
Environnement de travail: http://mesowiki.univ-fcomte.fr/dokuwiki/doku.php/environnement_travail
Utilisation du système de modules: http://mesowiki.univ-fcomte.fr/dokuwiki/doku.php/modules
4. Soumissions de jobs
Tout ce qu'il faut savoir pour soumettre vos travaux sur le mésocentre : http://mesowiki.univ-fcomte.fr/dokuwiki/doku.php/sge#grid_engine
FAQ complète: http://mesowiki.univ-fcomte.fr/dokuwiki/doku.php/faq