53
Utilisation des calculateurs de l’UCP Yann 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.

Utilisation des calculateurs de l’UCP · 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

  • Upload
    ngocong

  • View
    215

  • Download
    0

Embed Size (px)

Citation preview

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.

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) 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.

Le cluster osaka

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

Le pool Condor “domaine étudiants”

Utilisation des calculateurs de l’UCP – p. 26

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

Logiciels disponibles sur les calculateurs

Utilisation des calculateurs de l’UCP – p. 39

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

Profiler PGI

Utilisation des calculateurs de l’UCP – p. 44

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

Debugger PGI

Utilisation des calculateurs de l’UCP – p. 46

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

Utilisation des calculateurs de l’UCP – p. 50

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)

[email protected]

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