utilisation des calculateurs de l’ucp · disposer d’un compte unix sur la base ldap du cdc se...
TRANSCRIPT
Utilisation des calculateurs de l’UCPYann Costes, David Domergue
[email protected], [email protected]
Direction de l’Informatique et des Systèmes d’Information
Centre De Calcul
Utilisation des calculateurs de l’UCP – p.
Plusieurs calculateurs
Cluster 64-bits :
41 noeuds, 340 coeurs 64-bits
16/32/96/128 Go de RAM/noeud, total de 2,3 To de RAM
Expace disque global de 6,7 To en NFS, espace disque local de 65 à 530 Go
Réseau Gigabit Ethernet et Infiniband SDR à 10 Gb/s
Pour les travaux nécessitant beaucoup de mémoire vive et/ou sollicitant beaucoup le réseau
Support OpenMP/MPI
Gestion des travaux via SGE
Serveur de soumission osaka.ucp
Pool Condor “domaine étudiants” :
Ressources disponibles des salles de TP sous Linux
14 salles, environ 300 coeurs 64-bits
Entre 512 Mo et 4 Go de RAM / ordi
Espace disque global de 2,5 To
Checkpointing
Puissance théorique importante
Serveur de soumission nasca.ucp
Utilisation des calculateurs de l’UCP – p.
Comment travailler sur les calulateurs ?
Disposer d’un compte UNIX sur la base LDAP du CDC
Se connecter en SSH sur les calculateurs
Transférer ses données
Soumettre des jobs avec Sun Grid Engine (SGE) ouCondor
Utilisation des calculateurs de l’UCP – p.
Comptes utilisateurs
Chaque utilisateur dispose d’un compte personnel :
Un espace de stockage par calculateur
Répertoire d’accueil : /u/[labo]/[login]“bmaillot” membre du laboratoire de géologie :/u/geol/bmaillot
Données accessibles depuis le maître et les noeudsclients
Shell par défaut : bash
Sur le maître, accès en automount aux donnéeshébergées sur le serveur de fichiers usuel (vienne, ...) :/u2/[labo]/[login]
Utilisation des calculateurs de l’UCP – p.
Se connecter aux calculateurs
Accès direct depuis les plages IP des laboratoires :ssh [email protected] utilisant le mot de passe du compte UNIX
Accès via la passerelle ssh depuis l’extérieur :ssh vers la passerelle puis ssh vers un calculateurssh -p 7722 [email protected] [email protected]
Accès via le VPN SSL depuis l’extérieur :https://vpnssl.u-cergy.fr
Transfert de données via scp OU via cp entre /u et /u2
Utilisation des calculateurs de l’UCP – p.
Transférer ses données avec scp
Transfert sécurisé/crypté de fichiers machine ↔ calculateur
Synthaxe :scp [options] source destination
avec source ou destination :[[utilisateur@]nom_machine:]chemin
Exemple : transfert du fichier /home/ycostes/file.dat de samachine perso vers le répertoire data d’osaka :
scp /home/ycostes/file.dat ycostes@osaka:~/data
Option -r : transfert récursif
Attention scp écrase silencieusement les fichiers !
Utilisation des calculateurs de l’UCP – p.
Notions sur les clusters
Quelques définitions :
cluster : ensemble de machines garantissant unerépartition des charges et/ou une haute disponibilité.
noeud : machine appartenant exclusivement à un cluster.
maître : serveur organisant l’exécution de processus surles noeuds composant le cluster.
tâche ou job : ensemble d’instructions exécutées sur unou plusieurs noeuds du cluster.
Utilisation des calculateurs de l’UCP – p.
Fonctions d’un cluster de calcul
Ce que peut faire un cluster de calcul :
Répartir des jobs en fonction de règles pré-établies
Assurer l’exécution différée de tâches
Exécuter une série de jobs séquentiels/parallèles
Ce qu’il ne peut pas faire complètement :
Paralléliser une tâche ou un programme
Accélérer l’exécution d’une tâche séquentielle
Utilisation des calculateurs de l’UCP – p. 10
Architecture du cluster osaka
Net bondingsur 4 cartes réseau
(réseau privé TCP/IP)Switch Gigabit Ethernet
(osaka / noeud01−osaka)Noeud serveur
Internet
Chassis Infiniband 10 Gbps(réseau privé haut débit)
Noeuds de calcul
SwitchEthernet
Utilisation des calculateurs de l’UCP – p. 11
Caractéristiques des noeuds de calcul
Noeud Processeur Nb coeurs Mémoire02 à 05 AMD 2.8 GHz 4 16 Go06 à 08 AMD 3.0 GHz 4 16 Go09 à 10 AMD 3.0 GHz 4 32 Go11 à 26 Intel 3.2 GHz 8 32 Go27 à 31 Intel 2.9 GHz 8 96 Go32 à 34 Intel 3.3 GHz 12 96 Go35 à 41 Intel 2.9 GHz 12 128 Go
Utilisation des calculateurs de l’UCP – p. 12
Gestionnaire de ressources : SGE
SGE : Sun Grid Engine
Partager les ressources
Répartir les jobs dans des files d’attente (queues)
Ordonnancer les jobs en fonction des requêtes utilisateuret de la charge des noeuds
Lancer les jobs éligibles sur un ou plusieurs processeurs
Mettre en attente des jobs restants
Utilisation des calculateurs de l’UCP – p. 13
Files d’attente sur osaka
Queue Type Limites Noeuds
seq_short BI tps CPU < 1h tous
tps réel < 10h
seq_medium BI tps CPU < 1j tous
seq_long BI tps CPU < 6m tous
para_long BP tps CPU < 4m tous
par slot
Type : B=Batch, I=Intéractive, P=Parallèle
Utilisation des calculateurs de l’UCP – p. 14
Démarche pour soumettre un job
Se connecter sur osaka
Préparer son environnement de travail :
Création de répertoires
Compilation
Estimer les ressources nécessaires à l’exécution du job :
Temps CPU
Empreinte Mémoire
Entrée/sortie
Logiciels à jetons
Soumettre le job avec la commande qsub
Options en ligne commande
Script : options SGE + commandes shell
Utilisation des calculateurs de l’UCP – p. 15
Script SGE pour un job séquentiel
## Exemple de script SGE pour un job séquentiel#$ -N Nom_du_job#$ -q seq_short#$ -l mem_free=1G#$ -m base#$ -M [email protected]#$ -j y#$ -r y#$ -cwd./a.out
Utilisation des calculateurs de l’UCP – p. 16
Script SGE pour un job parallèle MPI
## Exemple de script SGE pour un job // MPI sur osaka
#$ -N Nom_du_job
#$ -pe mpi 8
#$ -l mem_free=750M
#$ -m base
#$ -M [email protected]
#$ -j y
#$ -cwd
mpiexec /usr/local/mpich/examples/cpi
Utilisation des calculateurs de l’UCP – p. 17
Script SGE pour un job // OpenMP
## Exemple de script SGE pour un job // OpenMP sur osaka
#$ -N Nom_du_job
#$ -pe openmp 4
#$ -l mem_free=2G
#$ -m base
#$ -M [email protected]
#$ -j y
#$ -cwd
export OMP_NUM_THREADS=$NSLOTS
./pi-openmp
Utilisation des calculateurs de l’UCP – p. 18
Synthaxe et variables des scripts SGE
Synthaxe :Directive SGE : ligne commençant par #$
Commentaires : ligne commençant par # non suivi de $
Toutes les autres lignes sont des commandes shell
Quelques variables :$TMP, $TMPDIR : répertoire temporaire du disque local$JOB_ID : numéro du job$HOSTNAME: noeud d’exécutionman qsub pour la liste des variables
Utilisation des calculateurs de l’UCP – p. 19
Options de scripts SGE-N : Nom du job
-o et -e : Fichiers de sortie standard et d’erreur
-j y|n : Eusion ou non des fichiers de sortie standard et d’erreur
-q : Sélection de la queue
-pe mpi|openmp nslots : Utilisation d’un environnement parallèle
-l : Ressources (man complex )
Mémoire : mem_free=900M
Disque : disk_free=200G
Architecture processeur : cpu_model=’’amd’’ ou cpu_model=’’intel’’
Durée du job : h_cpu=hh:mm:ss
D’éventuels futurs attributs : attribut=valeur
-m : Conditions d’envoi de mail(s)
b / e : début / fin du job
a : job avorté
s : job suspendu / redémarré
-M : Adresse mail
-r y|n : Ré-exécution en cas d’erreur
-cwd : Exécution en batch dans le répertoire de soumission
Utilisation des calculateurs de l’UCP – p. 20
Les commandes de SGE
qstat [-F] [-r] : Lister les jobs soumis
qdel jobID : Supprimer le job
qalter : Modifier un job en attente
qhost [-j] [-q] : Afficher le statut des noeuds, jobsou queues
qacct -j jobID : Tracer l’exécution d’un job terminé
Utilisation des calculateurs de l’UCP – p. 21
Gestion de la mémoire sur osaka
Noeuds d’osaka à 16, 32, 96 ou 128 Go de mémoire vive
Dans le script SGE, nécessité de spécifier la mémoirevive requise par slot
Job en attente ou en échec dans le cas contraire
Faire attention à ne pas surévaluer cette mémoire requise
Exemples :
#$ -l mem_free=500M (500 Mo / slot demandé)
#$ -l mem_free=1G (1 Go / slot demandé)
Utilisation des calculateurs de l’UCP – p. 22
Utilisation de logiciels à jetonsObjectif : s’assurer que des jetons d’un logiciel sont disponibles au lancement d’un jobSGE
Une ressource SGE par logiciel à jeton :
Logiciel à jetons Ressource SGE
MATLAB matlab
"Image_Toolbox" de Matlab image_tbx
"Signal_Toolbox" de Matlab signal_tbx
"Optimization_Toolbox" de Matlab optim_tbx
"Wavelet_Toolbox" de Matlab wavelet_tbx
"GADS_Toolbox" de Matlab gads_tbx
Mathematica mathematica
Exiger la disponibilité des “ressources SGE de type jeton” grâce à l’option -l de qsub :
#$ -l matlab=1,image_tbx=1
Pour les jobs en batch utilisant Matlab, préférer le lancement d’un binaire généré par lecompilateur Matlab (mcc)
Commande lmstat [-v] dans une console pour visualiser l’occupation des jetons
Utilisation des calculateurs de l’UCP – p. 23
Sauvegarde de simulations avec DMTCP
DMTCP=Distributed MultiThreaded CheckPointing
Sauvegarde et restauration de processus séquentiels et parallèles
Evite la perte d’un calcul suite à une maintenance
Sauvegarde :
Commande : dmtcp_checkpoint <executable>
Fichier de checkpoint : ckpt_executable_HostHash-PID-TimeStamp.dmtcp
Sauvegarde automatique toutes les 24 heures, modifiable avec l’option --ckptdir dedmtcp_checkpoint
Ne pas mettre l’option #$ -r y dans le fichier de job SGE
Attention à la taille du fichier de sauvegarde suivant la mémoire utilisée
Restauration :
Commande :dmtcp_restart ckpt_executable_HostHash-PID-TimeStamp .dmtcp
La sauvegarde reprend avec la même périodicité
Applications supportées :
http://dmtcp.sourceforge.net/supportedApps.html
Utilisation des calculateurs de l’UCP – p. 24
Statut du cluster
http://www.u-cergy.fr/sir/article.php3?id_article=1 2
Utilisation des calculateurs de l’UCP – p. 25
Introduction
Objectifs :
Utiliser les ressources disponibles dans les salles de TP tout en laissant l’intégralepriorité aux enseignements
Utiliser ces ressources depuis un serveur de soumission unique
Quelques définitions :
Central Manager : serveur organisant l’exploitation des ressources du Pool Condor.
Pool Condor : ensemble de machines dépendant d’un même Central Manager.
Serveur de soumission : serveur depuis lequel vous pouvez soumettre des jobs au PoolCondor.
Client : machine dédiée à l’exécution des jobs.
Tâche, Job ou Cluster : ensemble d’instructions exécutées sur un ou plusieurs Clients duPool Condor.
Utilisation des calculateurs de l’UCP – p. 27
Architecture du pool
kuzco(central manager)
nasca(serveur de soumission)
machupichu(serveur de checkpoint)
Machines de TP sous Linux
! Power
COL 1 2 3 4 5 6 7 8 1 2 3 6 25 50 8012
100
10
Ether 10/100
! Power
COL 1 2 3 4 5 6 7 8 1 2 3 6 25 50 8012
100
10
Ether 10/100
Utilisation des calculateurs de l’UCP – p. 28
Gestionnaire de ressources Condor
Collecter des informations sur les ressources du Pool
Partager les ressources
Ordonnancer les jobs à partir de différents critères :requêtes utilisateurpropriétés des clients (type de CPU, mémoire,...)
Lancer les jobs éligibles sur les clients libres
Mettre en attente des jobs restants
Utilisation des calculateurs de l’UCP – p. 29
Univers standard
AvantagesRemote IO
Checkpointing
Migration dynamique
Compression à la volée
InconvénientsDisponibilité des sources
Limitations des bibliothèques Condor
Utilisation des calculateurs de l’UCP – p. 30
Univers vanilla
AvantagesTous les binaires
Scripts perl, sh, ruby, ...
InconvénientsLes entrées/sorties
Pas de checkpoint automatique
Disponible que de 20h à 7h et le WE
Utilisation des calculateurs de l’UCP – p. 31
Soumission d’un job Condor
Se connecter sur nasca
Préparer son environnement de travail :
Création de répertoires
Transfert de données, ...
Sélectionner son univers
Estimer les ressources nécessaires à l’exécution du job :
Temps CPU
Empreinte Mémoire
Entrées/sorties
Soumettre le job avec la commande condor_submit
Options en ligne commande
fichier de description : options Condor
Utilisation des calculateurs de l’UCP – p. 32
Compiler avec condor_compile
Disposer des sources
Langages supportés : C/C++/Fortran
Compilateurs supportés : GNU / PGI 6.x
Restrictions :
Modes d’ouverture des fichiers (pas de rw)
Pas de réseau au niveau du job
Pas de threads/processus fils
Avantages :
Remote IO
Checkpointing
Syntaxe :
condor_compile <commande de compilation habituelle>
Exemple : condor_compile gfortran prog.f90
Utilisation des calculateurs de l’UCP – p. 33
Fichier de description : exemple
universe = standardexecutable = hostoutput = host.outerror = host.errlog = host.lognotification = completenotify_user = [email protected] =requirements = (Memory > 128)
queue
Utilisation des calculateurs de l’UCP – p. 34
Fichier de description : synthaxe
Synthaxe :Commentaires : lignes commençant par #
Toutes les autres lignes sont des directives
Quelques directives :universe : univers d’exécution du job
executable : nom du binaire
log : nom du fichier de log
Utilisation des calculateurs de l’UCP – p. 35
Fichier de description : synthaxe
ouput et error : fichiers de sortie
input : fichier d’entrée
notification : condition d’envoi de mailAlways : job checkpointé ou terminé
Complete : job terminé
Error : job terminé anormalement
Never : aucum mail
notify_user : adresse mail de l’utilisateur
arguments : arguments de l’exécutable
requirements : ressources demandées
Utilisation des calculateurs de l’UCP – p. 36
Fichier de description : variables
Prédéfinies :$(Cluster) : clusterid du job$(Process) : numéro de process d’un job
Définies par : variable = ‘‘valeur’’
Exportées dans un classAd par :+variable = ‘‘valeur’’
Reprises de l’environnement : $ENV(variable)
Générateur aléatoire : $RANDOM(<LISTE>)
Utilisation des calculateurs de l’UCP – p. 37
Commandes de Condor
condor_q [-l] [<owner>|<clusterid>] :Lister les jobs soumis
condor_q -analyze <clusterid> :Indiquer les raisons de rejet du job
condor_rm <clusterid> : Supprimer le job
condor_prio : Modifier la priorité de ses jobs
condor_userprio -all : Visualiser la priorité desutilisateurs
Utilisation des calculateurs de l’UCP – p. 38
Bibliothèques et outils disponibles
Bibliothèque / Outil Installé sur
Packages Linux standard Tous
Matlab + toolboxs osaka
Mathematica osaka
Compilateurs PGI et Intel osaka
Compilateurs GNU Tous
Bibliothèques BLAS/LAPACK/ARPACK/FFTW Tous
Bibliothèque ACML osaka
Calcul parallèle MPI (openmpi) osaka
Calcul parallèle OpenMP (PGI/Intel) osaka
JVM osaka
Utilisation des calculateurs de l’UCP – p. 40
Les compilateurs et outils PGI
Compilateur C/C++ : pgcc/pgCC
Compilateur Fortran 77/95/03 : pgf77/pgf95
Compatibles OpenMP
Bibliothèques optimisées (libm/ACML/BLAS/LAPACK)
Profiler : pgprof
Debugger : pgdbg
Utilisation des calculateurs de l’UCP – p. 41
Options de compilation PGI
-tp x64 : Architecture AMD ou Intel 64-bits
-mcmodel=medium : Modèle mémoire pour données >2GB => -Mlarge_arrays : tableaux > 2GB
-O[n] : active un jeu d’optimisations
-fast ou -fastsse : Set d’optimisations génériques
-Mconcur : Parallélisation auto des boucles
-Mvect : Vectoriseur
-Munroll : Dérouleur de boucles
-Minfo=all : Affiche tous les messages du compilateur
-Mprof : Options de profiling (=func / lines )
-mp : Interprétation des instructions OpenMP
Utilisation des calculateurs de l’UCP – p. 42
Profiler PGI
Objectifs : repérer les lignes/fonctionsles plus consommatrices de ressourcesles plus souvent appelées
Compiler le programme avec -Mprof
Exécuter le programme => création de pgprof#.out
Invocation du profileur : pgprof (lit pgprof.out )
Analyse du temps d’exécution (par ligne ou fonction)
Utilisation des calculateurs de l’UCP – p. 43
Debugger PGI
Objectifs : repérer les erreurs du code
Compiler le programme avec -g
Exécuter le programme dans le debugger :pgdbg ./a.out
Analyse de l’exécution du binaire pas à pas, breakpoint,...
Analyse “post mortem” d’un programme :pgdbg core
Utilisation des calculateurs de l’UCP – p. 45
Les compilateurs et outils Intel
Compilateur C : icc
Compilateur C++ : icpc
Compilateur Fortran 77/95/03 : ifort
Compatibles OpenMP
Bibliothèque optimisée IMKL => BLAS / LAPACK / FFT /SparseSolver, existe en version multithreads
Debugger : idb / idbc
Utilisation des calculateurs de l’UCP – p. 47
Options de compilation Intel
-O[n] : active un jeu d’optimisations
-mcmodel=large : modèle mémoire pour données >2GB
-check bounds (Fortran) : vérification des bornes detableaux
-ipo : optimisation interprocédurale
-debug all : fournit des informations complètes dedebuggage
-parallel : parallélise automatiquement des boucles
-openmp : interpréte des instructions OpenMP
Utilisation des calculateurs de l’UCP – p. 48
Debugger Intel idb / idbc
Objectifs : repérer les erreurs du code
Compiler le programme avec -g
Supporte les compilateurs Intel et gcc / g++
Debogger un éxecutable : idb program
Debogger un éxecutable et un fichier core:idb program core
Debogger un processus : idb -pid <pid> program
Commande idb backtrace full : liste les appels avecle contenu des variables
Utilisation des calculateurs de l’UCP – p. 49
Projets 2012
Mise à jour du cluster osaka (Linux CentOS 6)
Augmentation de l’espace de stockage du cluster osaka (45 To)
Ajout d’un noeud GPU au cluster osaka
Extension du pool Condor
Formation au parallélisme avec OpenMP
Utilisation des calculateurs de l’UCP – p. 51
Références
Documentation SGE :Sur osaka:/usr/sge/doc/N1-Grid-Engine-6-User-s-Guide .pdf
Documentation Condor :http://www.cs.wisc.edu/condor/manual
Documentation PGI :Sur osaka : dans /usr/local/pgi/linux86-64/current/doc
Documentation compilateurs Intel : Sur osaka dans/usr/local/intel/Compiler/current/Documentation/en_ US
Numerical Recipes in C: The Art of Scientific Computing - W. H. Press, B.
P. Flannery, S. A. Teukolsky, W. T. Vetterling - Cambridge University Press
Utilisation des calculateurs de l’UCP – p. 52
Contacts, Informations
Demande d’assistance :ESUP-HelpDesk (accessible depuis l’ENT)
Téléphone assistance informatique : 2323
Téléphones CDC : 69-56 ou 70-69
Site web : http://www.u-cergy.fr/sir
Mailing-list calcul de l’UCP ([email protected]) :https://pegase.ucp/wws/info/calcul
Utilisation des calculateurs de l’UCP – p. 53