17-21 Octobre 2005 Formation Continue - CNRS Laurence Viry Analyse et Optimisation de code Analyse de performance.

Slides:



Advertisements
Présentations similaires
GEF 435 Principes des systèmes d’exploitation
Advertisements

GEF 435 Principes des systèmes d’exploitation
Le Concept du programme enregistré
Architecture de machines Le microprocesseur
TECHNOLOGIE DES ORDINATEURS
Master Professionnelle Sciences et Techniques 2 juillet
Cours n° 8 Conception et Programmation à Objets
Présentation de l’Architecture Windows NT
Module 6 : Gestion et analyse du système DNS
Objectif de l’exposé.
Performances 1 Évolution : Performance. Performances 2 Évolution : Mémoire.
A abstraction b assembleur c nombre binaire d bit e cache f UC g puce h compilateur i famille dordinateurs j contrôle k chemin de données l défaut m dé
Mémoire & Processus Cours SE - SRC
Analyse et Optimisation de code
13 – 16 Décembre 2005 Laurence Viry Introduction à MPI MPI_2.
17-21 Octobre 2005 Formation Continue – CNRS Laurence Viry Totalview Débogueur multiprocess - multithreads.
Introduction à MPI 13 – 16 Décembre 2005 Laurence Viry.
17-21 Octobre 2005 Formation Continue - CNRS Laurence Viry Analyse et Optimisation de code Techniques doptimisation.
Bibliothèques Scientifiques
Outils de développements
Introduction à MPI Types dérivés MPI Décembre 2005
17-21 Octobre 2005 Formation Continue - CNRS Laurence Viry Analyse et Optimisation de code Optimisation Compilateur Optimisation manuelle.
Objectifs Présentation et utilisation du langage PERL
LICENCE MIAGE Introduction Programmation Orientée Objet JAVA philippe
Interface Homme Machine IHM Pro
Les requêtes La Requête est une méthode pour afficher les enregistrements qui répondent à des conditions spécifiques. La requête est donc un filtre.
CYCLE 1 : Saisir – Afficher – Données Afficher du texte sur lécran 1- Rôle du printf() 2- Syntaxe du printf() 3- Exécution du printf() par le CPU.
Les Systèmes d’Exploitation
Serveurs Partagés Oracle
Système d’exploitation
Programme et Langage C++
Architecture des Ordinateurs
Algorithmique et Programmation
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
Module 4 : Création et gestion de comptes d'utilisateur
LES SYSTEMES AUTOMATISES
FICHIERS : Définition : Algorithme général:
Programmation concurrente
Présentation de l’outil INDICO
Module 2 : Préparation de l'analyse des performances du serveur
Module 3 : Analyse des performances du serveur
Chapitre 9 Les sous-programmes.
Informatique et Unix Jean-Pierre Gallou
Séminaire DEN/DSOE/Simulation sur le calcul hautes performances: le 7 novembre /17 Numerical Platon Contexte –outil daide aux développements de codes.
La Programmation CGI Principe Général Traitement des informations
Vue d'ensemble Surveillance des journaux d'événements
FORMATION Unix/Linux CHAPITRE 1: LES PREMIERS PAS.
Programmation Système et Réseau (sous Linux)
Gérer la sécurité des mots de passe et les ressources
Module 8 : Surveillance des performances de SQL Server
Objectifs A la fin de ce chapitre, vous pourrez : présenter l'utilisation d'opérations de chargement de données par chemin direct décrire l'utilisation.
SYSTÈME D’EXPLOITATION I
1 INFOR 101 Chapitres 5 et 6 Marianne Morris. 2 Discussion du devoir # 2 La solution du devoir No. 2 est à la page Web du cours!
Structure de Base d’un ordinateur Matière : Informatique
(Ou groupes d ’utilisateurs)
Programmation Système et Réseau
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Jean-Jacques Girardot
Classe 1 CSI2572 Autres modificateurs de déclaration de variables: & volatile & register & static & auto & extern & const volatile Indique au compilateur.
PROJET CAPS Compilation, Architecture, Parallélisme et Système.
Doan Chien Thang Aôut,2008.  La vue d'ensemble des systèmes d'exploitation  Les processus et les fils  Gestion de la mémoire  Le système des fichiers.
Architecture et technologie des ordinateurs II
Cours Système LI324 Les Interruptions Cours Système LI324
Lancement du système Chapitre 3.
1 Démo SoftGrid. Le Séquenceur SoftGrid Utilisation d’un « packageur » SoftGrid Possibilité de “séquencer” en ligne de commande (CLI) Existence d’outils.
Architecture et technologie des ordinateurs II
Exemple d’utilisation de l’outil de profilage prof La commande prof de Unix.
1.1: notions de bases de l’informatique
ALLOCATION DU CPU et GESTION DES TRAVAUX.
Master 1 ère année Sécurité des Systèmes Informatique 1 Accès aux systèmes de fichiers  Montage: mount bin etc lib home wallace gromit tmp var spool cron.
Chapitre 12 Surveillance des ressources et des performances Module S41.
Transcription de la présentation:

17-21 Octobre 2005 Formation Continue - CNRS Laurence Viry Analyse et Optimisation de code Analyse de performance

17 – 21 Octobre 2005 Formation Continue - CNRS Laurence Viry Méthodologie conseillée Valider le programme à optimiser Utiliser des codes déja optimisés ou sy ramener Utiliser des algorithmes performants Analyser le code, et se concentrer sur les sections critiques Utiliser les capacités doptimiser du compilateur Effectuer des modifications dans le code pour optimiser les sections critiques

17 – 21 Octobre 2005 Formation Continue - CNRS Laurence Viry Compteurs Hardware Petits registres comptabilisant les occurrences dévénements associés à des fonctions du processeur Instructions load/store Opérations Floating Point Nombre de cycles dattente daccès mémoire Cache misses, TLB misses,… … Fournies des informations utiles à lexplication dun manque de performance de certaines parties de codes Le suivi de ces événements permet daffiner ladaptation du code à larchitecture cible

17 – 21 Octobre 2005 Formation Continue - CNRS Laurence Viry Mesures de performance Mesure du temps Global :User, CPU et wall ou elpased time, autres statistiques… Partie de code : appel à une fonction explicite (C, Fortran, system…) Profiling: Analyse détaillée de performance Nombre dappels des procédures, temps passé dans ces procédures, graphe des appels… Utilisation des compteurs hardware: comptage ou statistique sur des événements (nombre de floating point, caches misses, TLB misses,…) Traçage: analyse et/ou visualisation à postériori de lexécution dun programme Enregistrement des informations sur des événements (caches misses, …) par process/thread pendant lexécution Reconstruction dynamique du comportement du programme à partir de ces informations Nécessite linstrumentation du code

17 – 21 Octobre 2005 Formation Continue - CNRS Laurence Viry Mesures de performance Mesure globale du temps (autres statistiques) commande UNIX "time" Mesure du temps d'une partie de code par une Fonctions explicites (C et Fortran) Analyse complète de performance du code Outils standard de profiling: prof, gprof, pixie, …

17 – 21 Octobre 2005 Formation Continue - CNRS Laurence Viry Mesure globale du temps - time time (commande de base UNIX/LINUX) : Temps utilisateur, temps système, elapsed ou wall time CPU time = Temps utilisateur + temps système Propriétés Résolution de l'ordre de 10ms Un "system_time" disproportionné peut indiquer un disfonctionnement Nombre important de « floating-point exceptions » Nombre important de "page faults" ou de "misaligned memory access" …

17 – 21 Octobre 2005 Formation Continue - CNRS Laurence Viry Mesure globale du temps - time Propriétés CPU time < elapsed time Partage de la machine Grand nombre d'I/O Largeur de bande requise > largeur de bande de la machine Pagination et/ou swap important …

17 – 21 Octobre 2005 Formation Continue - CNRS Laurence Viry Fonction TIME (CSH ou TCSH) % time program 14.9u 1.4s 0:19 83% K 27+86io 47pf+0w Pourcentage d'utilisation Quantité moyenne de mémoire partagée (Kb) Quantité moyenne de mémoire réelle non-partagée utilisée Nombre de blocs en entrée Nombre de blocs en sortie Fautes de pages Nombre de swaps User time System time Elapsed time

17 – 21 Octobre 2005 Formation Continue - CNRS Laurence Viry Fonctions explicites de mesure de temps Appel explicite de sous-programmes à l'intérieur du code Fonction system_clock(): elapsed time Procédures de la norme Fortran90/95 (~10ms) cpu_time() : temps CPU date_and_time() :elapsed time Fonction etime (non standard): temps système, utilisateur et total Hors standard : fonctions constructeurs

17 – 21 Octobre 2005 Formation Continue - CNRS Laurence Viry Fonctions explicites de mesure de temps system_clock Procédure system_clock: elapsed time real :: time integer :: debut, fin,rate call system_clock(count=debut,count_rate=rate) … call system_clock(count=fin) time= float(fin-debut)/rate

17 – 21 Octobre 2005 Formation Continue - CNRS Laurence Viry Fonctions explicites de mesure de temps etime Fonction etime (non standard) real :: actual, etime, tarray(2) actual=etime(tarray) Avec tarray(1) : temps utilisateur tarray(2) : temps du system etime : temps total Non standard

17 – 21 Octobre 2005 Formation Continue - CNRS Laurence Viry Fonction dans la norme Fortran90/95 Procédure cpu_time real :: time_debut, time_fin call cpu_time(time_debut) … call cpu_time(time_fin) print*, "temps = ", time_fin – time_debut, " secondes" Procédure date_and_time : elapsed time integer :: date_time(8) character (len=12) :: real_clock(3) call date_and_time(real_clock(1), & real_clock(2), real_clock(3),date_time) Voir "Fortran Language Reference Manual"

17 – 21 Octobre 2005 Formation Continue - CNRS Laurence Viry Profiling Permet de déterminer les parties de code les plus consommatrices avant le travail doptimisation Récupère des informations sur: Le temps, le nombre dappels des procédure, le graphe des appels, des statistiques sur des compteurs hardwares… Différentes granularités, fonction, boucle, bloc de base et même ligne de code Coût de développement relativement faible Plusieurs types de profiling : PC Sampling: interruption périodique du système ou trap des compteurs hardware. Ne nécessite en général pas de modification du code Basic-Bloc Counting : lunité danalyse est le bloc de base Méthode intrusive qui consiste à insérer directement des instructions de mesure dans le code (par le profiler ou manuellement)

17 – 21 Octobre 2005 Formation Continue - CNRS Laurence Viry Outils de profiling Méthode non intrusives prof, gprof sur les OS UNIX/linux VPROF ( SvPablo TAU (OpenMP, MPI, MPI/OpenMP) VAMPIR / VampirTrace : MPI HPCView Dynaprof (nécessite dyninst ou DPCL) Outils constructeurs: perfex et ssrun (SGI IRIX), tprof et trace (IBM), PAT (CRAY), histx, pfmon (Linux), Vtune (Intel), hiprof, pixie (Alpha Tru64) … … Méthodes intrusives PAPI: interface portable des compteurs hardware et mesure du temps

17 – 21 Octobre 2005 Formation Continue - CNRS Laurence Viry Profiling Deux types de profiling : PC Sampling : prof, gprof hiprof Basic-Bloc Counting : prof, pixie Utilisation des Compteur Hardware : PAPI pfmon, lipfpm, histx (linux) uprofile et kprofile (Tru64) …

17 – 21 Octobre 2005 Formation Continue - CNRS Laurence Viry Trois étapes pour le profiling prof, gprof, hiprof… Instrumentation automatique du programme Par le compilateur (prof, gprof): -p, –pg Par le profiler (hiprof, pixie, histx…) Exécution du programme instrumenté Crée le fichier de données pour le profiler (mon.out,gmon.out,…) Utilisation du profiler pour l'extraction et la lecture des résultats: prof, gprof, hiprof, iprep…

17 – 21 Octobre 2005 Formation Continue - CNRS Laurence Viry PC-Sampling prof Cpu_time profiling : option –p et profiler prof Trois étapes % f90 –p –o prog prog.f % prog => création du fichier mon.out % prof prog mon.out > prof.list (sortie par défaut à l'écran)

17 – 21 Octobre 2005 Formation Continue - CNRS Laurence Viry PC-Sampling gprof -hiprof Cpu-time profiling + graphe des appels Compilateur : option –pg et profiler gprof % f90 -pg –o prog prog.f % prog => création du fichier gmon.out % prof prog gmon.out > prof.list (sortie par défaut à l'écran) profiler hiprof (pas d'option particulière à la compilation): Compiler le programme : f90 –o prog prog.f Instrumentation du programme: hiprof prog => prog.hiprof Exécution :./prog.hiprof ou hiprof –run prog Affichage des résultats : hiprof –run –display prog

17 – 21 Octobre 2005 Formation Continue - CNRS Laurence Viry Listing: PC-Sampling Each sample covers 8.00 byte(s) for 4% of seconds %time seconds cum % cum sec procedure (file) square_ (matpower.f) square_mult_ (matpower.f) time : pourcentage de temps passé dans la routine seconds : temps en secondes passé dans la routine cum : pourcentage de temps cumulé cum sec : temps cumulé en secondes

17 – 21 Octobre 2005 Formation Continue - CNRS Laurence Viry PC-SAMPLING + GRAPH

17 – 21 Octobre 2005 Formation Continue - CNRS Laurence Viry PC-SAMPLING + GRAPH

17 – 21 Octobre 2005 Formation Continue - CNRS Laurence Viry Basic-Bloc Counting pixie,prof (Alpha – Tru64) 4 étapes Compilation : f90 –g1 –O2 –o prog prog.f Instrumentation: pixie prog Programme instrumenté: prog.pixie Fichier d'adresses des blocs: prog.Addrs Exécution: prog.pixie Crée le fichier compteurs de blocs: prog.Counts Extrait et affiche l'information de profiling prof –pixie prog >prog_pixie.list

17 – 21 Octobre 2005 Formation Continue - CNRS Laurence Viry Basic-Bloc Counting (pixie,prof) Réduire les informations fournies -exclude, -only -quit : troncature du listing après n lignes

17 – 21 Octobre 2005 Formation Continue - CNRS Laurence Viry Outils danalyse de Performances SGI -IRIX speedshop (commande ssrun): localise les sections de code consommatrices de temps CPU prof: analyse et édite les données de performance issues de Speedshop ou ssrun dprof: échantillonne un programme et enregistre les informations concernant les accès mémoire perfex: exécute le programme et récupère les données des compteurs hardware

17 – 21 Octobre 2005 Formation Continue - CNRS Laurence Viry Outils danalyse de Performances HP/Compaq – TRU64 prof Extrait les informations produites par –p ou pixie pixie Basic Bloc Profiler gprof Extrait les informations produites par –pg ou hiprof hiprof Crée un programme instrumenté pour le profing des appels, du graphe des appels, des défauts de page,… uprofile: interface avec les coumpeurs Hardware des processeurs Alpha

17 – 21 Octobre 2005 Formation Continue - CNRS Laurence Viry Outils danalyse de Performances Altix350 - Linux pfmon: analyseur de performance utilisant le Performance Monitoring Unit (PMU) de lIA-64 profile.pl : script perl utilisant pfmon et dautres scripts pour effectuer un profiling au niveau procédural histx et lipfpm(SGI): outils de profiling, exploitation des compteurs de lItanium Vtune: Outil Intel de monitoring de code

17 – 21 Octobre 2005 Formation Continue - CNRS Laurence Viry Analyse de performance Itanium/linux – pfmon Outil danalyse de performance dun ou plusieurs processus sur un ou plusieurs processeurs Itanium sous Linux (OpenSource) Récupère des données au niveau utilisateur et au niveau noyau Analyse des événements issus des compteurs hardware (jusquà 4) Profiling sur tous les nœuds/processeurs gérés par le système (System-Wide Profiling) Génère un faible overhead

17 – 21 Octobre 2005 Formation Continue - CNRS Laurence Viry Itanium/linux – pfmon Quelques options: -h : aide -e : spécifie jusquà 4 événements (CPU_CYCLES par défaut) -l : liste des événements ( 475 sur Itanium2) -i : fornit la description de lévénement -k : profiling au niveau du noyau --system-wide: system-wide profiling -c : restreint le « system-wide profiling » à une liste de processeurs Une seule session de profiling par CPU

17 – 21 Octobre 2005 Formation Continue - CNRS Laurence Viry Itanium/linux – pfmon É vénements disponibles: pfmon –l Descrition sommaire dun compteur: pfmon –i ex: pfmon –i FE_BUBBLE_TLBMISS Inclure le détail du temps passé dans les appels système: faire une copie dans le répertoire dexécution du fichier /boot/System.map Documentations: pfmon 2.0 Users Guide: /usr/share/doc/pfmon-2.0/pfmon_usersguide.txt Supplément Itanium et Itanium2 /usr/share/doc/pfmon-2.0/pfmon_itanium.txt /usr/share/doc/pfmon-2.0/pfmon_itanium2.txt

17 – 21 Octobre 2005 Formation Continue - CNRS Laurence Viry Itanium/linux – pfmon Evénements importants: L2_MISSES : nombre de L2 Misses L3_MISSES : nombre de L2 Misses L2DTLB_MISSES : Nombre de TLB Misses L2_OZQ_CANCELS1_BANK_CONF nombre de conficts de cache L2 BR_MISPRED_DETAIL_ALL_WRONG_[PATH|TA RGET] : branchements mal prédits … Exemple: % ifort –O3 –o multmat multmat.f90 % pfmon –e CPU_CYCLES,L2_MISSES,L3_MISSES./multmat

17 – 21 Octobre 2005 Formation Continue - CNRS Laurence Viry Itanium/linux – profile.pl Script utilisant pfmon Compilation avec loption –g profile.pl utilise dplace pour les programmes parallèles, une sélection dun sous ensemble de processeurs: options –K et –K Appels aux scripts: makemap.pl : analyse.pl : Analyse du temps passé dans les appels système: copie du fichier /boot/System.map dans le répertoire dexécution

17 – 21 Octobre 2005 Formation Continue - CNRS Laurence Viry Analyse de performance Altix350 – histx (SGI) Programme et liste doutils danalyse de performance sur Altix, développés par SGI Compatible OpenMP et MPI Utilisent les compteurs Hardware de lItanium2 Capable de suivre les enfants dun processus (fork, thread…) Compatible Propack 2.x :

17 – 21 Octobre 2005 Formation Continue - CNRS Laurence Viry Analyse de performance Altix350 – histx (SGI) Liste des outils danalyse de performance lipfpm: permet dexploiter le « Performance Monitor Unit » (PMU) intégré au processeur Itanium2 (~perfex sous IRIX) samppm: échantillonage des événements PMU à la vitesse spécifiée dans la commande histx: Suit la trace de lexécution dun binaire, y compris une commande système et dresse la liste des points de passage les plus fréquents dumppm: convertit les fichiers binaires issus de samppm en informations humainement lisibles iprep: interprétation des analyses de histx en mode « Instructions Pointers » csrep : interprétation des analyses de histx en mode « Callstack»

17 – 21 Octobre 2005 Formation Continue - CNRS Laurence Viry HISTX: lipfpm Linux IPF Performance Monitor Utilisation du cache L2 et du cache L3: lipfpm -e L2_MISSES -e L2_REFERENCES -e L3_MISSES -e L3_REFERENCES./a.out lipfpm summary ====== ======= L2 Misses L2 References L3 Misses L3 References

17 – 21 Octobre 2005 Formation Continue - CNRS Laurence Viry HISTX: lipfpm utilisation du cache L2 et le Mflop : lipfpm -e FP_OPS_RETIRED -e L2_MISSES -e L2_REFERENCES $COMMANDE lipfpm summary ====== ======= Retired FP Operations L2 Misses Requests Made To L CPU Cycles Percentage of L2 misses Average MFLOP/s Average MB/s requested by L

17 – 21 Octobre 2005 Formation Continue - CNRS Laurence Viry HISTX: lipfpm utilisation du cache L3 et des debits des accès en mémoire lipfpm -e FP_OPS_RETIRED -e L3_READS.DATA_READ.ALL \ -e L3_READS.DATA_READ.MISS $COMMANDE lipfpm summary ====== ======= Retired FP Operations L3 Reads -- L3 Load References L3 Reads -- L3 Load Misses CPU Cycles Average MFLOP/s Average data read MB/s requested by L

17 – 21 Octobre 2005 Formation Continue - CNRS Laurence Viry Programme HISTX Donne des détails : Par ligne (du code) : option -g Par fonction (du code) Par librairie Jusquà N niveaux dappels de fonctions des librairies (mode callstack) Par thread, process forké,… Exemple : %icc –g prog.c %histx –l –o sorties_histx./a.out %iprep sorties_histx

17 – 21 Octobre 2005 Formation Continue - CNRS Laurence Viry Mémoire virtuelle Utilisation de la zone de swap Mémoire requise > mémoire physique de la machine Partage des ressources entre plusieurs programmes Profiling Comparer la mémoire requise à la mémoire physique Commande size : text, data, bss Option du compilateur sur Tru64 Unix: -V Détails de la mémoire utilisée: bss,data,text (bss <0 si la mémoire requise < mémoire physique de la machine) Ne tient pas compte de la pile et du tas Page faults: vmstat ( Berkeley S) et sar (System 5)

17 – 21 Octobre 2005 Formation Continue - CNRS Laurence Viry Page faults Global : vmstat 5 Virtual Memory Statistics: (pagesize = 8192) procs memory pages intr cpu r w u act free wire fault cow zero react pin pout in sy cs us sy id K 138K 14K 2M 193K 2M 0 187K K 138K 14K K 138K 14K K 138K 14K Par programme / procédure: Profiler hiprof hiprof –run –display –faults matpower

17 – 21 Octobre 2005 Formation Continue - CNRS Laurence Viry Compteur Hardware exemple de lOX000(SGI) deux registres de compteur de performances 1 à 16 événements hardware par compteur 2 événements: comptage exacte plus de 2 événements: multiplexage par lOS sur les 2 compteurs, estimation statistique loverflow dun compteur provoque un hardware trap Nécessité dune interface gérant les informations récupérées par les compteurs hardware ssrun, perfex sur Origin 2000

17 – 21 Octobre 2005 Formation Continue - CNRS Laurence Viry Compteur Hardware EV67, EV68 et EV7 Deux registres de compteur de performances pour compter les événements hardware (1 à 16 événements hardware par compteur) 2 événements: comptage exacte plus de 2 événements: multiplexage par lOS sur les 2 compteurs, estimation statistique loverflow dun compteur provoque un hardware trap Dépend du type de processeur – inopérant sur EV6 Profiler uprofile

17 – 21 Octobre 2005 Formation Continue - CNRS Laurence Viry Compteur Hardware Itanium2 - Altix350 Quatre registres de compteur de performances pour compter les événements hardware (1 à 4 événements hardware par compteur) loverflow dun compteur provoque unhardware trap Profiler: pfmon,lipfpm, histx

17 – 21 Octobre 2005 Formation Continue - CNRS Laurence Viry Pourquoi PAPI? Les compteurs Hardware existent sur la plupart des processeurs Les mesures de performances associées à ces compteurs varient suivant les processeurs Il y a très peu dAPI permettant de les utiliser et elles sont souvent peu documentées instables et parfois inutilisables

17 – 21 Octobre 2005 Formation Continue - CNRS Laurence Viry But de PAPI Fournir une API portable, simple à utiliser pour accéder aux compteurs hardware sur la majorité des plate-formes HPC Définir des métriques de performances communes à un grand nombre de plate-formes fournissant des informations utiles à loptimisation de codes Encourager les vendeurs à standardiser les interfaces et la sémantiques des compteurs hardware

17 – 21 Octobre 2005 Formation Continue - CNRS Laurence Viry Traceanalyser – VampirTrace (4.0) Outils danalyse et de visualisation de performance dun programme // MPI MPI multi threads Multithreads java Deux composants: Trace Collector ou Vampirtrace: permet la génération automatique de la trace dun programme parallèle MPI Traceanalyser ou Vampir : programme de visualisation graphique de la trace générée par Vampirtrace

17 – 21 Octobre 2005 Formation Continue - CNRS Laurence Viry Traceanalyser – VampirTrace (4.0) Implémenté sur la plupart des plate- formes Intel Itanium, Redhat et MPI/mpich Ia32 architecture avec LAM/MPI Itanium-2 avec HP-UX et HP-MPI Compaq,CRAY,Fujitsu,Hitachi,HP,IBM,NEC,SGI,S un Documentation sur le site de Pallas