Performances et optimisations

Save this PDF as:
 WORD  PNG  TXT  JPG

Dimension: px
Commencer à balayer dès la page:

Download "Performances et optimisations"

Transcription

1 Ecole Doctorale MathIf Performances et optimisations Violaine Louvet 1 1 ICJ - CNRS Année

2 Objectifs de ce cours Performances Déterminer les parties du code les plus coûteuses en temps. Déterminer les fonctions sur lesquelles faire porter l effort d optimisation. Savoir utiliser les outils de profiling. Optimisations Réduire le temps de calcul. Réduire l empreinte mémoire. Connaître les outils d optimisation permettant d atteindre ces objectifs.

3 Sommaire 1 Profiling Définition Mesure simple du temps Instrumentation statique gprof gcov Tau Instrumentation dynamique valgrind 2 Optimisation Optimisation haut niveau Optimisation par le compilateur Optimisations des boucles et accès mémoire

4 Sommaire 1 Profiling Définition Mesure simple du temps Instrumentation statique gprof gcov Tau Instrumentation dynamique valgrind 2 Optimisation Optimisation haut niveau Optimisation par le compilateur Optimisations des boucles et accès mémoire

5 Sommaire 1 Profiling Définition Mesure simple du temps Instrumentation statique gprof gcov Tau Instrumentation dynamique valgrind 2 Optimisation Optimisation haut niveau Optimisation par le compilateur Optimisations des boucles et accès mémoire

6 Définitions Outils de profiling Outils indispensables pour optimiser de manière pertinente un code : ils permettent d identifier les parties du code sur lesquelles il va falloir travailler : Temps passé dans chaque partie du programme. Nombre d appels des fonctions. Interaction du programme avec l environnement : accès mémoire, accès concurrents aux données...

7 Définitions Différentes techniques Echantillonnage : l exécution est échantillonnée régulièrement pour savoir quelles fonctions sont appelées. Pas d intrusion mais résultat dépendant notamment de la fréquence d échantillonnage. Instrumentation : Ajoute à chaque appel de fonction une fonction d instrumentation qui va mesurer le temps d appel, le nombre d instructions exécutées... grâce à des compteurs internes au processeur. Emulation : exécute le programme sur un processeur virtuel. Tout peut ainsi être mesuré de manière exacte mais cette méthode est très lente.

8 Sommaire 1 Profiling Définition Mesure simple du temps Instrumentation statique gprof gcov Tau Instrumentation dynamique valgrind 2 Optimisation Optimisation haut niveau Optimisation par le compilateur Optimisations des boucles et accès mémoire

9 Mesure simple du temps Evaluer de façon non intrusive le temps d exécution du programme : utilisation de la commande time. $ time. / prog r e a l 0m2.671 s user 0m2.275 s sys 0m0.327 s real : temps réel écoulé lors de l exécution. user : temps d utilisation CPU en mode utilisateur. sys : temps d utilisation CPU en mode noyau (système).

10 Mesure simple du temps Evaluer plus finement de façon intrusive : utilisation de la routine système gettimeofday qui permet de connaître le temps passé dans une partie du programme. #include <sys / time. h> struct t i m e v a l s t a r t, end ; long i n t useconds ; gettimeofday (& s t a r t, ( struct timezone ) 0 ) ; / / Code a mesurer gettimeofday (&end, ( struct timezone ) 0 ) ; useconds = ( end. tv_sec s t a r t. tv_sec ) end. tv_usec s t a r t. tv_usec ; $ time. / prog Temps t o t a l : r e a l 0m2.671 s user 0m2.275 s sys 0m0.327 s

11 TP : mesure du temps Evaluer de façon globale le temps d exécution du code de multiplication matrice/matrice mat.cpp : utilisation de la commande time. Evaluer plus finement le temps passé dans l initialisation, et dans le calcul du produit : utilisation de la routine gettimeofday.

12 Profiling Techniques précédentes limitées à des évaluations ponctuelles sur le temps d exécution Nécessité d automatiser et de pouvoir avoir d autres données d analyse Intrumentation statique : effectuée au plus tard à la compilation. Instrumentation dynamique : effectuée lors de l exécution. Données recueillies par le profiler Temps d exécution de chaque fonction (profil plat). Graphe d appels du programme. Temps inclusive : fonction appelante + fonction appelée. Temps exclusive : fonction appelante uniquement.

13 Sommaire 1 Profiling Définition Mesure simple du temps Instrumentation statique gprof gcov Tau Instrumentation dynamique valgrind 2 Optimisation Optimisation haut niveau Optimisation par le compilateur Optimisations des boucles et accès mémoire

14 gprof Instructions de profiling ajoutées à la compilation Option de compilation (compilateurs GNU) : -pg Chaque fonction est modifiée à la compilation pour mettre à jour les structures de données stockant la fonction appelante et le nombre d appels. Le temps d exécution est évalué par échantillonnage. Pour des fonctions non instrumentées (appel de bibliothèques par exemple), seul l information du temps passé dans la fonction est disponible. En pratique Compilation : g++ -pg -g prog.cpp -o prog Exécution normale du programme :./prog Génération d un fichier de données gmon.out dans le répertoire courant. Exécution de gprof : gprof prog gmon.out

15 Sorties de gprof Profil plat F l a t p r o f i l e : Each sample counts as 0.01 seconds. % cumulative s e l f s e l f t o t a l time seconds seconds c a l l s s / c a l l s / c a l l name compute ( int, int, double, double ) vsum ( int, double )... Graphe d appels granularity : each sample h i t covers 2 byte ( s ) for 0.23% of 4.26 seconds index % time s e l f children called name <spontaneous > [ 1 ] main [ 1 ] /2 compute ( int, int, double, double ) [ 2 ] /10000 vsum ( int, double ) [ 3 ] /2 main [ 1 ] [ 2 ] compute ( int, int, double, double ) [ 2 ] /10000 main [ 1 ] [ 3 ] vsum ( int, double ) [ 3 ]...

16 Description des sorties de gprof : profil plat % time : pourcentage du temps d exécution total passé à exécuter cette fonction. cumulative seconds : temps total cumulé que le processeur a passé à exécuter cette fonction, ajouté au temps passé à exécuter les fonctions précédentes dans le tableau. self seconds : nombre de secondes passées à exécuter cette seule fonction. calls : nombre d appels de la fonction. self ms/calls : nombre de millisecondes passées dans la fonction par appel. total ms/calls : nombre de millisecondes passées dans cette fontion et ses enfants. name : nom de la fonction

17 Description des sorties de gprof : graphe d appels Différentes parties séparées par des tirets. Chaque partie débute par la ligne primaire : Elle comprend en début de ligne un nombre entre crochets).. Elle se termine par le nom de la fonction concernée. Les lignes précédentes décrivent les fonctions appelantes. Les lignes suivantes décrivent les fonctions appelées : fonctions enfants. Les entrées sont classée par temps passé dans la fonction et ses enfants. index : Index référençant la fonction. % time : pourcentage du temps passé dans la fonction, incluant les enfants. self : temps total passé dans la fonction. Children : temps total passé dans les appels aux enfants. called : nombre d appels de la fonction. Si appels récursif, la sortie est de la forme n+m, n désigne le nombre d appels non récursifs et m le nombre d appels récursifs. name : nom de la fonction avec son index.

18 TP : gprof Utiliser gprof pour retrouver les résultats obtenus précédemment. Sur quelle portion de code faire porter l effort d optimisation?

19 gcov Outil de couverture de code. Permet de savoir quelles lignes de code sont effectivements exécutées et combien de fois elles le sont. Complémentaire de gprof. Permet notamment de vérifier que le jeu de test utilisé pour valider un programme est suffisant. En pratique Compilation : g++ -fprofile-arcs -ftest-coverage prog.cpp -o prog Exécution normale du programme :./prog Génération de fichiers de données *.gcda et *.gcno dans le répertoire courant pour chaque fichier compilé avec les options précédentes. Exécution de gcov : gcov prog.cpp. Génération de fichiers de données *.gcov : indexation des lignes par le nombre d appels par ligne et leur numéro.

20 Description des sorties de gcov Réécriture du programme source en préfixant chaque ligne par le nombre de fois où elle a été exécutée. Les résultats sont clairement dépendants des données : des exécutions avec des données différentes donneront des résultats différents. Pour un branchement, pourcentage représentant le nombre de fois où la branche a été prise, divisé par le nombre de fois où le test a été exécuté. Si la branche n a jamais été exécutée, message «never executed». Pour un appel de fonction, pourcentage indiquant le nombre de fois que l on est revenue de l appel sur le nombre d appels (en général 100% sauf en cas d exit dans la fonction). Les traces d exécutions (contenues dans les fichiers.gcda) s accumulent : ceci permet de mener des campagnes de statistiques sur un grand nombre de données, afin d obtenir des informations plus fiables.

21 Exemple de sorties de gcov Extrait de test3.cpp.gcov 2: 7: void compute ( i n t n1, i n t n2, double mat, double vmean ) : 8: 10002: 9: for ( i n t j = 0 ; j < n2 ; j ++) : 10: for ( i n t i = 0 ; i < n1 ; i ++) : 11: mat [ i ] [ j ] = rand ( ) ; : 12: 10002: 13: for ( i n t j = 0 ; j < n2 ; j ++) { 10000: 14: double tmp = 0. ; : 15: for ( i n t i = 0 ; i < n1 ; i ++) { : 16: tmp += mat [ i ] [ j ] ; : 17: } 10000: 18: vmean [ j ] = tmp / n1 ; : 19: } 2: 2 0 : } : 21: 10000: 22: double vsum ( i n t n1, double vect ) { 10000: 23: double mn = 0. ; : 24: for ( i n t j = 0 ; j < n1 ; j ++) : 25: mn += vect [ j ] ; 10000: 26: return mn; : 2 7 : }

22 Exemple de sorties de gcov Extrait de gcov -f test3.cpp -f : statistiques par fonction plutôt que par fichier. Function _Z7computeiiPPdS_ Lines executed :100.00% of 10 Function main Lines executed :83.33% of F i l e t e s t 3. cpp Lines executed :90.00% of 40 t e s t 3. cpp : c r e a t i n g t e s t 3. cpp. gcov

23 TP : gcov Utiliser gcov pour identifier les parties de code inutiles.

24 Tau, Tuning and Analysis Utilities Limites de gprof TAU Contenu des traces assez limité. On veut pouvoir stocker dans ces traces des évènements définis par l utilisateur. Profilage des applications parallèles. Ensemble d outils d analyse de performances de programmes. Permet de traiter beaucoup plus d informations que gprof : applications parallèles : informations par processus, par thread, par machine, temps inclusif et exclusif pour chacune des fonctions, accès aux compteurs internes, information par classe, par instance, séparation des données selon les différentes instanciation des templates, possibilité de profiler certaines parties arbitraires du code, statistiques sur des évènements définis par l utilisateur...

25 Sommaire 1 Profiling Définition Mesure simple du temps Instrumentation statique gprof gcov Tau Instrumentation dynamique valgrind 2 Optimisation Optimisation haut niveau Optimisation par le compilateur Optimisations des boucles et accès mémoire

26 Valgrind Suite d outils de profilage et de débogage mémoire qui permet de détecter des problèmes de gestion mémoire dans des programmes écrits en C / C++ : Memcheck : un détecteur de fuites mémoires Cachegrind : un simulateur de caches Callgrind : un profileur Fonctionnement Le code est exécuté dans une machine virtuelle émulant un processeur équipé de nombreux outils d analyse donnant des informations poussées sur le comportement d un programme, qui ne pourraient être obtenues à l aide d un processeur matériel.

27 Débogage mémoire En pratique Compilation du code : $ g++ g prog. cpp o prog On peut vérifier que l exécution du code se déroule correctement : $. / prog Fin du programme Exécution sous valgrind : $ v a l g r i n d t o o l =memcheck. / prog

28 Débogage mémoire : analyse des sorties ==28889== I n v a l i d w r i t e of s ize 8 ==28889== at 0x400C58 : main ( prog. cpp : 5 3 ) ==28889== Address 0x59341e0 i s 0 bytes a f t e r a block of s ize 800 a l l o c d ==28889== at 0x4C2188C : operator new [ ] ( unsigned long ) ( vg_replace_mallo ==28889== by 0x400C28 : main ( prog. cpp : 5 2 ) Fin du programme ==28889== ==28889== ERROR SUMMARY: 1 e r r o r s from 1 contexts ( suppressed : 8 from 1) ==28889== malloc / f r e e : i n use at e x i t : 165,600 bytes i n 206 blocks. ==28889== malloc / f r e e : 206 a l l o c s, 0 frees, 165,600 bytes a l l o c a t e d. ==28889== For counts of detected errors, rerun with : v ==28889== searching for p o i n t e r s to 206 not freed blocks. ==28889== checked 183,712 bytes. ==28889== ==28889== LEAK SUMMARY: ==28889== d e f i n i t e l y l o s t : 165,600 bytes i n 206 blocks. ==28889== p o s s i b l y l o s t : 0 bytes i n 0 blocks. ==28889== s t i l l reachable : 0 bytes i n 0 blocks. ==28889== suppressed : 0 bytes i n 0 blocks.

29 Débogage mémoire : évaluer les fuites mémoires $ v a l g r i n d t o o l =memcheck leak check= f u l l. / prog ==28904== ==28904== 800 bytes i n 1 blocks are d e f i n i t e l y l o s t i n l oss record 1 of 8 ==28904== at 0x4C2188C : operator new [ ] ( unsigned long ) ( vg_replace_mallo ==28904== by 0x400C8E : main ( prog. cpp : 5 6 ) ==28904== ==28904== ==28904== 800 bytes i n 1 blocks are d e f i n i t e l y l o s t i n l oss record 2 of 8 ==28904== at 0x4C2188C : operator new [ ] ( unsigned long ) ( vg_replace_mallo ==28904== by 0x400C78 : main ( prog. cpp : 5 5 ) ==28904== ==28904== ==28904== 800 bytes i n 1 blocks are d e f i n i t e l y l o s t i n l oss record 3 of 8 ==28904== at 0x4C2188C : operator new [ ] ( unsigned long ) ( vg_replace_mallo ==28904== by 0x400C57 : main ( prog. cpp : 5 3 ) ==28904== ==28904== ==28904== 80,800 (800 d i r e c t, 80,000 i n d i r e c t ) bytes i n 1 blocks are d e f i ==28904== at 0x4C2188C : operator new [ ] ( unsigned long ) ( vg_replace_mallo ==28904== by 0x400BD8 : main ( prog. cpp : 4 9 )

30 Utilisation du profiler $ v a l g r i n d t o o l = c a l l g r i n d dump i n s t r =yes. / prog dump-instr=yes : permet d enregistrer les instructions exécutées (facilite la comparaison avec le source). Génération d un fichier callgrind.out.numéro_pid. Utilisation de l outil KCacheGrind pour l analyser.

31 kcachegrind

32 Graphe d appels

33 Analyse de l utilisation des caches $ v a l g r i n d t o o l =cachegrind. / prog Il est possible de spécifier la configuration des caches I1/D1/L2. ==29727== ==29727== I r e f s : 3,358,368 ==29727== I1 misses : 1,288 ==29727== L2i misses : 1,271 ==29727== I1 miss r a t e : 0.03% ==29727== L2i miss r a t e : 0.03% ==29727== ==29727== D r e f s : 1,475,337 (1,149,931 rd + 325,406 wr ) ==29727== D1 misses : 16,516 ( 12,225 rd + 4,291 wr ) ==29727== L2d misses : 9,531 ( 5,755 rd + 3,776 wr ) ==29727== D1 miss r a t e : 1.1% ( 1.0% + 1.3% ) ==29727== L2d miss r a t e : 0.6% ( 0.5% + 1.1% ) ==29727== ==29727== L2 r e f s : 17,804 ( 13,513 rd + 4,291 wr ) ==29727== L2 misses : 10,802 ( 7,026 rd + 3,776 wr ) ==29727== L2 miss r a t e : 0.2% ( 0.1% + 1.1% )

34 Usage des caches

35 TP : valgrind Utiliser valgrind et son outil callgrind pour retrouver les informations de profilage déjà obtenues. Utiliser valgrind et son outil memcheck pour évaluer les problèmes liés à la mémoire (et notamment les aspects fuite mémoire). Utiliser valgrind et son outil cachegrind pour évaluer les problèmes liés à l utilisation des caches. Vous pouvez utiliser Kcachegrind pour visualiser ces analyses.

36 Sommaire 1 Profiling Définition Mesure simple du temps Instrumentation statique gprof gcov Tau Instrumentation dynamique valgrind 2 Optimisation Optimisation haut niveau Optimisation par le compilateur Optimisations des boucles et accès mémoire

37 Niveaux d optimisation Différents niveaux d optimisations : niveau algorithmique et numérique : il est souvent plus efficace de choisir un algorithme, une structure de données ou une méthode numériques plus adaptés au problème que de s attaquer à de l optimisation bas niveau. niveau intermédiaire : choix du langage, utilisation de bibliothèques existantes, parallélisation. bas niveau : travail sur les sources en lien avec le profiler, instructions sse, options du compilateur,...

38 Sommaire 1 Profiling Définition Mesure simple du temps Instrumentation statique gprof gcov Tau Instrumentation dynamique valgrind 2 Optimisation Optimisation haut niveau Optimisation par le compilateur Optimisations des boucles et accès mémoire

39 Optimisation haut niveau Réutilisation : il y a de fortes chances que les opérations numériques nécessaires au code aient déjà été écrites : utiliser des bibliothèques existantes, souvent très optimisées et fiables. Algorithme : évaluer la complexité de l algorithme utilisé (nombre d opérations), vérifier qu il n en existe pas de moins coûteux en temps, en mémoire, parallélisables... Accès aux données : évaluer la pertinence de la structure de données : l accès est-il efficace, adapté à l algorithme utilisé? Méthode numérique : la méthode numérique choisit est-elle adaptée au problème, parallélisable, cohérente avec les structures de données...? Ces optimisations pouvaient suffire il y a quelques années. Ce n est plus le cas : complexité des architectures, augmentation des unités de calcul, problème de l accès à la mémoire... La puissance des machines n est plus facilement accessible

40 Sommaire 1 Profiling Définition Mesure simple du temps Instrumentation statique gprof gcov Tau Instrumentation dynamique valgrind 2 Optimisation Optimisation haut niveau Optimisation par le compilateur Optimisations des boucles et accès mémoire

41 Optimisation par le compilateur Idéalement, le compilateur optimise automatiquement le code. En pratique, il n a pas toujours assez d informations (notamment la taille des données connue au run-time,...). allocation optimale des registres ; élimination des redondances ; optimisation des boucles, en ne conservant à l intérieur que ce qui est modifié ; optimisation du pipeline ; optimisation du choix des instructions.

42 Aider le compilateur Code peu optimisé par le compilateur car il est souvent incapable de savoir si le code de la boucle modifie ou non le compteur d itérations : un pointeur ou une référence pourrait le modifier. void v e c t o r : : p r i n t ( ) const { for ( i n t i = 0; i < n ; ++ i ).... ; } On indique clairement qu on utilise un nombre d itérations fixé à l avance et qui ne sera jamais modifié, autorisant le compilateur à effectuer des optimisations plus agressives. void v e c t o r : : p r i n t ( ) const { const i n t nb = n ; for ( i n t i = 0; i < nb ; ++ i ).... ; }

43 Aider le compilateur Mot-clé inline : pas de génération de la fonction f. i n l i n e i n t f ( i n t a, i n t b ) { return a b ; } i n t g ( i n t a ) { switch ( a ) { case 10: return f ( a, a ) ; case 11: case 12: return f ( a 2, a ) ; case 1200: return f ( a 2, a ) ; default : return f ( a, a ) ; } } Ce code sera traduit par le compilateur en : i n t g ( i n t a ) { i n t eax, b ; i f ( a > 12) / / a == 1200 goto L14 ; eax = a 2; i f ( a >= 11) / / a == 11,12 goto L15 ; eax=100; / / = b=10; L17 : i f ( a == b ) / / a == 10 goto L2 ; / / cas " d e f a u l t " eax=a ; L15 : eax=eax a ; L2 : return eax ; L14 : eax = ; / / = 1200 (1200 2) b = 1200; goto L17 ; }

44 Sommaire 1 Profiling Définition Mesure simple du temps Instrumentation statique gprof gcov Tau Instrumentation dynamique valgrind 2 Optimisation Optimisation haut niveau Optimisation par le compilateur Optimisations des boucles et accès mémoire

45 Pourquoi est-ce critique? Hiérarchie mémoire des processeurs actuels. En général, les boucles concentrent en peu de ligne un maximum de temps de calcul. Le compilateur fait ce qu il peut mais il ne peut pas tout. Comportement régulier et répétitif : relativement simple à analyser statiquement. Objectifs Améliorer l accès aux données et donc leur localité spatiale. Aller plus vite. Réduire la surcharge dûe au contrôle des boucles. Investiguer les possibilité de vectorisation ou de parallélisation.

46 Invariant des boucles Sortir les invariants des boucles : Code original : for ( i n t i =0; i <10; i ++) a [ i ] = b [ i ] + c / d ; Code optimal : tmp = c / d ; for ( i n t i =0; i <10; i ++) a [ i ] = b [ i ] + tmp ;

47 Déroulage de boucles Loop Unrolling : réduit le coût de la gestion de la boucle (nombre de comparaison total, branchements, incréments) et augmente le parallélisme d instructions potentiellement exploitable par les processeurs. Code original : for ( i n t i =0; i <50; i ++) a [ i ] = b [ i ] ; Code optimal : for ( i n t i =0; i <50; i +2) { a [ i ] = b [ i ] ; a [ i +1] = b [ i + 1 ] ; }

48 Permutation de boucles Permutation des boucles imbriquées : alignement en mémoire des accès aux tableaux, réduction des défauts de cache. Ce n est pas toujours légal : attention aux dépendances des accès aux données dans les boucles. Code original : for ( i n t j =0; j <m; j ++) for ( i n t i =0; i <n ; i ++) a [ i ] [ j ] = 0. ; Code optimal : for ( i n t i =0; i <n ; i ++) for ( i n t j =0; j <m; j ++) a [ i ] [ j ] = 0. ;

49 Fusion de boucles Fusion de boucles : améliore la localité temporelle des données et réduit le nombre de branchements. Code original : for ( i n t i =0; i <n ; i ++) a [ i ] =... ; for ( i n t i =0; i <n ; i ++)... =... a [ i ]... ; Code optimal : l accès en lecture de a[i] se fait encore après son accès en écriture. La dépendance des données est respectée. for ( i n t i =0; i <n ; i ++) { a [ i ] =... ;... =... a [ i ]... ; }

50 Distribution de boucles Distribution de boucles : améliore la vectorisation et/ou la parallélisation des boucles et optimise l usage du cache pour chaque boucle. Code original : for ( i n t i =1; i <n ; i ++) { a [ i +1] = b [ i 1] + c [ i ] ; b [ i ] = a [ i ] k ; c [ i ] = b [ i ] 1; } Code optimal : for ( i n t i =1; i <n ; i ++) { a [ i +1] = b [ i 1] + c [ i ] ; b [ i ] = a [ i ] k ; } for ( i n t i =1; i <n ; i ++) c [ i ] = b [ i ] 1;

51 Boucles avec condition Eliminer les conditions des boucles : pas de test ni de branchement dans le corps de la boucle. Code optimal : Code original : for ( i n t i =0; i <n ; i ++) { a [ i ] = a [ i ] + b [ i ] ; i f ( expression ) d [ i ] = 0; } i f ( expression ) { for ( i n t i =0; i <n ; i ++) { a [ i ] = a [ i ] + b [ i ] ; d [ i ] = 0; } } else { for ( i n t i =0; i <n ; i ++) { a [ i ] = a [ i ] + b [ i ] ; } }

52 Partage de l espace d itération Partage de la boucle : permet souvent d éliminer des itérations problématiques. Code original : for ( i n t i =0; i <n ; i ++) { a [ i ] = b [ i ] + c [ i ] ; i f ( i > 10) d [ i ] = a [ i ]+ a [ i 10]; } Code optimal : for ( i n t i =0; i <=10; i ++) a [ i ] = b [ i ] + c [ i ] ; for ( i n t i =11; i <n ; i ++) { a [ i ] = b [ i ] + c [ i ] ; d [ i ] = a [ i ]+ a [ i 10]; }

53 Expansion des scalaires Expansion des scalaires : élimine de «fausses» dépendances. Code original : for ( i n t i =0; i <n ; i ++) { t = a [ i ] + b [ i ] ; c [ i ] = t + 1; } Code optimal : la boucle peut maintenant être parallélisée. i f ( n >= 1) { t = new double [ n ] ; for ( i n t i =0; i <n ; i ++) { t [ i ] = a [ i ] + b [ i ] ; c [ i ] = t [ i ] + 1; } }

54 Partitionnement de boucles Calcul par blocs : adapte la granularité (en gros la taille des blocs) à la hiérarchie mémoire. Code original : for ( i n t i =0; i <n ; i ++) for ( i n t j =0; j <n ; j ++) for ( i n t k =0; k<n ; k ++) c [ i ] [ j ] += a [ i ] [ k ] b [ k ] [ j ] ; Code optimal : on choisit S pour qu un bloc de a, de b et de c tiennent dans le cache. for ( i n t i i =0; i i <n ; i i +=S) for ( i n t j j =0; j j <n ; j j +=S) for ( i n t kk =0; kk<n ; kk+=s) for ( i n t i = i i ; i < i i +S ; i ++) for ( i n t j = j j ; j < j j +S ; j ++) for ( i n t k=kk ; k<kk+s ; k ++) c [ i ] [ j ] += a [ i ] [ k ] b [ k ] [ j ] ;

55 TP : optimisation A partir des éléments issus du profilage, retravailler les sources pour améliorer le temps de calcul et l utilisation de la mémoire. Tester les différentes options d optimisation du compilateur. Il existe déjà des bibliothèques (blitz, boost/ublas...) permettant de faire ce type de manipulations : les utiliser pour améliorer encore le code.

Compte rendu TP No3 : «Analyse dynamique de programme»

Compte rendu TP No3 : «Analyse dynamique de programme» LO20 : Vérification, validation et sûreté de fonctionnement http://www.genie logiciel.utc.fr/lo20/ Compte rendu TP No3 : «Analyse dynamique de programme» Le second TP concerne l'analyse dynamique de programme.

Plus en détail

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

Profiling. École d Automne Informatique Scientifique 3 Décembre 2008. Profiling. Romaric DAVID. Plan. Introduction. Profiling É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

Plus en détail

Analyse de performance et optimisation. David Geldreich (DREAM)

Analyse de performance et optimisation. David Geldreich (DREAM) Analyse de performance et optimisation David Geldreich (DREAM) Plan de l exposé Analyse de performance Outils Optimisation Démonstrations Analyse de performance Pas d optimisation sans analyse de performance

Plus en détail

Développement Orienté Aspect et Optimisation

Développement Orienté Aspect et Optimisation Développement Orienté Aspect et Optimisation Pierre Schweitzer Mardi 4 Juin 2013 LIMOS UMR CNRS 6158 Clermont Université - Université Blaise Pascal LPC UMR CNRS 6533 Clermont Université - Université Blaise

Plus en détail

intro aux SE et mise en œuvre sous UNIX

intro aux SE et mise en œuvre sous UNIX TP: Programmer sous GNU/LINUX Ce premier TP introductif à la programmation en C va vous familiariser avec : la syntaxe du langage ; la mise en oeuvre du compilateur ; le préprocesseur cpp ; l'utilisation

Plus en détail

Outils d analyse de performance pour le HPC

Outils d analyse de performance pour le HPC Outils d analyse de performance pour le HPC François Trahay Master MOPS Décembre 2013 Plan 1 Introduction.................................................................... 3 2 Outils de profiling..............................................................10

Plus en détail

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

Plan global Outils de développement et compilation. Plan. Objectifs des outils présentés. IDE, GCC/Clang, ASAN, perf, valgrind, GDB. global Outils de développement et compilation IDE, GCC/Clang, ASAN, perf, valgrind, GDB Timothée Ravier LIFO, INSA-CVL, LIPN 1 re année cycle ingénieur STI 2013 2014 1 / 36 Objectifs des outils présentés

Plus en détail

Temps d exécution monoprocesseur

Temps d exécution monoprocesseur 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)

Plus en détail

Introduction aux systèmes d exploitation

Introduction aux systèmes d exploitation Introduction aux systèmes d exploitation Le système d exploitation est un ensemble de logiciels qui pilotent la partie matérielle d un ordinateur. Les principales ressources gérées par un système d exploitation

Plus en détail

Performances et optimisations

Performances et optimisations Performances et optimisations Outils pour le calcul scientifique à haute performance École doctorale sciences pour l ingénieur juin 2001 Philippe MARQUET phm@lifl.fr Laboratoire d informatique fondamentale

Plus en détail

Architecture des ordinateurs. Optimisation : pipeline. Pipeline (I) Pipeline (II) Exemple simplifié : Instructions de type R

Architecture des ordinateurs. Optimisation : pipeline. Pipeline (I) Pipeline (II) Exemple simplifié : Instructions de type R Architecture des ordinateurs Licence Informatique - Université de Provence Jean-Marc Talbot Optimisation : pipeline jtalbot@cmi.univ-mrs.fr L3 Informatique - Université de Provence () Architecture des

Plus en détail

Le «thread local storage» et son utilisation

Le «thread local storage» et son utilisation Résumé Les allocations mémoire sont généralement plus coûteuses que d ordinaire en environnement multi-thread. En effet, la majorité des algorithmes d allocation en usage dans les systèmes d exploitation

Plus en détail

Principes de la programmation impérative

Principes de la programmation impérative Séquence d instructions Variables et types Types élaborés Procédures, arguments Gestion de la mémoire Langage compilé, interprété Principes de la programmation impérative Séquence d instructions Variables

Plus en détail

Mesurer les performances (CPU) sous Linux

Mesurer les performances (CPU) sous Linux Titre : Mesurer les performances (CPU) sous Linux Date : 22/07/2015 Page : 1/7 Mesurer les performances (CPU) sous Linux Résumé : Il existe des outils permettant de tracer les temps CPU utilisés (profiling).

Plus en détail

Une introduction au langage C++ Marc Jachym, Lurpa

Une introduction au langage C++ Marc Jachym, Lurpa Une introduction au langage C++ Marc Jachym, Lurpa Janvier 2008 À l origine, le langage C Langage procédural créé dans les années 1970 aux laboratoires Bell (ATT : télécoms américains) en vue d écrire

Plus en détail

Mieux programmer en Java

Mieux programmer en Java Mieux programmer en Java Peter Haggar Éditions Eyrolles ISBN : 2-212-09171-0 2000 PARTIE 1 l exécution de l instruction return, cependant, le contrôle est transféré au bloc finally en // 2. Cela provoque

Plus en détail

Entraînement au concours ACM-ICPC

Entraînement au concours ACM-ICPC Entraînement au concours ACM-ICPC Déboguage et profilage de programmes C++ Page 1 / 11 Avec un IDE (environnement de développement intégré) Eclipse CDT, NetBeans, Visual C++, XCode, KDeveloper... Fonctionnalités

Plus en détail

Méthodes de test. Mihaela Sighireanu

Méthodes de test. Mihaela Sighireanu UFR d Informatique Paris 7, LIAFA, 175 rue Chevaleret, Bureau 6A7 http://www.liafa.jussieu.fr/ sighirea/cours/methtest/ Partie I 1 Propriétés 2 Un peu de génie logiciel de test 3 Eléments Problèmes Point

Plus en détail

Processus de compilation Préprocesseur Compilation Assemblage Edition de liens. ASR Période 2. Sylvain Jubertie. Département Informatique IUT Orléans

Processus de compilation Préprocesseur Compilation Assemblage Edition de liens. ASR Période 2. Sylvain Jubertie. Département Informatique IUT Orléans ASR Période 2 Sylvain Jubertie Département Informatique IUT Orléans 1 Processus de compilation 2 Préprocesseur 3 Compilation 4 Assemblage 5 Edition de liens Prérequis Prérequis langage C langage assembleur

Plus en détail

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE QCM Remarque : - A une question correspond au moins 1 réponse juste - Cocher la ou les bonnes réponses Barème : - Une bonne réponse = +1 - Pas de réponse = 0

Plus en détail

Chargement de processus Allocation contigüe Allocation fragmentée Gestion de pages. Gestion mémoire. Julien Forget

Chargement de processus Allocation contigüe Allocation fragmentée Gestion de pages. Gestion mémoire. Julien Forget Julien Forget Université Lille 1 École Polytechnique Universitaire de Lille Cité Scientifique 59655 Villeneuve d Ascq GIS 3 2011-2012 1 / 46 Rôle du gestionnaire de mémoire Le gestionnaire de mémoire a

Plus en détail

Algorithmique, C++ Recollement d'images

Algorithmique, C++ Recollement d'images Algorithmique, C++ Recollement d'images Introduction à C++ Quatrième partie Quelques outils pour améliorer le code ou vous simplifier la vie Plan de la séance Compilation : optimisation Profiling et débogage

Plus en détail

Optimisation de code

Optimisation de code Optimisation de code Brique ASC Samuel Tardieu sam@rfc1149.net École Nationale Supérieure des Télécommunications Samuel Tardieu (ENST) Optimisation de code 1 / 77 But L optimisation cherche à améliorer

Plus en détail

WP2T23 «APPLICATION de de REFERENCE» Prototypage rapide d une application de traitement d images avec SynDEx EADS

WP2T23 «APPLICATION de de REFERENCE» Prototypage rapide d une application de traitement d images avec SynDEx EADS WP2T23 «APPLICATION de de REFERENCE» Prototypage rapide d une application de traitement d images avec SynDEx EADS Avec l appui de l INRIA www-rocq.inria.fr/syndex 1 PLAN I. Présentation du sujet II. Présentation

Plus en détail

Analyse de performance, monitoring

Analyse de performance, monitoring Analyse de performance, monitoring Plan Principes de profilage Projet TPTP dans Eclipse Utilisation des profiling tools de TPTP Philippe Collet Master 1 Informatique 2009-2010 http://deptinfo.unice.fr/twiki/bin/view/minfo/gl

Plus en détail

TPS 5 : Prise en main du système de Développement IMAP137L. Préparation. Objectifs : Manipulation :

TPS 5 : Prise en main du système de Développement IMAP137L. Préparation. Objectifs : Manipulation : TPS 5 : Prise en main du système de Développement IMAP137L Préparation 1. Prendre connaissance de l annexe de ce TP et revoir les pages 110-126 du cours. 2. Quels sont les principaux constituants du Système

Plus en détail

Noyau d'un système d'exploitation INF2610 Chapitre 7 : Gestion de la mémoire (annexe 2)

Noyau d'un système d'exploitation INF2610 Chapitre 7 : Gestion de la mémoire (annexe 2) INF2610 Chapitre 7 : Gestion de la mémoire (annexe 2) Département de génie informatique et génie logiciel Hiver 2014 Exemple 1 : Espace virtuel d un processus Où seront stockées les données des variables

Plus en détail

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3. 1. Structure d un programme C Un programme est un ensemble de fonctions. La fonction "main" constitue le point d entrée pour l exécution. Un exemple simple : #include int main() { printf ( this

Plus en détail

C, seconde séance. le if then else n est pas une expression, mais une instruction ( Caml) se souvenir de:

C, seconde séance. le if then else n est pas une expression, mais une instruction ( Caml) se souvenir de: C, seconde séance le if then else n est pas une expression, mais une instruction ( Caml) se souvenir de: false, c est 0 ( \0 aussi) test d égalité: == pour printf: %d entier, %f flottant, %c caractère,

Plus en détail

Cours d Analyse, Algorithmique Elements de programmation

Cours d Analyse, Algorithmique Elements de programmation 1 de 33 Cours d Analyse, Algorithmique Elements de programmation Florent Hivert Mél : Florent.Hivert@lri.fr Adresse universelle : http://www.lri.fr/ hivert 2 de 33 Données et instructions Un programme

Plus en détail

Machines virtuelles. Brique ASC. Samuel Tardieu sam@rfc1149.net. Samuel Tardieu (ENST) Machines virtuelles 1 / 40

Machines virtuelles. Brique ASC. Samuel Tardieu sam@rfc1149.net. Samuel Tardieu (ENST) Machines virtuelles 1 / 40 Machines virtuelles Brique ASC Samuel Tardieu sam@rfc1149.net École Nationale Supérieure des Télécommunications Samuel Tardieu (ENST) Machines virtuelles 1 / 40 Machines virtuelles La compilation peut

Plus en détail

Introduction au langage C - types et variables

Introduction au langage C - types et variables Chapitre 2 Introduction au langage C - types et variables 1 Le Langage C Le langage C est un langage de bas niveau dans le sens où il permet l accès à des données que manipulent les ordinateurs (bits,

Plus en détail

Utilisation de SVN. 1 Introduction. 2 Architecture. 3 Références et aide en ligne

Utilisation de SVN. 1 Introduction. 2 Architecture. 3 Références et aide en ligne N7 1IMA TECHNOLOGIE OBJET TP 3 18/02/2015 (Séance TP 2) Objectifs : Comprendre le principe d un outil de gestion de configuration Savoir utiliser SVN (subversion) 1 Introduction Pour travailler en groupe

Plus en détail

Organisation des données et structures de stockage

Organisation des données et structures de stockage ING2 - ING3 Nvx 2009-2010 Organisation des données et structures de stockage I. Stockage de l information en C Ce chapitre rappelle brièvement et complète certaines notions de base vues en première année

Plus en détail

Optimisation de requêtes. I3009 Licence d informatique 2015/2016. Traitement des requêtes

Optimisation de requêtes. I3009 Licence d informatique 2015/2016. Traitement des requêtes Optimisation de requêtes I3009 Licence d informatique 2015/2016 Cours 5 - Optimisation de requêtes Stéphane.Gançarski Stephane.Gancarski@lip6.fr Traitement et exécution de requêtes Implémentation des opérateurs

Plus en détail

Informatique Embarquée M2 / 2014. Quelle heure est-il?

Informatique Embarquée M2 / 2014. Quelle heure est-il? Informatique Embarquée M2 / 2014 Quelle heure est-il? 2014 FA-P7-Info Emb. 1 Différents Temps Temps «horloge murale» Avance sans arrêt, quelque soit l'activité des processus, processeurs Temps CPU N'augmente

Plus en détail

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes

Plus en détail

Eléments de syntaxe du langage Java

Eléments de syntaxe du langage Java c jan. 2014, v3.0 Java Eléments de syntaxe du langage Java Sébastien Jean Le but de ce document est de présenter es éléments de syntaxe du langage Java : les types primitifs, les opérateurs arithmétiques

Plus en détail

Comment compiler un programme MATLAB

Comment compiler un programme MATLAB Comment compiler un programme MATLAB 1- Introduction Le compilateur MATLAB génère un code source C à partir d une fonction MATLAB. Le code C généré par le compilateur MATLAB peut être: soit un code source

Plus en détail

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles) 1/4 Objectif de ce cours /4 Objectifs de ce cours Introduction au langage C - Cours Girardot/Roelens Septembre 013 Du problème au programme I passer d un problème exprimé en français à la réalisation d

Plus en détail

1 Notions de base 1.1 Structure d'un programme

1 Notions de base 1.1 Structure d'un programme 1 Notions de base 1.1 Structure d'un programme Le langage C++ contient le langage C : tout programme écrit en C à la norme ANSI doit pouvoir être compilé par un compilateur C++. C++ fait la diérence entre

Plus en détail

La mémoire. Polytech Paris-Sud Cycle ingénieur de la filière étudiant. Louis Mandel Université Paris-Sud 11 Louis.Mandel@lri.

La mémoire. Polytech Paris-Sud Cycle ingénieur de la filière étudiant. Louis Mandel Université Paris-Sud 11 Louis.Mandel@lri. La mémoire Polytech Paris-Sud Cycle ingénieur de la filière étudiant Louis Mandel Université Paris-Sud 11 Louis.Mandel@lri.fr année 2012/2013 Aspects matériels de la mémoire Types de mémoires Type Accès

Plus en détail

Les Outils. 1)Scanners.

Les Outils. 1)Scanners. Les Outils. 1)Scanners. Une série de programmes analyseurs forment les outils d analyse. Chacun traite un langage spécifique. L objectif est de : décomposer un langage particulier ; reconstituer les éléments,

Plus en détail

Développer des solutions technologiques basées sur de l électronique

Développer des solutions technologiques basées sur de l électronique Altronic Tunisie ALTRONIC s attache à faciliter la diffusion et le transfert des technologies et des connaissances en électronique vers les laboratoires de recherche publics, industriels, les start-up

Plus en détail

Chapitre 1 Introduction

Chapitre 1 Introduction Chapitre 1 Introduction Jean Privat Université du Québec à Montréal INF7330 Construction de logiciels Diplôme d études supérieures spécialisées en systèmes embarqués Automne 2012 Jean Privat (UQAM) 01

Plus en détail

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

Programmation C. Apprendre à développer des programmes simples dans le langage C Programmation C Apprendre à développer des programmes simples dans le langage C Notes de cours sont disponibles sur http://astro.u-strasbg.fr/scyon/stusm (attention les majuscules sont importantes) Modalités

Plus en détail

Introduction à Make et aux fonctions pseudo-aléatoires

Introduction à Make et aux fonctions pseudo-aléatoires Introduction à Make et aux fonctions pseudo-aléatoires 1 Introduction à Make Support de TP C Make est un outil de programmation, dont une version est disponible pour les systèmes Unix sous la licence GNU

Plus en détail

Architecture des calculateurs

Architecture des calculateurs Chapitre 1 Architecture des calculateurs 1.1 Introduction Ce paragraphe n a pas la prétention de présenter un cours d informatique. D une manière générale, seuls les caractéristiques architecturales qui

Plus en détail

I. Introduction. Quelques définitions (qu est-ce qu une machine parallèle, un programme parallèle, pourquoi le parallélisme?)

I. Introduction. Quelques définitions (qu est-ce qu une machine parallèle, un programme parallèle, pourquoi le parallélisme?) I. Introduction Quelques définitions (qu est-ce qu une machine parallèle, un programme parallèle, pourquoi le parallélisme?) Différents types d architectures parallèles Programmation parallèle Mesure du

Plus en détail

Tableaux (introduction) et types de base

Tableaux (introduction) et types de base Tableaux (introduction) et types de base A. Motivation..................................................... 4 B. Les tableaux.................................................... 5 C. Construction des tableaux.......................................

Plus en détail

1 Hello world. 2 Sorties en C. DUT Informatique M3101 Système S3 2015 / 2016. Travaux Pratiques n o 0 : Rappels de programmation C

1 Hello world. 2 Sorties en C. DUT Informatique M3101 Système S3 2015 / 2016. Travaux Pratiques n o 0 : Rappels de programmation C DUT Informatique 2015 / 2016 Travaux Pratiques n o 0 : Rappels de programmation C Nom(s) : Groupe : Date : Objectifs : renouer avec les notions, la manipulation et l écriture de programmes C, en particulier

Plus en détail

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

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants : GIF-3002 SMI et Architecture du microprocesseur Ce cours discute de l impact du design du microprocesseur sur le système entier. Il présente d abord l architecture du cœur ARM Cortex M3. Ensuite, le cours

Plus en détail

C++ / MC-II1 - Cours n o 3 Allocation Mémoire et Constructeurs

C++ / MC-II1 - Cours n o 3 Allocation Mémoire et Constructeurs C++ / MC-II1 - Cours n o 3 Allocation Mémoire et Constructeurs Sebastien.Kramm@univ-rouen.fr IUT GEII Rouen 2010-2011 S. Kramm (IUT Rouen) MCII1 - Cours 3 2010-2011 1 / 47 Sommaire 1 Rappels de C et définitions

Plus en détail

Système de Gestion de Fichiers

Système de Gestion de Fichiers Chapitre 2 Système de Gestion de Fichiers Le système de gestion de fichiers est un outil de manipulation des fichiers et de la structure d arborescence des fichiers sur disque et a aussi le rôle sous UNIX

Plus en détail

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview. ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview. Sciences et Technologies de l Industrie et du Développement Durable Formation des enseignants parcours : ET24 Modèle de

Plus en détail

Programmation Répartie - Langage C

Programmation Répartie - Langage C frederic.guinand@univ-lehavre.fr IUT Le Havre Plan les bases quelques rappels de langage C les structures de contrôle conditionnelles les structures de contrôle itératives les tableaux les pointeurs les

Plus en détail

Vers un outil d analyse de l empreinte mémoire d un code de calcul scientifique.

Vers un outil d analyse de l empreinte mémoire d un code de calcul scientifique. Vers un outil d analyse de l empreinte mémoire d un code de calcul scientifique. Ameziane NAIT ABDELAZIZ Département informatique, filière PRCD Maître de stage : Bruno LATHUILIERE Tuteur : Brice GOGLIN

Plus en détail

1 Description générale de VISFIELD

1 Description générale de VISFIELD Guide d utilisation du logiciel VISFIELD Yann FRAIGNEAU LIMSI-CNRS, Bâtiment 508, BP 133 F-91403 Orsay cedex, France 11 décembre 2012 1 Description générale de VISFIELD VISFIELD est un programme écrit

Plus en détail

Architecture des ordinateurs

Architecture des ordinateurs Architecture des ordinateurs Cours 4 5 novembre 2012 Archi 1/22 Micro-architecture Archi 2/22 Intro Comment assembler les différents circuits vus dans les cours précédents pour fabriquer un processeur?

Plus en détail

Configuration et Déploiement d Applications Réparties par Intégration de l Hétérogénéité des Implémentations dans un Langage de Description d

Configuration et Déploiement d Applications Réparties par Intégration de l Hétérogénéité des Implémentations dans un Langage de Description d Configuration et Déploiement d Applications Réparties par Intégration de l Hétérogénéité des Implémentations dans un Langage de Description d Architecture Doctorant: Directeurs de thèse: Bechir ZALILA

Plus en détail

Moniteurs, Java, Threads et Processus

Moniteurs, Java, Threads et Processus Moniteurs, Java, Threads et Processus 1 Une vue orientée-objet de la mémoire partagée On peut voir un sémaphore comme un objet partagé accessible par deux méthodes : wait et signal. L idée du concept de

Plus en détail

Talend Technical Note

Talend Technical Note Mars 2011 Page 1 sur 5 Le MDM offre un hub central de contrôle et une vision unique des données maître de l'entreprise, quelles que soient les disparités entre les systèmes source. Il assure que les données

Plus en détail

I L AS «Compilation pour les systèmes embarqués» II Méthodes d analyse et d optimisation de programmes

I L AS «Compilation pour les systèmes embarqués» II Méthodes d analyse et d optimisation de programmes I L AS «Compilation pour les systèmes embarqués»...situation et problématique II Méthodes d analyse et d optimisation de programmes...approche collaborative et exemples de techniques Philippe Clauss ICPS-LSIIT,

Plus en détail

Comment mesurer les temps de calcul de vos programmes? Bonne pratique et pièges à éviter

Comment mesurer les temps de calcul de vos programmes? Bonne pratique et pièges à éviter Comment mesurer les temps de calcul de vos programmes? Bonne pratique et pièges à éviter Caroline Prodhon (carolineprodhon@hotmail.com) Philippe Lacomme (placomme@isima.fr) Ren Libo (ren@isima.fr) Remerciements

Plus en détail

Claude Delannoy. Exercices C++ en langage. 3 e édition. Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5

Claude Delannoy. Exercices C++ en langage. 3 e édition. Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5 Claude Delannoy Exercices en langage C++ 3 e édition Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5 Chapitre 3 Les fonctions Rappels Généralités Une fonction est un bloc d instructions éventuellement

Plus en détail

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

Contexte et motivations Les techniques envisagées Evolution des processus Conclusion Vérification de logiciels par analyse statique Contexte et motivations Les techniques envisagées Evolution des processus Conclusion Contexte et motivations Specification Design architecture Revues and

Plus en détail

Gestion de la Mémoire 1 ère partie: Point de vue processeur. Chapitre 5

Gestion de la Mémoire 1 ère partie: Point de vue processeur. Chapitre 5 Gestion de la Mémoire 1 ère partie: Point de vue processeur Chapitre 5 Présentation La mémoire peut être adressée de 3 points de vue Point de vue processeur Comment le processeur adresse la mémoire physique

Plus en détail

Éléments de base en Java (suite et fin)

Éléments de base en Java (suite et fin) Éléments de base en Java (suite et fin) P.O.O. LMI 2 Semestre 4 Option Info Année 2008-09 1/33 Éléments de base en Java (suite et fin) Année 2008-09 Plan du cours Les chaînes de caractères Retour vers

Plus en détail

ATELIER ALGORITHME PREMIERS PAS Journée d information sur les nouveaux programmes de Première S-ES 2010-2011

ATELIER ALGORITHME PREMIERS PAS Journée d information sur les nouveaux programmes de Première S-ES 2010-2011 Pour me contacter : irene.rougier@ac-clermont.fr 1. Introduction ATELIER ALGORITHME PREMIERS PAS Journée d information sur les nouveaux programmes de Première S-ES 2010-2011 De nombreux documents et informations

Plus en détail

1. Les fondements de l informatique 13

1. Les fondements de l informatique 13 Introduction à l'algorithmique 1. Les fondements de l informatique 13 1.1 Architecture de Von Neumann 13 1.2 La machine de Turing 17 1.3 Représentation interne des instructions et des données 19 1.3.1

Plus en détail

Gestion de la mémoire sous VMware ESX

Gestion de la mémoire sous VMware ESX Gestion de la mémoire sous VMware ESX 1. Introduction Le partage de ressources offert par la virtualisation apporte des avantages par rapport à des architectures traditionnelles. Cela permet d avoir plus

Plus en détail

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51 DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51 PLAN DU COURS Introduction au langage C Notions de compilation Variables, types, constantes, tableaux, opérateurs Entrées sorties de base Structures de

Plus en détail

FORMATION VB.NET Visual Studio 2008

FORMATION VB.NET Visual Studio 2008 FORMATION VB.NET Visual Studio 2008 Livret 1 Introduction à Visuàl Studio Thierry TILLIER http://www.coursdinfo.fr Ce support de cours est réservé à un usage personnel. Toute utilisation et diffusion dans

Plus en détail

Introduction au langage C

Introduction au langage C Introduction au langage C Cours 1: Opérations de base et premier programme Alexis Lechervy Alexis Lechervy (UNICAEN) Introduction au langage C 1 / 23 Les premiers pas Sommaire 1 Les premiers pas 2 Les

Plus en détail

Utilisation d un compilateur pour évaluer la résistance des obfuscations de programmes C

Utilisation d un compilateur pour évaluer la résistance des obfuscations de programmes C 1 Utilisation d un compilateur pour évaluer la résistance des obfuscations de programmes C Stéphanie Riaud INRIA & DGA-MI Directrice de thèse : Sandrine Blazy 2 L obfuscation *Collberg] : une solution

Plus en détail

Portage de l architecture sécurisée CryptoPage sur un microprocesseur x86

Portage de l architecture sécurisée CryptoPage sur un microprocesseur x86 Portage de l architecture sécurisée CryptoPage sur un microprocesseur x86 Guillaume Duc Ronan Keryell Département Informatique École Nationale Supérieure des Télécommunications de Bretagne Symposium en

Plus en détail

Les Systèmes d Exploitation: Concepts et Programmation

Les Systèmes d Exploitation: Concepts et Programmation Les Systèmes d Exploitation: d Concepts et Programmation Samia Bouzefrane MCF en Informatique, CNAM samia.bouzefrane@cnam.fr http://cedric.cnam.fr/~bouzefra Samia Bouzefrane, Cours SYSTEME 1 Introduction

Plus en détail

2011 Hakim Benameurlaine 1

2011 Hakim Benameurlaine 1 Table des matières 1 CRÉATION DES OBJETS DE BASES DE DONNÉES... 2 1.1 Architecture d une base de données... 2 1.1.1 Niveau logique... 2 1.1.2 Niveau physique... 3 1.2 Gestion d une base de données... 3

Plus en détail

Base de données en mémoire

Base de données en mémoire Base de données en mémoire Plan Bases de données relationnelles OnLine Analytical Processing Difficultés de l OLAP Calculs en mémoire Optimisations 1 Base de données relationnelle Introduction Date Exemple

Plus en détail

Algorithmique - Techniques fondamentales de programmation Exemples en Python (nombreux exercices corrigés) - BTS, DUT informatique

Algorithmique - Techniques fondamentales de programmation Exemples en Python (nombreux exercices corrigés) - BTS, DUT informatique Introduction à l'algorithmique 1. Les fondements de l informatique 13 1.1 Architecture de Von Neumann 13 1.2 La machine de Turing 17 1.3 Représentation interne des instructions et des données 19 1.3.1

Plus en détail

LE LANGAGE C ADAPTÉ AU MICROCONTRÔLEURS

LE LANGAGE C ADAPTÉ AU MICROCONTRÔLEURS LE LANGAGE C ADAPTÉ AU MICROCONTRÔLEURS 1. PRÉSENTATION. Le langage C a fait son apparition en 1972 pour le développement du système d exploitation Unix. Il est devenu un standard de la norme ANSI en 1983.

Plus en détail

Utilisation d'allocation de registre pour optimisation de calcul acoustique probabiliste

Utilisation d'allocation de registre pour optimisation de calcul acoustique probabiliste Utilisation d'allocation de registre pour optimisation de calcul acoustique probabiliste Pierrick Brunet Encadré par Serge Guelton Etudiant à Télécom Bretagne Stage de fin d étude à Quiet Oceans Sixièmes

Plus en détail

Système. Introduction aux systèmes informatiques

Système. Introduction aux systèmes informatiques Introduction aux systèmes informatiques Système Un système est une collection organisée d'objets qui interagissent pour former un tout Objets = composants du système Des interconnexions (liens) entre les

Plus en détail

//////////////////////////////////////////////////////////////////// Administration bases de données

//////////////////////////////////////////////////////////////////// Administration bases de données ////////////////////// Administration bases de données / INTRODUCTION Système d informations Un système d'information (SI) est un ensemble organisé de ressources (matériels, logiciels, personnel, données

Plus en détail

Cours 1. Contenu du cours : " Premières applications. " Compilation, Exécution, Chemin. " Affichage et saisie. " Types de données. " Flux de contrôle

Cours 1. Contenu du cours :  Premières applications.  Compilation, Exécution, Chemin.  Affichage et saisie.  Types de données.  Flux de contrôle Cours 1 1 Contenu du cours : " Premières applications " Compilation, Exécution, Chemin " Affichage et saisie " Types de données " Flux de contrôle " Applets " Arrays " OO de base Edition Le fichier texte

Plus en détail

Programmation avancée

Programmation avancée Programmation avancée Chapitre 1 : Complexité et les ABR (arbres binaires de recherche) 1 1 IFSIC Université de Rennes-1 M2Crypto, octobre 2011 Plan du cours 1 2 3 4 5 6 7 8 9 10 Algorithmes Définition

Plus en détail

Notions de langage machine

Notions de langage machine Notions de langage machine 18 décembre 2009 Rappels et introduction Architecture de Van Neumann : Processeur = UC + UAL Mémoire interne au processeur = les registres (soit seulement l accumulateur, soit

Plus en détail

ASSEMBLAGE ET ÉDITION DES LIENS

ASSEMBLAGE ET ÉDITION DES LIENS ASSEMBLAGE ET ÉDITION DES LIENS Mewtow 11 novembre 2015 Table des matières 1 Introduction 5 2 La chaine d assemblage 7 2.1 Résolution des symboles.............................. 7 2.2 Relocation.....................................

Plus en détail

Types et performances des processeurs

Types et performances des processeurs Types et performances des processeurs Laboratoire de Systèmes Logiques Structure d un ordinateur contrôle processeur traitement séquenceur registres mémoire entrées/sorties micromémoire opérateurs bus

Plus en détail

GL / C++ Chapitre 7. Lien Dynamique Méthodes Virtuelles

GL / C++ Chapitre 7. Lien Dynamique Méthodes Virtuelles GL / C++ Chapitre 7 Lien Dynamique Méthodes Virtuelles 1. Pointeur sur un objet d'une classe dérivée Considérons les classes écrites précédemment : Personne Etudiant // dérive de personne Salarie // dérive

Plus en détail

1 : 1 er programmes & prise en main de l environnement

1 : 1 er programmes & prise en main de l environnement 1 : 1 er programmes & prise en main de l environnement 1 Introduction 1.1 Rappel : gestion d arborescence et de fichiers sous UNIX Pour la manipulation de répertoire et de fichier à partir d un terminal

Plus en détail

Algorithmique Partie 1

Algorithmique Partie 1 Algorithmique Partie 1 IUT Informatique de Lens, 1ère Année Université d Artois Frédéric Koriche koriche@cril.fr 2011 - Semestre 1 Modalités Sommaire 1 Modalités 2 Programmation 3 Données 4 Opérateurs

Plus en détail

D un point de vue système, ajuster la mémoire est l une des principales méthodes pour augmenter ou réduire les performances d un processus.

D un point de vue système, ajuster la mémoire est l une des principales méthodes pour augmenter ou réduire les performances d un processus. GESTION DE LA MEMOIRE SOUS UNIX La mémoire est une ressource critique car elle conditionne les temps de traitements. Différentes options SAS sont disponibles pour utiliser au mieux la mémoire de la machine.

Plus en détail

NIMBUS TRAINING. Mise en œuvre d une SGBD dans toutes les étapes du projet. Déscription. Objectifs. Publics. Durée. Pré-requis

NIMBUS TRAINING. Mise en œuvre d une SGBD dans toutes les étapes du projet. Déscription. Objectifs. Publics. Durée. Pré-requis Mise en œuvre d une SGBD dans toutes les étapes du projet. Déscription A partir des retours d expérience, et des préconisations des éditeurs, présenter les facteurs clés de succès et les bonnes pratiques

Plus en détail

Présentation du PL/SQL

Présentation du PL/SQL I Présentation du PL/ Copyright Oracle Corporation, 1998. All rights reserved. Objectifs du Cours A la fin de ce chapitre, vous saurez : Décrire l intéret du PL/ Décrire l utilisation du PL/ pour le développeur

Plus en détail

TP Bases de données réparties

TP Bases de données réparties page 1 TP Bases de données réparties requêtes réparties Version corrigée Auteur : Hubert Naacke, révision 5 mars 2003 Mots-clés: bases de données réparties, fragmentation, schéma de placement, lien, jointure

Plus en détail

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

Mesure de performances. [Architecture des ordinateurs, Hennessy & Patterson, 1996] Mesure de performances [Architecture des ordinateurs, Hennessy & Patterson, 1996] Croissance des performances des microprocesseurs Avant le milieu des années 80, le gain dépendait de la technologie. Après,

Plus en détail

Types et langages de programmation. Algorithmique et Programmation Unisciel/K.Zampieri

Types et langages de programmation. Algorithmique et Programmation Unisciel/K.Zampieri Types et langages de programmation Algorithmique et Programmation Unisciel/K.Zampieri 1 Généalogie partielle des langages de programmation FORTRAN BASIC PL/1 PROLOG ALGOL60 COBOL C PASCAL ADA MODULA-2

Plus en détail

Cours d initiation à la programmation en C++ Johann Cuenin

Cours d initiation à la programmation en C++ Johann Cuenin Cours d initiation à la programmation en C++ Johann Cuenin 11 octobre 2014 2 Table des matières 1 Introduction 5 2 Bases de la programmation en C++ 7 3 Les types composés 9 3.1 Les tableaux.............................

Plus en détail

CTE Éditeur de classification arborescente pour spécifications du cas de test

CTE Éditeur de classification arborescente pour spécifications du cas de test Tessy Test d intégration et unitaire dynamique automatisé pour des applications embarquées CTE Éditeur de classification arborescente pour spécifications du cas de test Le meilleur outil de test unitaire

Plus en détail