|
back
Utilisation de la machine de développement Starlight
Présentation :
La machine Starlight est une machine exclusivement dédiée au développement, au débuggage et à l'optimisation
des codes de calculs. Un certain nombre de logiciels spécifiques pouvant vous aider dans ces taches sont installés sur cette
machine, dont principalement :
- TotalView +
ReplayEngine : un débuggeur graphique permettant de
sauvegarder tous les calculs intermédiaires et de rejouer une
simulation pour débugger votre code.
- Vtune : un
logiciel de profilage de code permettant d'analyser les performances
de votre code et de déterminer les fonctions sur lesquelles
doivent porter les efforts d'optimisation.
Cette machine est constituée d'une machine frontale et de 4 noeuds de calcul :
- compute-0-0 et compute-0-1 : biprocesseur quad-coeur Intel Xeon Nehalem, 24 Go RAM
- compute-0-2 et compute-0-3 : biprocesseur quad-coeur AMD Opteron Shanghai, 16 Go RAM
Le répertoire $HOME de chaque utilisateur est visible depuis toute les machines.
La compilation s'effectue sur la machine frontale. L'exécution des codes s'effectue grâce au gestionnaire de queue et à
l'ordonnanceur Torque / Maui (même système que sur la
grappe du SIO).
Vous pouvez utiliser Totalview sur la machine frontale. Le logiciel Vtune, ainsi
que les autres outils Intel, doivent quant à eux être utilisés sur un noeud Intel, compute-0-0, sur lequel ils ont été installés.
Connexion :
La machine Starlight utilise l'annuaire LDAP de l'Observatoire pour
l'authentification des utilisateurs. Tous les membres du laboratoire
peuvent donc se connecter sur Starlight et bénéficier
d'un compte sans avoir besoin d'en faire la demande.
Connexion avec transfert de l'affichage :
ssh -X login@starlight
Lors de la première connexion, il vous sera demandé de créer
une clé Systéme et réseau. Cette clé est utilisée pour les
connexions entre les différents noeuds de Starlight. Pour plus
de confort, en particulier si vous travaillez sur des applications
MPI, vous pouvez laisser une passphrase vide.
Compilation :
La machine Starlight dispose des compilateurs Fortran, C et C++ de GNU et Intel.
Les versions installées sont la version 4.1.2 des compilateurs GNU et la version 11.1 des
compilateurs Intel.
Pour faire appel à ces compilateurs, vous devez utiliser les commandes :
|
Langage
|
GNU
|
Intel
|
|
Fortran
|
gfortran
|
ifort
|
|
C
|
gcc
|
icc
|
|
C++
|
g++
|
icpc
|
Pour plus d'informations sur les compilateurs et les bibliothèques installées sur Starlight, vous pouvez consulter cette page.
Soumission de jobs :
L'exécution des jobs se déroule essentiellement sur les noeuds de calcul
par l'intermédiaire de Torque / Maui. Deux types d'exécutions
sont possibles :
- En batch :
la demande d'exécution est faite à l'aide d'un script
qui décrit les ressources nécessaires et les commandes
à exécuter une fois ces ressources disponibles. Les
sorties sont redirigées vers des fichiers
nomdujob.enumérodujob (sortie erreur) et nomdujob.onumérodujob
(sortie standard).
- En interactif : l'utilisateur demande des ressources, et une fois ces
ressources disponibles, est connecté automatiquement sur la
machine pouvant les lui offrir. Une fois connecté, il peut
exécuter son code ou utiliser un outil particulier.
Les noeuds sont divisés en deux groupes, qui sont accessibles par deux queues
différentes :
- la queue « amd » pour les noeuds équipés
de processeurs AMD
- la queue « intel » pour les noeuds équipés
de processeurs Intel
Une queue default contient tous les noeuds, quelle que soit leur architecture.
Soumission d'un job de type batch
Exemple d'un script essai.pbs pour une soumission de type batch dans lequel l'exécutable essai situé dans mon répertoire $HOME/tmp est lancé :
#!/bin/sh
#PBS -S /bin/sh
#PBS -N essai
#PBS -q intel
#PBS -l nodes=1:ppn=1,mem=100mb,walltime=01:05:30
#PBS -r n
#PBS -M fabrice.roy@obspm.fr
#PBS -m abe
cd $HOME/tmp
./essai
Signification des directives #PBS :
#PBS -S /bin/sh
shell à utiliser
#PBS -N essai
nom du job
#PBS -q intel
nom de la queue sur laquelle le job doit être exécuté,
intel ou amd pour nous (si cette option n'est pas spécifiée,
l'exécution sera lancée sur la queue default)
#PBS -l nodes=1:ppn=1 ,mem=100mb,walltime=01:05:30
ressources demandées, par exemple, ici :
nodes=1 : 1 noeud de calcul
ppn=1 : 1 coeur de calcul sur ce noeud
mem=100mb : 100 Mo de mémoire vive en tout (somme pour
l'ensemble des processus/threads sur l'ensemble des noeuds)
kb = ko
mb = Mo
gb = Go
walltime=01:05:30 : 1h05min30s de temps d'exécution total
#PBS -r n
le job ne sera pas relancé automatiquement en cas d'échec
(ne pas changer cette option)
#PBS -M fabrice.roy@obspm.fr
adresse email à laquelle le système envoie les
messages concernant le job (mettre votre adresse email)
#PBS -m abe
option concernant les envois de message :
a : envoyer un message en cas d'arrêt du job avant la fin
b : envoyer un message au début de l'exécution du job
(quand le job sort de la file d'attente)
e : envoyer un message lorsque le job se termine normalement.
Soumission du job :
qsub essai.pbs
Pour voir l'état des files d'attente :
qstat
Exemple de sortie de qstat :
| Job id |
Name |
User |
Time Use |
S |
Queue |
| ------------------------- |
---------------- |
--------------- |
-------------- |
- |
----- |
| 109.starlight |
essai |
roy |
0 |
R |
intel |
Signification des statuts S les plus courants :
R : en cours d'exécution
Q : en queue
E : en fin d'exécution
Quelques options de qstat :
qstat -a : affiche tous les jobs
qstat -n : affiche le noms des machines sur lesquelles l'exécution
a lieu pour les jobs en cours d'exécution
qstat -q : informations par queues
Pour connaître l'état d'un job particulier :
checkjob jobid
Pour tuer un job en cours d'exécution ou retirer un job de
la queue :
qdel jobid
Soumission d'un job de type interactif
La soumission de job interactif se fait simplement à l'aide de
la commande qsub avec l'option -I, de l'option -l servant à spécifier
les ressources demandées et éventuellement de l'option
-q pour spécifier la queue souhaitée (intel ou amd).
Par exemple,
qsub -I -l nodes=1:ppn=1,mem=100mb,walltime=01:05:30 -q amd
sert à réserver 1 noeud de type AMD, 1 coeur et 100 Mo sur ce noeud, pendant 1h05min30s, pour un job interactif.
Monitoring de la machine Starlight
L'outil Ganglia permet de connaître l'occupation des noeuds de
la machine Starlight et de surveiller son état. Cet outil est
accessible via votre navigateur web, à l'adresse http://starlight/ganglia
Utilisation de TotalView + ReplayEngine
Le débuggeur graphique TotalView se lance avec la
commande totalview.
L'interface graphique apparaît alors et vous
permet de choisir le programme que vous souhaitez débugger et
de sélectionner l'option ReplayEngine si vous le désirez.
Le programme à débugger doit avoir été
compilé avec l'option -g.
(Cliquez sur les images pour les agrandir.)
Une fois l'exécutable à débugger
choisi, une fenêtre contenant les sources de votre exécutable
apparaît. Vous pouvez alors placer des points d'arrêt, et
lancer l'exécution du code. Vous pouvez mettre l'exécution
en pause à tout moment, contrôler le contenu de chaque
variable, visualiser le contenu des tableaux sous forme graphique, etc...
Pour plus d'informations concernant l'utilisation de
TotalView, consultez cette page.
Utilisation de Vtune
Vtune ne peut être utilisé que sur l'un des
noeuds de calcul équipé de processeurs Intel. Le
logiciel est installé sur le noeud compute-0-0 seulement. Vous
devez donc vous connecter sur compute-0-0 pour utiliser ce logiciel.
L'application se lance avec la commande vtlec.
Une fenêtre vous invite alors à choisir votre
espace de travail (vous pouvez laisser le répertoire proposé
par défaut), puis l'interface graphique de Vtune apparaît.
Lors d'une première utilisation, il est conseillé
d'utiliser l'assistant First Use qui se trouve dans l'onglet Start à
la gauche de la fenêtre. Cet assistant vous permettra de faire
une première analyse de votre code.
Plus d'informations concernant l'utilisation de Vtune
vous seront communiquées prochainement.
Trois documentations sont disponibles pour vous aider à prendre le logiciel en main :
Utilisation de Starlight pour le débuggage et
l'optimisation d'applications parallèles
Pour tout ce qui concerne les applications parallèles,
merci de prendre contact avec Fabrice Roy. Une documentation sur ce
sujet vous sera proposée prochainement.
Pour toute information complémentaire, vous
pouvez contacter Stéphane Méné
ou Fabrice Roy.
|