Profiling. École d Automne Informatique Scientifique 3 Décembre 2008. Profiling. Romaric DAVID. Plan. Introduction. Profiling



Documents pareils
Plan global Outils de développement et compilation. Plan. Objectifs des outils présentés. IDE, GCC/Clang, ASAN, perf, valgrind, GDB.

Débogage de code* Mardi 13 décembre Romaric DAVID Université de Strasbourg - Direction Informatique Pôle HPC. hpc.unistra.

Analyse de performance, monitoring

Environnements de développement (intégrés)

ERESI : une plate-forme d'analyse binaire au niveau noyau. The ERESI team

Conventions d écriture et outils de mise au point

Performances et optimisations

Environnements et Outils de Développement Cours 1 Introduction

Mesurer les performances (CPU) sous Linux

RTDS G3. Emmanuel Gaudin

Génération de code binaire pour application multimedia : une approche au vol

Tutoriel code::blocks

Optimisation de logiciels de modélisation sur centre de calcul

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

HSCS 6.4 : mieux appréhender la gestion du stockage en environnement VMware et service de fichiers HNAS Laurent Bartoletti Product Marketing Manager

GenDbg : un débogueur générique. Didier Eymery Jean-Marie Borello Jean-Marie Fraygefond Odile Eymery Philippe Bion

Utiliser Dev-C++ .1Installation de Dev-C++ Table des matières

Évaluation et implémentation des langages

I00 Éléments d architecture

Annexe : La Programmation Informatique

IBM Tivoli Monitoring, version 6.1

Programmation C. Apprendre à développer des programmes simples dans le langage C

Concept de machine virtuelle

Cours 1 : La compilation

L informatique en BCPST

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Chapitre I Notions de base et outils de travail

Comment consolider des données

Chapitre 2 : Abstraction et Virtualisation

Logiciel Libre Cours 3 Fondements: Génie Logiciel

SSTIC Désobfuscation automatique de binaires. Alexandre Gazet. Yoann Guillot. Et autres idyles bucoliques...

Métriques de performance pour les algorithmes et programmes parallèles

Performances. Gestion des serveurs (2/2) Clustering. Grid Computing

Configuration matérielle et logicielle requise et prérequis de formation pour le SYGADE 6

10 tâches d administration simplifiées grâce à Windows Server 2008 R2. 1. Migration des systèmes virtuels sans interruption de service

Programmation impérative

Module : Virtualisation à l aide du rôle Hyper-V

Introduction à l informatique en BCPST

Intégration de l interface graphique de Ptidej dans Eclipse

Algorithmique I. Algorithmique I p.1/??

Easy to. report. Connexion. Transformation. Stockage. Construction. Exploitation. Diffusion

Éléments de programmation et introduction à Java

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Compilation (INF 564)

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

TechSoftware Présentations

Manuel de System Monitor

Solution logicielle pour le pilotage et l ERM. Journées d études IARD 26 mars mars 2010

Drupal : Optimisation des performances

IFT3902 : (Gestion de projet pour le) développement, (et la) maintenance des logiciels

Vérifier la qualité de vos applications logicielle de manière continue

Dossier Solution - Virtualisation CA arcserve Unified Data Protection

Eclipse atelier Java

4D v11 SQL BREAKING THE LIMITS * Les nouveautés

Manuel d utilisation du module Liste de cadeaux PRO par Alize Web

Outils pour la pratique

Exploiter les statistiques d utilisation de SQL Server 2008 R2 Reporting Services

Installation et prise en main

Projet de développement

données en connaissance et en actions?

Release Notes POM v5

Présentation d HyperV

Magento. Pratique du e-commerce avec Magento. Christophe Le Bot avec la contribution technique de Bruno Sebarte

Rappels d architecture

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Catalogue des stages Ercom 2013

1) Installation de Dev-C++ Téléchargez le fichier devcpp4990setup.exe dans un répertoire de votre PC, puis double-cliquez dessus :

Tests de performance du matériel

Oracle Maximum Availability Architecture

Java - la plateforme

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

1 Description générale de VISFIELD

ArcGIS 10 Christophe Tourret Gaëtan Lavenu

Pentaho Business Analytics Intégrer > Explorer > Prévoir

Formation à Linux Embarqué. Jérôme Pouiller

CARTOGRAPHIE EN LIGNE ET GÉNÉRALISATION

IBM Content Manager OnDemand V 7.1

MYXTRACTION La Business Intelligence en temps réel

Rapport d activité. Mathieu Souchaud Juin 2007

IBM Tivoli Compliance Insight Manager

USTL - Licence ST-A 1ère année Codage de l information TP 1 :

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Maintenance et gestion approfondie des Systèmes d exploitation Master 2 SILI. Année universitaire David Genest

Instrumentation de code Java

Sommaire. 1 Introduction Présentation du logiciel de commerce électronique 23

Vers l urbanisation agile d un client mobile ios/android natif, économique, flexible et pérenne

Comment créer un diagramme de Gantt avec OpenOffice.org

Tutoriel de formation SurveyMonkey

S7 Le top 10 des raisons d utiliser PHP pour moderniser votre existant IBM i

en version SAN ou NAS

La mémoire. Un ordinateur. L'octet. Le bit

Python - introduction à la programmation et calcul scientifique

Avantages. Protection des réseaux corporatifs de gestion centralisée

T. Gasc 1,2,3, F. De Vuyst 1, R. Motte 3, M. Peybernes 4, R. Poncet 5

Installation LTE-SIM. Simulation du réseau 4G (LTE-SIM) en vue d optimiser les ressources spectrales de l opérateur.

pythonocc: une plateforme de développement agile d applications CAO.

Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données

WHS FutureStation Nano Extras\Options: Général

Transcription:

École d Automne Informatique Scientifique 3 Décembre 2008

s de programmes

Objectifs du cours Ce cours vous présentera les outils d analyse de vos programmes. En particulier, vous pourrez : Traquer des bugs dans les codes Déterminer les parties du code gourmandes en temps de calcul Découvrir quelques pistes permettant d optimiser le programme

1 2 3 4 5

Pourquoi déboguer? Programme produisant un résultat incorrect Un plantage du programme Un problème lié à la gestion de la mémoire 1 segmentation fault (core dumped) 1 Classe d outils à part

Principe du débogage Suivi pas à pas du déroulement du programme Lien entre code source et assembleur Fonctionnalités importantes Points d arrêt : interrompre le déroulement du programme à cet endroit Surveillance de variables : réagir aux modifications de variable ( mais où diable cette variable est-elle modifiée? ) Compilation avec symboles de débogage -g. Peuvent être associés à optimisation. Lancement sous le débogueur ou attachement à un programme en cours Mise en place points d arrêt, surveillance de variables Examen de valeurs de variables 2 Poursuite de l exécution Techniquement : utilisation de l appel système ptrace 2 y compris fonctions de visualisation évoluées (2D, 3D, tranches)

Débogueurs en mode texte dbx (Solaris, IRIX, AIX) gdb (tous) idb (Intel, Linux IA64 et X86-64) tv8cli (Totalview) pdb (pour python) Des interfaces graphiques les pilotent : ddd (Data Display Debugger). Interfaçable avec dbx, gdb DDT (Allinea) Interface de totalview Kdbg (gdb) Eclipse Ptp (Parallel tools platform)

1 2 3 4 5

Une méthode simple de mesure du temps passé time=get time(now) fonction calcul(...) time spent=get time(now)-time save(time spent) Notez que la sauvegarde du temps passée peut être compliquée (gestion variable globale,... ) nécessité d automatiser.

Une méthode simple de mesure du temps passé time=get time(now) fonction calcul(...) time spent=get time(now)-time save(time spent) Notez que la sauvegarde du temps passée peut être compliquée (gestion variable globale,... ) nécessité d automatiser.

Une méthode simple de mesure du temps passé time=get time(now) fonction calcul(...) time spent=get time(now)-time save(time spent) Notez que la sauvegarde du temps passée peut être compliquée (gestion variable globale,... ) Limite de la méthode : Facile pour une fonction, mais pour plusieurs? Facile pour une métrique, mais... nécessité d automatiser.

Analyse du comportement Permet de connaître le comportement du programme à l exécution. Permet de mesurer : Où un programme passe le plus clair de son temps Le nombre d appels à une fonction Les outils d analyse de comportement (profilers) permettent de consolider l ensemble des mesures réalisées.

Analyse du comportement Permet de connaître le comportement du programme à l exécution. Permet de mesurer : Où un programme passe le plus clair de son temps piste d optimisation Le nombre d appels à une fonction piste de débogage Les outils d analyse de comportement (profilers) permettent de consolider l ensemble des mesures réalisées.

Données recueillies par le profiler Temps de chaque fonction (profil plat) Métriques utilisateur Callers/Callees : représentation du graphe d appel du programme Temps inclusive : fonction appelante + fonction appelée Exclusive : fonction appelante uniquement

Utilisation du compilateur avec gprof Les compilateurs usuels permettent d automatiser la mise en place des instructions de mesure analysables par gprof. Compilateur Intel : -p Gnu : -pg -g affichage ligne par des informations (utilisation gprof -l)

assistée Le schéma est le suivant et vise a réinjecter dans une deuxième compilation les informations de profiling issues d une exécution.

Utilisation de gcov Pour analyser ligne par ligne le déroulement d un programme : Compilation avec gcc -fprofile-arcs -ftest-coverage génération d un graphe de flôt Exécution du programme Après l exécution, gcov source.c Produit source.c.gcov, Affiche le % de ligne exécutées Analyse de source.c.gcov par ggcov ou... manuelle Permet aussi de savoir si certaines lignes ne sont jamais exécutées

Outils dans la famille Intel On retrouve le schéma CEA (compilation, exécution, analyse). Options/outils à utiliser : Compilation avec -prof-genx -prof-dir/usr/profiled Fusion des différents fichiers obtenus : profmerge Extraction et présentation sour forme Html : codecov

Retour sur gprof La caractéristique des outils comme gprof est de faire analyser après l exécution du programme un fichier de traces généré pendant son exécution. Le fichier de traces de gprof est spécifique aux quelques informations que gprof sait traiter. Cette séquence récupération de traces suivie de l analyse se retrouve dans plusieurs outils. Nécessité d enrichir le contenu des traces.

Plus d événements Outils permettant à l utilisateur de définir ses propres événements Consolidation, agrégation des résultats automatique Affichage à l aide de l outil Format de traces spécifique

À retenir Orienté programmes parallèles Couplage compilateur / profiler Re-compilation nécessaire dans certains cas Couplage possible avec optimisations du compilateur (gprof)

1 2 3 4 5

I est une machine virtuelle (processeur synthétique) exécutant le code du programme. Avant d être exécuté, le code original est interprété (traduction ) et éventuellement enrichi des instructions de profiling. Ensuite, il est re-traduit (traduction juste-à-temps) avant d être exécuté sur le processeur synthétique. Maintenant étendu à l aide d autre outils, permet aussi de : d analyser le comportement du cache (cachegrind) d analyser (dynamiquement) les graphes d appel (callgrind) d analyser les accès aux données par des threads concurrents (helgrind) on s approche du debogage

II Pour l analyse des accès mémoire, on peut considérer comme un débogueur. C est d ailleurs l exemple le plus classique d utilisation de valgrind. Nous regardons ici la sortie de l exécution de la commande uname -a sous valgrind : david@angdmath1: $ valgrind --tool=memcheck /bin/uname -a ==11776== Memcheck, a memory error detector. ==11776== Copyright (C) 2002-2007, and GNU GPL d, by Julian Seward et al. ==11776== Using LibVEX rev 1854, a library for dynamic binary translation. ==11776== Copyright (C) 2004-2007, and GNU GPL d, by OpenWorks LLP. ==11776== Using valgrind-3.3.1-debian, a dynamic binary instrumentation framewor

III k. ==11776== Copyright (C) 2000-2007, and GNU GPL d, by Julian Seward et al. ==11776== For more details, rerun with: -v ==11776== Linux angdmath1 2.6.26-1-amd64 #1 SMP Sat Nov 8 18:25:23 UTC 2008 x86_64 GNU/Lin ux ==11776== ==11776== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 8 from 1) ==11776== malloc/free: in use at exit: 0 bytes in 0 blocks. ==11776== malloc/free: 30 allocs, 30 frees, 3,673 bytes allocated.

IV ==11776== For counts of detected errors, rerun with: -v ==11776== All heap blocks were freed -- no leaks are possible.

- en images

- en images

1 2 3 4 5

Ai-je vraiment besoin d écrire du code? Il y a de grandes chances que les opérations numériques de base dont vous avez besoin aient déjà été écrites par quelqu un d autre. Quelques sources à regarder : Netlib : http://www.netlib.org/ 3 ACM Calgo : http://oldwww.acm.org/pubs/calgo/. http://en.wikipedia.org/wiki/list_of_ numerical_analysis_software fournit de nombreux liens sur des logiciels d analyse numérique L intérêt des bibliothèques déjà faites est que les plus diffusées d entre elles disposent d une API reprise dans les versions optimisées fournies par les éditeurs de logiciels. 3 Version plus lisible : http://www.netlib.org/master/expanded_liblist.html

Mais je veux vraiment écrire du code! I Commençons par réfléchir à la diminution du temps de calcul. Voici quelques pistes. Ai-je vraiment besoin de tous ces calculs? penser pré-calculs, ré-utilisation des résultats, calcul sur des zéros Est-ce que j utilise le bon algorithme? Quelle est sa complexité (nombre d opérations)? En existe-t il d autres moins coûteux? Que me coûte l accès aux données? Penser structures de données Est-ce que mon algorithme est parallélisable?

Mais je veux vraiment écrire du code! II Cependant, le nombre de coeurs par processeur augmentant, les gigaflops étant de moins en moins coûteux (cartes graphiques, Cell,... ), l accès aux données en mémoire devient le point critique des applications. Il s agit donc d une des principales sources d optimisation.

Mais où sont mes données? La mémoire d un ordinateur est dite hiérarchique, avec des niveaux. Nous les examinons du plus proche (du processeur) au plus éloigné.

Localité des données Localité spatiale : accéder à des données proches en mémoire. Elles seront probablement dans le cache. Localité temporelle : réutiliser les données qui sont de toute façon dans le cache Augmentation du nombre de coeurs Limiter / utiliser au mieux l accès mémoire

Quelques règles Pour utiliser au mieux les données du cache on peut : écrire des algorithmes travaillant par blocs, blocs qui tiennent dans le cache (principe des blas/lapack) écrire des programmes qui ne provoquent pas de défaut de cache ( remplacer structures de tableaux par tableaux de structures, fusionner les boucles, inverser les boucles). Certains compilateurs/optimiseurs peuvent le faire.... écrire des programmes avec un informaticien à côté de soi. influence sur la lisibilité et la maintenabilité du programme. Quoiqu il en soit, il faut augmenter le ratio nombre d opérations / nombre d accès mémoire.

1 2 3 4 5

Qu a t on appris? Nous savons maintenant : Déboguer un programme existant Mesurer les performances de nos codes ou des codes tiers Écrire des codes ne sollicitant pas trop la mémoire, gage de performance et scalabilité