TP atelier SMAsHPC
L'objectif de ce TP est de lancer des simulations GAMA, le modèle épidémie campagnol, en mode batch sur le mésocentre.
Grid Engine
Ordonnanceur et gestionnaire de ressources.
En pratique :
- L’utilisateur soumet un job avec des paramètres spécifiques
- Le système de batch (GE) lancera alors le job dès que les ressources requises par l’utilisateur seront disponibles
Connexion aux mésocentre
- Se connecter au nœud de loginssh -XC formationmeso@mesologin1.univ-fcomte.fr 
- Se placer dans le répertoire de travail[formationmeso@mesologin1 ~]$ cdw 
- Créer un répertoire personnel unique en utilisant votre nom de famille, par exemple :[formationmeso@mesologin1 ~]$ mkdir kmazouzi 
- Copier l'archiveepidemicVol.zipvers le répertoire nouvellement créé[formationmeso@mesologin1 ~]$ cp epidemicVol.zip kmazouzi 
- Se placer dans le répertoire créé[formationmeso@mesologin1 ~]$ cd kmazouzi 
- Extraire l'archive[formationmeso@mesologin1 ~]$ unzip epidemicVol.zip 
- Le répertoire devrait contenir[formationmeso@mesologin1 ~]$ ls gama.sge epidemicVol.xml includes models workspace 
- modelsrépertoire contenant des modèles GAMA
- includesrépertoire contenant des données nécessaires pour la simulation (images, GIS,…)
- epidemicVol.xmlfichier XML contenant la liste des paramètres de la simulation
- gama.sgescript SGE pour lancer la simulation
Préparer les données de simulation
GAMA permet de lancer des simulations en ligne de commande. Le programme s'appelle gama-headless.sh. Il prend en paramètres :
- Un fichier XML qui contenant les paramètres d'entrée et de sortie de la simulation
- Un nom d'un répertoire où stocker les résultats
epidemicVol.xml
Ouvrir le fichier en utilisant votre éditeur de texte préféré (gedit,vim,emacs,nano)
- epidemicVol.xml
- <?xml version="1.0" encoding="UTF-8"?> <Simulation id="2" sourcePath="./models/epidemicVols.gaml" finalstep="100" experiment="epidemicVols"> <Parameters> <Parameter name="nb_burrow" type="INT" value="100" /> <Parameter name="nb_vol_per_squareMeter" type="FLOAT" value="0.1" /> </Parameters> <Outputs> <Output id="1" name="map" framerate="5" /> <Output id="2" name="number of killed vols per fox" framerate="5" /> <Output id="3" name="number of scat par fox per day" framerate="5" /> <Output id="4" name="number of infected fox" framerate="5" /> <Output id="5" name="number of scats" framerate="5" /> </Outputs> </Simulation> 
Le fichier décrit une simulation epidemicVols, on trouve :
- Le chemin relatif vers le modèle GAMA :./models/epidemicVols.gaml
- Le nombre de pas de temps à exécuterfinalstep=1000
- Les paramètres d'entrée : nombre initial denb_burrow100, nombre initialnb_vol_per_squareMeter0.1
- Les paramètres de sortie :mapun snapshot du graphique chaque 5 fps et d'autres valeurs comme par exemplenumber of scats
Lancer la simulation
Le fichier gama.sge est le script SGE, il contient un ensemble de paramètres SGE et la commande pour lancer GAMA en mode ligne de commande.
- gama.sge
- #!/bin/bash ####### DEBUT OPTIONS SGE ############# ### on choisit la file d'attente #$ -q formation.q ### On demande 6 G par coeur #$ -l h_vmem=6G ### Nom du job, visible dans qstat #$ -N epidemic_votreNom ### Fichier où stocker la sortie standard #$ -o $JOB_NAME.$JOB_ID.out ###### FIN OPTIONS SGE ############## ## On charge Gama module tools/gama/1.6.1 ## On lance Gama en mode batch gama-headless.sh epidemicVol.xml ${JOB_NAME}_${JOB_ID} 
 {JOB_ID} comme répertoire de sortie, avec :
{JOB_ID} comme répertoire de sortie, avec : $JOB_NAME : variable d'environnement SGE, elle contient le nom attribué au job :
epidemic_kmazouzi$JOB_ID : variable d'environnement SGE, elle contient un identificateur unique
On peut donc s'attendre à epidemic_votreNom_74099 comme répertoire de sortie.
Soumettre le calcul avec SGE :
[formationmeso@mesologin1 kmazouzi]$ qsub gama.sge
Vérifier l'état du calcul :
$qstat job-ID name user state submit/start at queue slots ----------------------------------------------------------------------------- 74099 epidemic formationmes r 07/07/2014 21:32:18 all.q@node1-15 1
Explorer les résultats dans le répertoire de sortie.
Le répertoire de sortie contient les fichiers résultats :
- simulation-outputs0.xml, fichier contenant les paramètres de sortie
- snapshot, répertoire contenant les images de la simulation pour chaque pas temps.
animate ou convert (logiciel ImageMagick)
On souhaite, par exemple, récupérer le répertoire : epidemic_123456
1. En utilisant un outils graphique : filezella, …
2. En ligne de commande, ouvrir un terminal sur votre machine local :
$ scp -r formationmeso@mesologin1.univ-fcomte.fr:WORK/<votreNom>/<epidemic_123456 .
Explorer plusieurs modèles
Solution 1 : lancer autant de scripts que de simulations ! et si on dispose de 1000 simulation ? 
Solution 2 : utiliser la notion de tableaux de tâche SGE.
Tableaux de tâche : technique SGE permettant de lancer plusieurs simulation en utilisant un seul script.
prérequis : Il faut préparer les paramètres pour les différentes simulations : avoir plusieurs fichier XML
Exemple : lancer 3 simulations, dans notre exemple il nous faut préparer 3 fichiers :epidemicVol1.xml,  epidemicVol2.xml et epidemicVol3.xml
[formationmeso@mesologin1 kmazouzi]$ cp epidemicVol.xml epidemicVol1.xml [formationmeso@mesologin1 kmazouzi]$ cp epidemicVol.xml epidemicVol2.xml [formationmeso@mesologin1 kmazouzi]$ cp epidemicVol.xml epidemicVol3.xml
Méthodes :
- rajouter, dans le script SGE, l'option suivante#$ -t 1-3: lancer un tableau de 3 tâches par exemple
- utiliser la variable d'environnement$SGE_TASK_IDpour identifier les tâches et le répertoire de sortie
- modifier le script SGE pour lancer GAMA comme suite :gama-headless.sh epidemicVol${SGE_TASK_ID}.xml ${JOB_NAME}_${JOB_ID}_task${SGE_TASK_ID} 
- enfin, lancer le scriptqsub gama2.sge 





