Formation pour l'introduction à l'utilisation des moyens de calcul

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 :-)

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

L'objectif est d'utiliser SGE pour soumettre 4 type de calculs

  • 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>

Pour modifier les fichiers, utiliser les éditeurs de texte suivants :

  • nano
  • vim
  • emacs
  • gedit

Copie des fichiers d'exemple (calcul de PI)

$ cp -a $HOME/TP .

Placement dans le répertoire TP

$ cd TP

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

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

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

Le calcul se fait en parallèle sur plusieurs cœurs de la même machine.

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

Le calcul se fait en parallèle sur plusieurs machines. Nous avons besoin de la bibliothèque MPI pour les communications.

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

Si la bibliothèque MPI n'est pas chargé, l'exécution échouera

Soumission du job

$ qsub pi_mpi.sge

La machine prévue pour les traitements interactifs est mesoshared :

$ ssh -XC mesoshared.univ-fcomte.fr

Il est ensuite possible de lancer Matlab directement.

Attention, aucune soumission SGE n'est possible depuis cette machine. Celle-ci est réservée aux tests, et à la préparation des données ou l'exploitation des résultats.

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

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