Utilisation des calculateurs de l UCP Yann Costes, David Domergue yann.costes@u-cergy.fr, david.domergue@u-cergy.fr Direction de l Informatique et des Systèmes d Information Centre De Calcul Utilisation des calculateurs de l UCP p.
Introduction 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) ou Condor 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 noeuds clients Shell par défaut : bash Sur le maître, accès en automount aux données hé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 ycostes@osaka.ucp en 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 calculateur ssh -p 7722 ycostes@hestia.u-cergy.fr puis ssh ycostes@osaka.ucp 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 sa machine 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.
Le cluster osaka Utilisation des calculateurs de l UCP p.
Notions sur les clusters Quelques définitions : cluster : ensemble de machines garantissant une répartition des charges et/ou une haute disponibilité. noeud : machine appartenant exclusivement à un cluster. maître : serveur organisant l exécution de processus sur les noeuds composant le cluster. tâche ou job : ensemble d instructions exécutées sur un ou 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. 1
Architecture du cluster osaka Switch Gigabit Ethernet (réseau privé TCP/IP) Ethernet Switch Net bonding sur 4 cartes réseau Noeud serveur (osaka / noeud01 osaka) Noeuds de calcul Chassis Infiniband 10 Gbps (réseau privé haut débit) Internet Utilisation des calculateurs de l UCP p. 1
Caractéristiques des noeuds de calcul Noeud Processeur Nb coeurs Mémoire 02 à 05 AMD 2.8 GHz 4 16 Go 06 à 08 AMD 3.0 GHz 4 16 Go 09 à 10 AMD 3.0 GHz 4 32 Go 11 à 26 Intel 3.2 GHz 8 32 Go 27 à 31 Intel 2.9 GHz 8 96 Go 32 à 34 Intel 3.3 GHz 12 96 Go 35 à 41 Intel 2.9 GHz 12 128 Go Utilisation des calculateurs de l UCP p. 1
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 utilisateur et 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. 1
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. 1
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. 1
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 prenom.nom@u-cergy.fr #$ -j y #$ -r y #$ -cwd./a.out Utilisation des calculateurs de l UCP p. 1
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 prenom.nom@u-cergy.fr #$ -j y #$ -cwd mpiexec /usr/local/mpich/examples/cpi Utilisation des calculateurs de l UCP p. 1
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 prenom.nom@u-cergy.fr #$ -j y #$ -cwd export OMP_NUM_THREADS=$NSLOTS./pi-openmp Utilisation des calculateurs de l UCP p. 1
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écution man qsub pour la liste des variables Utilisation des calculateurs de l UCP p. 1
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. 2
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, jobs ou queues qacct -j jobid : Tracer l exécution d un job terminé Utilisation des calculateurs de l UCP p. 2
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émoire vive 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. 2
Utilisation de logiciels à jetons Objectif : s assurer que des jetons d un logiciel sont disponibles au lancement d un job SGE Une ressource SGE par logiciel à jeton : Logiciel à jetons MATLAB "Image_Toolbox" de Matlab "Signal_Toolbox" de Matlab "Optimization_Toolbox" de Matlab "Wavelet_Toolbox" de Matlab "GADS_Toolbox" de Matlab Mathematica Ressource SGE matlab image_tbx signal_tbx optim_tbx wavelet_tbx gads_tbx 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 le compilateur Matlab (mcc) Commande lmstat [-v] dans une console pour visualiser l occupation des jetons Utilisation des calculateurs de l UCP p. 2
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 de dmtcp_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. 2
Statut du cluster http://www.u-cergy.fr/sir/article.php3?id_article=12 Utilisation des calculateurs de l UCP p. 2
Le pool Condor domaine étudiants Utilisation des calculateurs de l UCP p. 2
Introduction Objectifs : Utiliser les ressources disponibles dans les salles de TP tout en laissant l intégrale priorité 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 Pool Condor. 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 du Pool Condor. Utilisation des calculateurs de l UCP p. 2
Ether 10/100! Power 100 COL 1 2 3 4 5 6 7 8 1 2 3 6 12 25 50 80 10 Ether 10/100 100 COL 1 2 3 4 5 6 7 8 1 2 3 6 12 25 50 80 10 Architecture du pool Machines de TP sous Linux kuzco (central manager) nasca (serveur de soumission)! Power machupichu (serveur de checkpoint) Utilisation des calculateurs de l UCP p. 2
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 utilisateur proprié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. 2
Univers standard Avantages Remote IO Checkpointing Migration dynamique Compression à la volée Inconvénients Disponibilité des sources Limitations des bibliothèques Condor Utilisation des calculateurs de l UCP p. 3
Univers vanilla Avantages Tous les binaires Scripts perl, sh, ruby,... Inconvénients Les entrées/sorties Pas de checkpoint automatique Disponible que de 20h à 7h et le WE Utilisation des calculateurs de l UCP p. 3
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. 3
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. 3
Fichier de description : exemple universe = standard executable = host output = host.out error = host.err log = host.log notification = complete notify_user = user@u-cergy.fr arguments = requirements = (Memory > 128) queue Utilisation des calculateurs de l UCP p. 3
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. 3
Fichier de description : synthaxe ouput et error : fichiers de sortie input : fichier d entrée notification : condition d envoi de mail Always : 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. 3
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. 3
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é des utilisateurs Utilisation des calculateurs de l UCP p. 3
Logiciels disponibles sur les calculateurs Utilisation des calculateurs de l UCP p. 3
Bibliothèques et outils disponibles Bibliothèque / Outil Packages Linux standard Matlab + toolboxs Mathematica Compilateurs PGI et Intel Compilateurs GNU Bibliothèques BLAS/LAPACK/ARPACK/FFTW Bibliothèque ACML Calcul parallèle MPI (openmpi) Calcul parallèle OpenMP (PGI/Intel) JVM Installé sur Tous osaka osaka osaka Tous Tous osaka osaka osaka osaka Utilisation des calculateurs de l UCP p. 4
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. 4
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. 4
Profiler PGI Objectifs : repérer les lignes/fonctions les plus consommatrices de ressources les 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. 4
Profiler PGI Utilisation des calculateurs de l UCP p. 4
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. 4
Debugger PGI Utilisation des calculateurs de l UCP p. 4
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. 4
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 de tableaux -ipo : optimisation interprocédurale -debug all : fournit des informations complètes de debuggage -parallel : parallélise automatiquement des boucles -openmp : interpréte des instructions OpenMP Utilisation des calculateurs de l UCP p. 4
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 avec le contenu des variables Utilisation des calculateurs de l UCP p. 4
Projets Utilisation des calculateurs de l UCP p. 5
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. 5
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. 5
Contacts, Informations Demande d assistance : ESUP-HelpDesk (accessible depuis l ENT) informatique@ml.u-cergy.fr 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 (calcul@ml.u-cergy.fr) : https://pegase.ucp/wws/info/calcul Utilisation des calculateurs de l UCP p. 5