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 login
ssh -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'archive
epidemicVol.zip
vers 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
models
répertoire contenant des modèles GAMAincludes
répertoire contenant des données nécessaires pour la simulation (images, GIS,…)epidemicVol.xml
fichier XML contenant la liste des paramètres de la simulationgama.sge
script 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écuter
finalstep=1000
- Les paramètres d'entrée : nombre initial de
nb_burrow
100, nombre initialnb_vol_per_squareMeter
0.1 - Les paramètres de sortie :
map
un 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_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_ID
pour 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 script
qsub gama2.sge