1 / 104

Environnement SGI Origin 2000 v 3.0 Guy Moebs Guy.Moebs@crihan.fr

Environnement SGI Origin 2000 v 3.0 Guy Moebs Guy.Moebs@crihan.fr. Plan de la formation. 1. Environnement de travail 2. Outils d’aide au développement 3. Optimisation scalaire 4. Parallélisme. 1- Environnement de travail. A. Présentation matérielle B. Présentation logicielle

nita
Télécharger la présentation

Environnement SGI Origin 2000 v 3.0 Guy Moebs Guy.Moebs@crihan.fr

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Environnement SGI Origin 2000v 3.0Guy MoebsGuy.Moebs@crihan.fr

  2. Plan de la formation • 1. Environnement de travail • 2. Outils d’aide au développement • 3. Optimisation scalaire • 4. Parallélisme

  3. 1- Environnement de travail • A. Présentation matérielle • B. Présentation logicielle • C. Arborescence • D. Soumission batch

  4. 1- A. Architecture matérielle O2000 • Architecture O2000 (64 processeurs) :

  5. R 1- A. Architecture matérielle O2000 • Sommet du cube constitué : • un router • deux noeuds • Router connecté à 4 routers voisins • Noeud composé : • 2 processeurs R10000 • un commutateur HUB • une mémoire partagée (1 Go)

  6. 1- A. Architecture matérielle O2000 • Le HUB : • est connecté aux deux processeurs du noeud, • sert d'interface entrées/sorties et et de connexion avec le reste des processeurs de la machine. • La mémoire : • est partagée entre les processeurs du noeud, • est adressable par l'ensemble des processeurs de la machine.

  7. 1- A. Architecture matérielle O2000 • Processeurs type R10000 (MIPS IV) : • une fréquence horloge de 195 MHz, • une puissance crête/processeur de 390 Mflops, • un transfert crête de données vers le cache secondaire de 2.08 gbits/s, • deux espaces cache : • un cache primaire d'instructions de 32 Ko et de données de 32Ko, • un cache secondaire de 4 Mo. • Mémoire totale : 32 Go.

  8. 1- A. Architecture matérielle O2000 • Organisation de la mémoire

  9. 1- A. Architecture matérielle O2000 • Temps d’accès mémoire

  10. 1- A. Architecture matérielle O2000 • Volume de stockage disque : 270 Go • Configuration avec robot d'archivage et de sauvegarde de marque ADIC-GRAU AML/S 1000 • (Technologie DLT 7000) • Capacité de 10.5 Téra Octets • Accès à illiac8 via une interface ATM OC-3 (155Mbits/s)

  11. 1- B. Présentation logicielle • 1. Compilateurs • 2. Modules • 3. Débogueurs - éditeurs - logiciels de graphisme • 4. Bibliothèques scientifiques • 5. Outils de développement • 6. Parallélisation

  12. 1- B. Présentation logicielle 1. Compilateurs Compilateurs SGI : • Fortran 77 : f77 • Fortran 90 : f90 • C : cc • C++ : CC Adressage des données : -n32 ou -64 selon l’espace d’adressage (< ou > 2Go) Compilateur HPF (Portland Group) : • HPF (High Performance Fortran) : pghpf • langage data parallel basé sur le F90

  13. 1- B. Présentation logicielle 2. Modules Module MPT (Message Passing Toolkit) : Environnement d’utilisation de MPI, SHMEM, PVM => chemins, variables d’environnement, librairies, exécutables Installation statique pour les versions >= 1.4 Installation par module pour les versions <= 1.3 => commande « module » (module help) : module avail : ensemble des modules présents module list : ensemble des modules déjà activés module load mpt : activation du module mpt module unload mpt : désactivation du module mpt

  14. 1- B. Présentation logicielle 3. Débogueurs Débogueurs : • dbx, • cvd (outil SGI). Éditeurs : • vi, • emacs, • xedit, • nedit. Logiciels de graphisme : • xmgr, • gnuplot.

  15. 1- B. Présentation logicielle 4. Bibliothèques Bibliothèque SCSL (optimisées par SGI) : • BLAS (portabilité complète), • LAPACK (portabilité complète), • FFT (portabilité restreinte !). • en INTEGER*4 : link avec –lscs ou -lscs_mp (version parallèle) • en INTEGER*8 : link avec –lscs_i8 ou –lscs_i8_mp (version parallèle) • Mathématique, => link avec -lfastm (au lieu de -lm par défaut) Bibliothèques domaine public : • SCALAPACK, => link avec /local/SCALAPACK/libscalapack[64/n32].a • BLACS, => link avec /local/BLACS/libmpiblacs[64/n32].a

  16. 1- B. Présentation logicielle 5. Outils • Perfex : comptage d’évèments matériels • Speedshop : • ssrun : effectue les mesures, • prof : analyse des échantillonnages. • WorkShop : • Build Manager (cvbuild/cvmake) : aide à la compilation, • Static Analyser (cvstatic) : aide à l’analyse de programmes, • Debugger (cvd) : débogueur, • Performance Analyser (cvperf) : profilage de programmes, • Parallel Analyser (cvpav) : aide à la parallélisation. • Documentation : • manpage et insight

  17. 1- B. Présentation logicielle 6. Parallélisation • Parallélisme SMP (Shared Memory Processing) : insertion de directives de compilation : OpenMP • Parallélisme MPP (Massively Parallel Processing) : modules mpt : MPI, SHMEM, PVM version constructeur • Parallélisme de données (data parallelism) : HPF (Portland Group)

  18. 1- C. Arborescence • Compte informatique utilisateur :

  19. 1- C. Arborescence • Sauvegarde des $HOME_DIR toutes les nuits • Migration des $HOME_SAVE à l’aide de DMF : dmls, dmget, dmput • $HOME_WORK non sauvegardés • Quota disques : quota -v • Assistance : http://www.crihan.fr/assistance/tickets-illiac8.html • Consommation CPU : http://www.crihan.fr/CRIHAN/calcul/compta.html • Documentation utilisateur : http://www.crihan.fr/CRIHAN/calcul/par/doc/Illiac8/index.html

  20. 1- D. Environnement batch Mode batch = traitement des commandes par lots • préparation d’un ensemble de commandes dans un fichier (script), un “job” • soumission à NQE (Network Queueing Environment) (cqsub) : => Recherche d’une queue batch éligible selon les ressources demandées => cqstatl -a => transmis à NQS si les ressources sont disponibles => mis en attente, status “pending” • NQS (Network Queueing System) vérifie les limites des queues batch => qstat -a => running (Rxx) => queueing (Qyy) -> signification de yy : manpage de qstat • Priorité d’exécution des "jobs" en fonction des ressources demandées.

  21. 1- D. Environnement batch • Utilisation du batch : • Rajouter dans votre home le fichier .nqshosts : illiac8.crihan.fr • Création du script • Paramètres CQSUB : • -lM : fixe la mémoire maximale de la requête => somme des mémoires résidentes (colonne RES de top) • -lm : fixe la mémoire maximale par processus => mémoire virtuelle maximale (colonne SIZE de top) • -lT : fixe le temps CPU maximal de la requête • -lt : fixe le temps CPU maximal par processus • -l mpp_p=nb_procs : fixe le nombre maximal de processeurs utilisés !!! MPI, OpenMP, PVM nécessitent “nb_procs +1” comme arguments pour “-l mpp_p”

  22. 1- D. Environnement batch #QSUB -r omp  nom du job soumis #QSUB -u gm  login de l’utilisateur #QSUB -x  passage des variables d’environnement #QSUB -eo  fusion fichier de log et fichier d’erreur #QSUB -lM 1Go  mémoire maximale de la requête #QSUB -lm 600Mo  mémoire maximale par processus #QSUB -lT 1300  temps CPU maximal de la requête #QSUB -lt 300  temps CPU maximal par processus #QSUB -me  envoi d’un mail à la fin du job #QSUB -mugm@crihan.fr adresse e-mail pour l’envoi #QSUB -l mpp_p=5  nombre de processus maximal du job setenv OMP_NUM_THREADS 4 echo "Lancement MASTER” cd /crihan/gm/OMP timex ./a.out

  23. 1- D. Environnement batch • Lancement : cqsub run_batch • Contrôle de l’exécution : cqstatl -a au niveau de NQE qstat -a au niveau de NQS • Destruction : cqdel -k identifier (txxxxx ou yyyyy.illiac8.crihan.fr)

  24. 1- D. Environnement batch GM-illiac8% qstat -a ---------------------------------- NQS 3.3.0.15 BATCH REQUEST SUMMARY ---------------------------------- IDENTIFIER NAME USER LOCATION/QUEUE JID PRTY REQMEM REQTIM ST ------------- ------- -------- --------------------- ---- ---- ------ ------ --- 432.illiac8.crihan.fr V_N32 gm mem64@illiac8 635267 20 4 14999 R05 429.illiac8.crihan.fr V_64 gm big64@illiac8 48 10000 45000 Qgm GM-illiac8% cqstatl -a ----------------------------- NQE 3.3.0.15 Database Task Summary ----------------------------- IDENTIFIER NAME SYSTEM-OWNER OWNER LOCATION ST -------------------- ------- ---------------- -------- ------------------- ---- t411 (429.illiac8.c) V_64 lws.illiac8 gm nqs@illiac8 NSubm t414 (432.illiac8.c) V_N32 monitor.main gm NQE Database NComp

  25. 2- Outils d’aide au développement • A. Static Analyser : cvstatic • B. Build Manager : cvbuild / cvmake • C. Debugger : cvd • D. Performance Analyser : cvperf • E. Parallel Analyser : cvpav • F. Speedshop / perfex

  26. 2- Outils A. Static Analyser (cvstatic) • Aide à l’analyse et à la documentation de programmes • la structure du programme, • les fichiers qui le constituent, • les arbres d’appel, • les listes de fonctions, • le suivi des variables. • Deux modes d’analyse : • mode scanner : mode rapide, sans analyse relative au langage de programmation, => vue d’ensemble du programme. • mode parser : analyse relative au langage de programmation, possibilité de faire des interrogations. => étude plus poussée.

  27. 2- Outils A. Static Analyser • Commande de lancement : cvstatic ou à partir de cvd • Démarche : • création d’un fileset : sélection des fichiers, du langage, option Admin/Edit FileSet, => création d’une base de données de références croisées, • interrogations à l’aide de requêtes classées par thèmes, menu Queries, • visualisation graphique possible par l’option View/Call Tree View, • sauvegarde des requêtes précédentes, menu History, • filtrage des sorties, option Admin/Results Filter.

  28. 2- Outils A. Static Analyser

  29. 2- Outils B. Build Manager (cvmake) • Aide à la compilation de programmes • Composé de : • Build View, • Build Analyser. • A l’aide d’une interface graphique, le Build View permet de : • compiler des programmes, • corriger les erreurs de compilation, • visualiser les sources. • Commande de lancement : cvmake ou à partir de cvd.

  30. 2- Outils B. Build Manager (cvbuild) • A l’aide d’une interface graphique, le Build Analyser permet de : • visualiser les inter-dépendances entre les fichiers, • déterminer les cibles obsolètes à compiler/recompiler, option Admin/Refresh Graph Display, • faire des interrogations, menu Query. • Commande de lancement : cvbuild ou à partir de cvd.

  31. 2- Outils B. Build Manager

  32. 2- Outils C. Debugger (cvd) • Aide au déboguage • Compilation avec les options –O0 –g3 –DEBUG:… • Constitué de : • Un éditeur, Source View, • Une barre de menus, • Un panneau de contrôle, • Une ligne d’état, • Une ligne de commande. • Commande de lancement : cvd.

  33. 2- Outils C. Debugger • Menu Admin : configuration du débogueur. • Menu Trap : gestion des points d’arrêts conditionnels/inconditionnels. • Menu PC : interaction avec le Program Counter. • Menus Display et Query : gestion de l’affichage et interrogation. • Menu View : visualisation. • Variable Browser : affichage des variables du sous-programme courant • Expression View : évaluation de formules utilisant les variables • Call Stack View : affichage de la hiérarchie des appels de fonctions

  34. 2- Outils C. Debugger

  35. 2- Outils D. Performance Analyser (cvperf) • Outil d’analyse des performances de codes. • recueil et visualisation des informations de profilage (coûts cpu des routines et des lignes sources), • utilisation de la mémoire, • Recherche des exceptions flottantes (underflow, overflow, …). • Compilation du code avec le niveau d’optimisation –O3 • Commande de lancement : cvperf ou à partir de cvd • Version graphique de prof et ssrun

  36. 2- Outils D. Performance Analyser • Démarche d’instrumentation : • Choix du type de données et de la fréquence de l’échantillonnage, • Sampling Data : comptage du nombre d’exécutions d’un bloc d’instructions • Tracing Data : récupération des évènements altérant les performances • Sélection de la tâche : option Perf/Select Tasks • Instrumentation de l’exécution : bouton run • Analyse des résultats : option Perf/Examine Results

  37. 2- Outils D. Performance Analyser

  38. 2- Outils E. Parallel Analyser (cvpav) • Aide à la parallélisation automatique (APO) et à la parallélisation par directives (OpenMP). • Compilation avec le niveau d’optimisation –O3 (Loop Nest Analyser : analyse des boucles). • Examen du code source, indications à l’aide de symboles. • Insertion de directives pour le compilateur, définition de régions parallèles. • Commande de lancement : cvpav ou à partir de cvd

  39. 2- Outils E. Parallel Analyser

  40. 2- F. SpeedShop • ssrun : génère les fichiers de statistiques (ssrun [options] prgm) • -pcsamp : statistiques sur le Program Counter, • -usertime : temps (inclusif et exclusif) du programme, • -ideal : statistiques de comptage pour les blocs basiques. • ssaggregate : fusionne les fichiers d’analyse ssaggregate –e files.exp.pid –o file.exp • prof : traite les données et établit un rapport (prof [options] file.exp) • -lines : fournit les numéros des lignes des sous-programmes, • -q n : tronque la sortie après les n premiers sous-programmes affichés. • perfex : compte les évènements matériels (perfex -a -x -y prgm) => nombres de cycles, accès mémoire en dehors du cache, …

  41. 2- F. SpeedShop

  42. 2- F. SpeedShop

  43. 3- Optimisation scalaire • A. Ecriture du code, • B. Bibliothèques scientifiques, • C. Modularité, • D. Déboguage / validation, • E. Analyse des performances, • F. Optimisations par re-écriture, • G. Optimisations par options de compilation • H. Variables d’environnement.

  44. 3- Optimisation A. Ecriture du code • Réflexion au préalable sur papier, • Algorithmes performants (!), • Déclaration explicite de toutes les variables et des fonctions externes : • Directive IMPLICIT NONE dans tous les fichiers source, • Type générique pour les variables (REAL, INTEGER), • Précision imposée à la déclaration : REAL(rp) avec rp=4 ou 8, • Appels aux noms de fonctions génériques, exemple : SQRT au lieu de DSQRT, • Séparation des types dans les commons : CHARACTER et LOGICAL à part.

  45. 3- Optimisation A. Ecriture du code • Déclaration explicite des dimensions des tableaux, • Initialisation explicite des variables avant leur utilisation, • Indentation du source pour le rendre plus lisible, • Code aéré avec des commentaires, • Tests arithmétiques flottants selon la précision machine : Bon : IF ( ABS(reel1 - reel2) .LT. machep ) THEN ... Mauvais : IF ( reel1 .EQ. reel2 ) THEN ... Bon : IF ( ABS(DET) .LT. machep) THEN ... Mauvais : IF ( DET .EQ. 0 ) THEN ...

  46. 3- Optimisation A. Ecriture du code • Précision des constantes scalaires : INTEGER, PARAMETER :: rp = KIND(1.0D0) ! rp = 8 REAL(rp) :: x ! REAL*8 :: x x = 2.0 / 3.0 = 0.66666668653488159 x = 2.0_rp / 3.0_rp = 0.66666666666666663 • Tests arithmétiques flottants selon la précision machine : machep = 1.0_rp DO WHILE (machep + 1.0_rp > 1.0_rp ) machep = 0.5_rp * machep END DO machep = 2.0_rp * machep • Fonction epsilon du Fortran 90

  47. 3- Optimisation B. Bibliothèques scientifiques • Ensembles de sous-programmes testés, validés, optimisés. => Gain de temps et de travail et applications portables. => sources et documentations diverses : http://www.netlib.org • BLAS : algèbre linéaire de base (blas 1, 2, 3) • LAPACK : algèbre linéaire poussé • FFT : transformées de Fourier rapides, convolution (portabilité !) • Version SGI dans SCSL : link avec –lscs_i8 ou -lscs_i8_mp _i8 : INTEGER*8 au lieu de INTEGER*4 • Bibliothèque mathématique : link avec -lfastm au lieu de -lm

  48. 3- Optimisation C. Modularité • Fractionner le source, • Mettre un sous-programme par fichier, • Mettre un module, un common par fichier, • Construire des bibliothèques thématiques, • Travailler avec un fichier Makefile, • Gestion des fichiers de reprise, • Tester les routines après écriture sur des exemples.

  49. 3- Optimisation D. Déboguage / validation • Options de compilation recommandées: -O0 : aucune optimisation ! -u : signale les variables non déclarées (mettre IMPLICIT NONEdans le code), -g3 : enrichir la table des symboles pour le débogueur(dbx, cvd), -fullwarn : recevoir un maximum (-woff num) d’informations du compilateur, -DEBUG:trap_uninitialized=ON : mise à NaN des variables non initialisées, -DEBUG:subscript_check=ON : vérification des indices pour les tableaux, -DEBUG:div_check=3 : vérification des quotients d’entiers et des overflows, -DEBUG:verbose_runtime=ON : informations lors de l’exécution, -lfpe : recherche des exceptions flottantes + variable d’environnement TRAP_FPE

  50. 3- Optimisation E. Analyse des performances • Compilation avec le niveau d’optimisation -O3 • Speedshop : • code séquentiel ou OpenMP : ssrun -[f]pcsamp[x] prgm • code MPI : mpirun –np nbprocssrun –[f]pcsamp[x] prgm • fusion : ssaggregate –e prgm.exp.pids –o prgm.ssrun • analyse : prof -lines prgm.pcsamp • Workshop: • cvperf (version graphique de ssrun/prof) => Localiser la consommation du cpu pour optimiser les zones coûteuses

More Related