Temps d exécution monoprocesseur



Documents pareils
Mesure de performances. [Architecture des ordinateurs, Hennessy & Patterson, 1996]

Performances et optimisations

Analyse de performance, monitoring

Mesurer les performances (CPU) sous Linux

Structure d un programme

GCOS 7 sur microprocesseur standard Diane Daniel POIRSON 14 octobre 2004 Matériels 64 / DPS 7 / DPS 7000 Architecture & Evolution - Daniel POIRSON 1

Architecture des ordinateurs

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

Compilation (INF 564)

Une méthode de conception de systèmes sur puce

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Cours Programmation Système

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

Chapitre 2 : Abstraction et Virtualisation

Cours Bases de données 2ème année IUT

Parallélisme et Répartition

Analyse de sécurité de logiciels système par typage statique

Un serveur web léger et ouvert

Initiation au HPC - Généralités

SRS DAY: Problématique liée à la virtualisation

Rappels d architecture

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

Architecture des Ordinateurs Première partie. Licence d Informatique - IUP Miage - FIIFO

<Insert Picture Here> Solaris pour la base de donnés Oracle

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Architecture des ordinateurs

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

Architecture des ordinateurs. Loïc Cuvillon. 20 novembre 2013

Commentaires du testeur

AUVRAY Clément (168187) HOMBERGER Alexandre (186897) GLADE. Langages, outils et méthodes pour la programmation avancée Page 1 sur 12

Optimisation de logiciels de modélisation sur centre de calcul

M2-Images. Rendu Temps Réel - OpenGL 4 et compute shaders. J.C. Iehl. December 18, 2013

UE Programmation Impérative Licence 2ème Année

Tests de performance du matériel

Cours de C. Petits secrets du C & programmation avancée. Sébastien Paumier

Initiation. àl algorithmique et à la programmation. en C

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Programmation assembleur : aperçu

Conception de circuits numériques et architecture des ordinateurs

Vers du matériel libre

Programmation système I Les entrées/sorties

Visual Taxe 4.1.0B04 minimum

1 Mesure de la performance d un système temps réel : la gigue

I00 Éléments d architecture

TechSoftware Présentations

Evaluation des performances de programmes parallèles haut niveau à base de squelettes

Rôles serveur Notion de Groupe de Travail Active Directory Utilisation des outils d administration Microsoft Windows Server 2008

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril / 15

MRTG & RRD Tool. Multi Router Traffic Grapher

Éléments de programmation et introduction à Java

Les techniques de protection du logiciel

Problèmes liés à la concurrence

Sanity Check. bgcolor mgcolor fgcolor

Architecture des ordinateurs

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants :

Paris Airports - Web API Airports Path finding

Exécutif temps réel Pierre-Yves Duval (cppm)

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Systèmes d exploitation

Thierry Déléris. BMC Mainview Data Server Synthèse & Mise en œuvre

Java - la plateforme

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

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

Maarch Framework 3 - Maarch. Tests de charge. Professional Services. 11, bd du Sud Est Nanterre

INSTALLATION ET CONFIGURATION DE OPENLDAP

Concept de machine virtuelle

wxwidgets dans un environnement Microsoft Windows

Machines virtuelles. Brique ASC. Samuel Tardieu Samuel Tardieu (ENST) Machines virtuelles 1 / 40

Mon premier rpm. 7 juin Avant de commencer RPM URPMI RPMBUILD... 2

INF6500 : Structures des ordinateurs. Sylvain Martel - INF6500 1

. Plan du cours. . Architecture: Fermi ( ), Kepler (12-?)

INFO-F-404 : Techniques avancées de systèmes d exploitation

Cours Langage C/C++ Programmation modulaire

Contexte et motivations Les techniques envisagées Evolution des processus Conclusion

Chapitre 1 Windows Server

Gestion mémoire et Représentation intermédiaire

Intégrateur de l ERP Proginov 25 chefs de projet et 32 développeurs dédiés aux clients Proginov

Gérer ses environnements de développement avec Vagrant RMLL 2012

Windows Azure Platform Développez, déployez et administrez pour le Cloud Microsoft

Croisière au cœur d un OS Étape 4 : Mise en place de la pagination

SGM. Master S.T.S. mention informatique, première année. Isabelle Puaut. Septembre Université de Rennes I - IRISA

Windows Server Chapitre 1: Découvrir Windows Server 2008

Module.NET 3 Les Assemblys.NET

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs

Quatrième partie IV. Test. Test 15 février / 71

EN Télécom & Réseau S Utiliser VMWARE

Chapitre I Notions de base et outils de travail

Programmation impérative

Introduction au langage C

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

PocketNet SNMP/Modbus

Vulgarisation Java EE Java EE, c est quoi?

3IS - Système d'exploitation linux - Programmation système

Machines Virtuelles. et bazard autour. Rémi Forax

Résoudre les problèmes PHP, les meilleures (et les pires) techniques

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

Segmentation d'images à l'aide d'agents sociaux : applications GPU

Exigences système Commercial & Digital Printing

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

Transcription:

Mesures de performance pour optimisations Daniel Etiemble de@lri.fr Temps d exécution monoprocesseur NI T exécution = NI * CPI * T c = IPC * F Temps de cycle Cycles/Instruction 10000 1000 100 10 CPU F(MHz) Microarchitecture (IPC) 1 80 84 88 92 96 2000 Fréquence d horloge 2 1

Programmeur et performance Programmes compilés par un compilateur optimisant Niveau d optimisation Performances intrinsèques Structure interne du processeur Jeu d instructions et microarchitecture IA-32 ou autres (RISC, IA-64 ) Pipelines, prédiction de branchement Hiérarchie mémoire Taille et organisation des caches, TLB, Mémoire virtuelle Impact du programmeur : optimisations Hiérarchie mémoire Structure des accès Instructions de préchargement Parallélisme SIMD Instructions «multimédia» 3 Evaluation de performance Temps d exécution du programme Détection des goulots d étranglement Détection des fonctions consommatrices de temps Comprendre la cause du goulot d étranglement Quelques outils Perfmon Compteurs matériels PROF et GPROF PAPI VTune 4 2

Outils élémentaires d évaluation de performance PERFMON Gestionnaire de tâches Windows Information qualitative Petit ensemble d évènements 5 Mesurer le temps d exécution (Linux) Commande Time 6 3

Mesurer le temps d exécution <time.h> (Windows) Déclaration clock_t: begin, end Mesure begin=clock(); // début Temps d exécution à mesurer end=clock(); printf («temps d exécution= %f \n", (double) (end-begin)); Précis pour des temps d exécution supérieurs à la ms 7 Mesure du temps d exécution RDTSC (Read-time stamp counter) Déclaration #define CPUID asm emit 0fh asm emit 0a2h #define RDTSC asm emit 0fh asm emit 031h Fonction unsigned int64 timercall(); Mesure temp_cycles1=timercall(); temp_cycles2=timercall(); base= temp_cycles2 - temp_cycles1; temp_cycles1=timercall(); //CODE A MESURER temp_cycles2=timercall(); elapsed= temp_cycles2 - temp_cycles1 - base; printf("te(cycles)= %f \n",(double)(elapsed)); 8 4

Fonction timercall unsigned int64 timercall(){ unsigned cycles_low, cycles_high; asm { pushad CPUID RDTSC mov cycles_high, edx mov cycles_low, eax popad } return ((unsigned int64)cycles_high << 32) cycles_low;} Mesure: cycles d horloge 9 Outils de profilage PROF (Linux) Temps passé dans chaque fonction ou sous-programme Utilisation gcc -o file -p file.c (compile and link with -p option) file ( run program and produces 'mon.out') prof file > file.prof Exemple VTune (Windows) 10 5

Sortie Prof Liste de fonctions, triée en ordre décroissant [index] secs % cum.% samples function (dso: file, line) [1] 23.380 43.0% 43.0% 2338 scatter (montecarlo: montecarlo.c, 266) [2] 8.410 15.5% 58.5% 841 ran3 (montecarlo: montecarlo.c, 439) [3] 6.050 11.1% 69.6% 605 fastm_cos (libfastm.so: cos.s, 73) [4] 5.730 10.5% 80.2% 573 path (montecarlo: montecarlo.c, 216) [5] 5.560 10.2% 90.4% 556 fastm_log (libfastm.so: log.s, 100) [6] 2.660 4.9% 95.3% 266 getrandomnumber (montecarlo: montecarlo.c, 481) [7] 2.470 4.5% 99.9% 247 doanisotropicscatter (montecarlo: montecarlo.c, 119) [8] 0.040 0.1% 99.9% 4 fastm_exp (libfastm.so: exp.s, 92) [9] 0.020 0.0% 100.0% 2 atan (libm.so: atan.c, 145) [10] 0.010 0.0% 100.0% 1 write (libc.so.1: write.s, 20) 0.010 0.0% 100.0% 1 **OTHER** (includes excluded DSOs, rld, etc.) 11 Profilage via graphe d appels GPROF (Linux) gcc -o file -pg file.c (compile and link with -pg option) file ( run program and produces 'gmon.out') Exemple gprof file > file.gprof called/total parents index %time self descendents called+self name index called/total 3.74 27.14 7/7.main [1] [3] 46.2 3.74 27.14 7.doAnisotropicScatter [3] 9.90 9.20 27621579/27621579.scatter [4] 3.35 4.61 27691579/27691579.path [9] 0.02 0.03 70000/70000.initPhoton [16] 0.03 0.00 70000/70000.score [18] 0.00 0.00 21/53.printf [55] 0.00 0.00 7/7.printTissueParams [93] 0.00 0.00 7/7.clearIntensityArray [91] 0.00 0.00 7/7.dump1 [92] 12 6

Compteurs matériels Pratiquement tout processeur disponible a des compteurs matériels Les interfaces et la documentation sont pauvres ou inexistantes Le matériel et la sémantique diffèrent selon les CPU Utile pour les mesures, l analyse, l optimisation, la modélisation et l évaluation de performance. 13 Données qui peuvent être disponibles Nombre de cycles Nb d instructions FP Nb d instructions entières Nb de chargements/rangements Nb de branchements pris/non pris Mauvaises prédictions de branchement Suspensions pipeline dues au système mémoire Suspensions pipeline dues aux conflits de ressources Echecs caches I/D pour différents niveaux Invalidations cache EchecsTLB Invalidation TLB 14 7

VTune (Intel) L analyseur VTune fournit trois types de techniques d analyse pour différents aspects de la performance de l application Analyse basée sur le temps/évènements pour exécuter et échantillonner le programme et identifier les goulots d étranglement dans le code Analyse du code statique pour analyser les fonctions statiques et indiquer les problèmes de performance Profilage du graphe d appel pour suivre chaque thread et séquence d appels qui prennent le plus de temps 15 VTune Detection des goulots d étranglement 16 8

VTune (Intel) Localisation des goulots d étranglement 17 VTune Graphe d appel 18 9