Performances et optimisations

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.

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

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

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

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

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

Conventions d écriture et outils de mise au point

Conventions d écriture et outils de mise au point Logiciel de base Première année par alternance Responsable : Christophe Rippert Christophe.Rippert@Grenoble-INP.fr Introduction Conventions d écriture et outils de mise au point On va utiliser dans cette

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

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

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

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation impérative et structures de données simples Introduction au langage C Sandrine Blazy - 1ère année 24 octobre 2007 Cours d Algorithmique-Programmation

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

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

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if Pierre Boudes 28 septembre 2011 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike

Plus en détail

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

Génération de code binaire pour application multimedia : une approche au vol Génération de binaire pour application multimedia : une approche au vol http://hpbcg.org/ Henri-Pierre Charles Université de Versailles Saint-Quentin en Yvelines 3 Octobre 2009 Présentation Présentation

Plus en détail

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test Grandes lignes Analyseur Statique de logiciels Temps RÉel Embarqués École Polytechnique École Normale Supérieure Mercredi 18 juillet 2005 1 Présentation d 2 Cadre théorique de l interprétation abstraite

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

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing 3/4/27 Programmation Avancée Multimédia Multithreading Benoît Piranda Équipe SISAR Université de Marne La Vallée Besoin Programmes à traitements simultanés Réseau Réseau Afficher une animation en temps

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

Initiation à l algorithmique

Initiation à l algorithmique Informatique S1 Initiation à l algorithmique procédures et fonctions 2. Appel d une fonction Jacques TISSEAU Ecole Nationale d Ingénieurs de Brest Technopôle Brest-Iroise CS 73862-29238 Brest cedex 3 -

Plus en détail

Module.NET 3 Les Assemblys.NET

Module.NET 3 Les Assemblys.NET Module.NET Chapitre 3 Les Assemblys.NET 2011/2012 Page 1 sur 13 Contenu Cours... 3 3.1 - Définition d un assembly.net... 3 3.2 - Private assembly ou assembly privé.... 3 3.3 - Shared assembly ou assembly

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

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

Analyse de sécurité de logiciels système par typage statique Contexte Modélisation Expérimentation Conclusion Analyse de sécurité de logiciels système par typage statique Application au noyau Linux Étienne Millon UPMC/LIP6 Airbus Group Innovations Sous la direction

Plus en détail

Les structures de données. Rajae El Ouazzani

Les structures de données. Rajae El Ouazzani Les structures de données Rajae El Ouazzani Les arbres 2 1- Définition de l arborescence Une arborescence est une collection de nœuds reliés entre eux par des arcs. La collection peut être vide, cad l

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

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr Table des matières 1 Les bases 3 2 Variables et constantes 5 3 Quelques fonctions indispensables

Plus en détail

Compilation (INF 564)

Compilation (INF 564) Présentation du cours Le processeur MIPS Programmation du MIPS 1 Compilation (INF 564) Introduction & architecture MIPS François Pottier 10 décembre 2014 Présentation du cours Le processeur MIPS Programmation

Plus en détail

Introduction à MATLAB R

Introduction à MATLAB R Introduction à MATLAB R Romain Tavenard 10 septembre 2009 MATLAB R est un environnement de calcul numérique propriétaire orienté vers le calcul matriciel. Il se compose d un langage de programmation, d

Plus en détail

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

M2-Images. Rendu Temps Réel - OpenGL 4 et compute shaders. J.C. Iehl. December 18, 2013 Rendu Temps Réel - OpenGL 4 et compute shaders December 18, 2013 résumé des épisodes précédents... création des objets opengl, organisation des données, configuration du pipeline, draw,... opengl 4.3 :

Plus en détail

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr Mars 2002 Pour Irène et Marie Legal Notice Copyright c 2002 Patrick Cégielski Université

Plus en détail

Une bibliothèque de templates pour CUDA

Une bibliothèque de templates pour CUDA Une bibliothèque de templates pour CUDA Sylvain Collange, Marc Daumas et David Defour Montpellier, 16 octobre 2008 Types de parallèlisme de données Données indépendantes n threads pour n jeux de données

Plus en détail

as Architecture des Systèmes d Information

as Architecture des Systèmes d Information Plan Plan Programmation - Introduction - Nicolas Malandain March 14, 2005 Introduction à Java 1 Introduction Présentation Caractéristiques Le langage Java 2 Types et Variables Types simples Types complexes

Plus en détail

Gestion mémoire et Représentation intermédiaire

Gestion mémoire et Représentation intermédiaire Gestion mémoire et Représentation intermédiaire Pablo de Oliveira March 23, 2015 I Gestion Memoire Variables locales Les variables locales sont stockées: Soit dans un registre,

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

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

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS Depuis SAS 9.2 TS2M3, SAS propose un nouveau langage de programmation permettant de créer et gérer des tables SAS : le DS2 («Data Step 2»). Ces nouveautés

Plus en détail

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

Métriques de performance pour les algorithmes et programmes parallèles Métriques de performance pour les algorithmes et programmes parallèles 11 18 nov. 2002 Cette section est basée tout d abord sur la référence suivante (manuel suggéré mais non obligatoire) : R. Miller and

Plus en détail

Initiation au HPC - Généralités

Initiation au HPC - Généralités Initiation au HPC - Généralités Éric Ramat et Julien Dehos Université du Littoral Côte d Opale M2 Informatique 2 septembre 2015 Éric Ramat et Julien Dehos Initiation au HPC - Généralités 1/49 Plan du cours

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

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

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7 Université Lumière Lyon 2 Faculté de Sciences Economiques et Gestion KHARKIV National University of Economic Introduction au Langage Java Master Informatique 1 ère année Julien Velcin http://mediamining.univ-lyon2.fr/velcin

Plus en détail

Solution A La Gestion Des Objets Java Pour Des Systèmes Embarqués

Solution A La Gestion Des Objets Java Pour Des Systèmes Embarqués International Journal of Engineering Research and Development e-issn: 2278-067X, p-issn: 2278-800X, www.ijerd.com Volume 7, Issue 5 (June 2013), PP.99-103 Solution A La Gestion Des Objets Java Pour Des

Plus en détail

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

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique Institut Supérieure Aux Etudes Technologiques De Nabeul Département Informatique Support de Programmation Java Préparé par Mlle Imene Sghaier 2006-2007 Chapitre 1 Introduction au langage de programmation

Plus en détail

Bases de programmation. Cours 5. Structurer les données

Bases de programmation. Cours 5. Structurer les données Bases de programmation. Cours 5. Structurer les données Pierre Boudes 1 er décembre 2014 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. Types char et

Plus en détail

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation. Université du Québec à Chicoutimi Département d informatique et de mathématique Plan de cours Titre : Élément de programmation Sigle : 8inf 119 Session : Automne 2001 Professeur : Patrice Guérin Local

Plus en détail

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

Exécutif temps réel Pierre-Yves Duval (cppm) Exécutif temps réel Pierre-Yves Duval (cppm) Ecole d informatique temps réel - La Londes les Maures 7-11 Octobre 2002 Plan Exécutif Tâches Evénements et synchronisation Partage de ressources Communications

Plus en détail

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

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C IN 102 - Cours 1 Qu on le veuille ou non, les systèmes informatisés sont désormais omniprésents. Même si ne vous destinez pas à l informatique, vous avez de très grandes chances d y être confrontés en

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

Algorithmique I. Augustin.Lux@imag.fr Roger.Mohr@imag.fr Maud.Marchal@imag.fr. Algorithmique I 20-09-06 p.1/??

Algorithmique I. Augustin.Lux@imag.fr Roger.Mohr@imag.fr Maud.Marchal@imag.fr. Algorithmique I 20-09-06 p.1/?? Algorithmique I Augustin.Lux@imag.fr Roger.Mohr@imag.fr Maud.Marchal@imag.fr Télécom 2006/07 Algorithmique I 20-09-06 p.1/?? Organisation en Algorithmique 2 séances par semaine pendant 8 semaines. Enseignement

Plus en détail

Cours d Algorithmique et de Langage C 2005 - v 3.0

Cours d Algorithmique et de Langage C 2005 - v 3.0 Cours d Algorithmique et de Langage C 2005 - v 3.0 Bob CORDEAU cordeau@onera.fr Mesures Physiques IUT d Orsay 15 mai 2006 Avant-propos Avant-propos Ce cours en libre accès repose sur trois partis pris

Plus en détail

Programmation impérative

Programmation impérative Programmation impérative Programmation avancée en langage C F. Pellegrini ENSEIRB Ce document est copiable et distribuable librement et gratuitement à la condition expresse que son contenu ne soit modifié

Plus en détail

Java Licence Professionnelle CISII, 2009-10

Java Licence Professionnelle CISII, 2009-10 Java Licence Professionnelle CISII, 2009-10 Cours 4 : Programmation structurée (c) http://www.loria.fr/~tabbone/cours.html 1 Principe - Les méthodes sont structurées en blocs par les structures de la programmation

Plus en détail

Notes du cours 4M056 Programmation en C et C++ Vincent Lemaire et Damien Simon

Notes du cours 4M056 Programmation en C et C++ Vincent Lemaire et Damien Simon Notes du cours 4M056 Programmation en C et C++ Vincent Lemaire et Damien Simon 13 janvier 2015 2 Table des matières Organisation générale du cours 7 1 Notions générales d algorithmique et de programmation

Plus en détail

Java - la plateforme

Java - la plateforme Java - la plateforme Java la plateforme Java? VM GC JIT Java Aujourd'hui 3 environnements d'exécutions différents Java ME (Micro Edition) pour PDA, téléphone Android (Java SE moins certain paquetages)

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

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

SSTIC 2009. Désobfuscation automatique de binaires. Alexandre Gazet. Yoann Guillot. Et autres idyles bucoliques... Désobfuscation automatique de binaires Et autres idyles bucoliques... Alexandre Gazet Sogeti / ESEC R&D alexandre.gazet(at)sogeti.com Yoann Guillot Sogeti / ESEC R&D yoann.guillot(at)sogeti.com SSTIC 2009

Plus en détail

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par

Plus en détail

Génie Logiciel avec Ada. 4 février 2013

Génie Logiciel avec Ada. 4 février 2013 Génie Logiciel 4 février 2013 Plan I. Généralités II. Structures linéaires III. Exceptions IV. Structures arborescentes V. Dictionnaires I. Principes II. Notions propres à la POO I. Principes Chapitre

Plus en détail

Une introduction à Java

Une introduction à Java Une introduction à Java IFT 287 (Semaine 1) UNIVERSITÉ DE SHERBROOKE 1 Java - Historique Développé par Sun Microsystems en 1994 Inventeur James Gosling (canadien!) Objectif langage sûr (fortement typé)

Plus en détail

Traduction binaire dynamique de l extension SIMD Néon de l ARMv7 dans Qemu

Traduction binaire dynamique de l extension SIMD Néon de l ARMv7 dans Qemu Travaux d études et de recherches Traduction binaire dynamique de l extension SIMD Néon de l ARMv7 dans Qemu Étudiant : Luc Michel Encadrants : Frédéric Pétrot Nicolas Fournel 23 mai 2010 TABLE DES MATIÈRES

Plus en détail

UE C avancé cours 1: introduction et révisions

UE C avancé cours 1: introduction et révisions Introduction Types Structures de contrôle Exemple UE C avancé cours 1: introduction et révisions Jean-Lou Desbarbieux et Stéphane Doncieux UMPC 2004/2005 Introduction Types Structures de contrôle Exemple

Plus en détail

Qualité du logiciel: Méthodes de test

Qualité du logiciel: Méthodes de test Qualité du logiciel: Méthodes de test Matthieu Amiguet 2004 2005 Analyse statique de code Analyse statique de code Étudier le programme source sans exécution Généralement réalisée avant les tests d exécution

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

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

Initiation. àl algorithmique et à la programmation. en C Initiation àl algorithmique et à la programmation en C Initiation àl algorithmique et à la programmation en C Cours avec 129 exercices corrigés Illustration de couverture : alwyncooper - istock.com Dunod,

Plus en détail

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr . Cours intensif Java 1er cours: de C à Java Septembre 2009 Enrica DUCHI LIAFA, Paris 7 Enrica.Duchi@liafa.jussieu.fr LANGAGES DE PROGRAMMATION Pour exécuter un algorithme sur un ordinateur il faut le

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

Introduction à la Programmation Parallèle: MPI

Introduction à la Programmation Parallèle: MPI Introduction à la Programmation Parallèle: MPI Frédéric Gava et Gaétan Hains L.A.C.L Laboratoire d Algorithmique, Complexité et Logique Cours du M2 SSI option PSSR Plan 1 Modèle de programmation 2 3 4

Plus en détail

Optimisations des SGBDR. Étude de cas : MySQL

Optimisations des SGBDR. Étude de cas : MySQL Optimisations des SGBDR Étude de cas : MySQL Introduction Pourquoi optimiser son application? Introduction Pourquoi optimiser son application? 1. Gestion de gros volumes de données 2. Application critique

Plus en détail

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

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu. Seance 2: Complétion du code de jeu. (durée max: 2h) Mot clé const et pointeurs: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu. Implémentez jeu_recupere_piece

Plus en détail

Machines Virtuelles. et bazard autour. Rémi Forax

Machines Virtuelles. et bazard autour. Rémi Forax Machines Virtuelles et bazard autour Rémi Forax Avant propos Quelle est la complexité du code ci-dessous? Avec un processeur à 1Ghz, combien de temps le calcul prendra t'il? public static void main(string[]

Plus en détail

Le Projet BINSEC. Automatiser l analyse de sécurité au niveau binaire. Airbus group, CEA, IRISA, LORIA, Uni. Joseph Fourier. p.

Le Projet BINSEC. Automatiser l analyse de sécurité au niveau binaire. Airbus group, CEA, IRISA, LORIA, Uni. Joseph Fourier. p. Le Projet BINSEC Automatiser l analyse de sécurité au niveau binaire Airbus group, CEA, IRISA, LORIA, Uni. Joseph Fourier p. 1/22 Introduction Panorama de BINSEC Cadre de travail Projet ANR INS, appel

Plus en détail

Optimisation de logiciels de modélisation sur centre de calcul

Optimisation de logiciels de modélisation sur centre de calcul Optimisation de logiciels de modélisation sur centre de calcul Gérald Monard Pôle de Chimie Théorique http://www.monard.info/ Introduction Les ordinateurs sont des appareils électroniques permettant d

Plus en détail

Pourquoi superviser?

Pourquoi superviser? Pourquoi superviser? Olivier Brand-Foissac CNRS / Laboratoire de Physique Théorique - Orsay ANGD Mathrice - Nov 2009 Plan 1 Introduction 2 Constitution 3 Choix des types de mesure 4 Choix d un superviseur

Plus en détail

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

Vérifier la qualité de vos applications logicielle de manière continue IBM Software Group Vérifier la qualité de vos applications logicielle de manière continue Arnaud Bouzy Kamel Moulaoui 2004 IBM Corporation Agenda Analyse de code Test Fonctionnel Test de Performance Questions

Plus en détail

Gestion hybride de la mémoire dynamique dans les systèmes Java temps-réel

Gestion hybride de la mémoire dynamique dans les systèmes Java temps-réel Gestion hybride de la mémoire dynamique dans les systèmes Java temps-réel Nicolas Berthier Stage de Magistère M encadré par Christophe Rippert et Guillaume Salagnac Laboratoire Vérimag Septembre 007 Résumé

Plus en détail

4. Groupement d objets

4. Groupement d objets Conception objet en Java avec BlueJ une approche interactive 4. Groupement d objets Collections et itérateurs David J. Barnes, Michael Kölling version française: Patrice Moreaux Rédigé avec 1.0 Principaux

Plus en détail

Cours 1: Java et les objets

Cours 1: Java et les objets Ressources Les interface homme-machine et le langage Java DUT première année Henri Garreta, Faculté des Sciences (Luminy) Cyril Pain-Barre & Sébastien Nedjar, IUT d Aix-Marseille (Aix) Cours 1: infodoc.iut.univ-aix.fr/~ihm/

Plus en détail

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL Cours PL/SQL Langage propre à Oracle basé sur ADA Offre une extension procédurale à SQL PL/SQL permet d utiliser un sous-ensemble du langage SQL des variables, des boucles, des alternatives, des gestions

Plus en détail

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

Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données EARTH et Threaded-C: Éléments clés du manuel de références de Threaded-C Bref historique de EARTH et Threaded-C Ancêtres de l architecture EARTH: Slide 1 Machine à flux de données statique de J.B. Dennis

Plus en détail

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

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril 2010 1 / 15 MapReduce Malo Jaffré, Pablo Rauzy ENS 16 avril 2010 Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril 2010 1 / 15 Qu est ce que c est? Conceptuellement Données MapReduce est un framework de calcul distribué

Plus en détail

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C Haute Ecole d Ingénierie et de Gestion Du Canton du Vaud MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C Programmation en mode simulation 1. DOCUMENTS DE RÉFÉRENCE...

Plus en détail

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

1 Mesure de la performance d un système temps réel : la gigue TP TR ENSPS et MSTER 1 Travaux Pratiques Systèmes temps réel et embarqués ENSPS ISV et Master TP1 - Ordonnancement et communication inter-processus (IPC) Environnement de travail Un ordinateur dual-core

Plus en détail

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

Cours de C. Petits secrets du C & programmation avancée. Sébastien Paumier Cours de C Petits secrets du C & programmation avancée Sébastien Paumier paumier@univ-mlv.fr Illustrations provenant du site http://tux.crystalxp.net/ 1 Affectations étendues a+=expression a=a+expression

Plus en détail

Cours 1 : Qu est-ce que la programmation?

Cours 1 : Qu est-ce que la programmation? 1/65 Introduction à la programmation Cours 1 : Qu est-ce que la programmation? Yann Régis-Gianas yrg@pps.univ-paris-diderot.fr Université Paris Diderot Paris 7 2/65 1. Sortez un appareil qui peut se rendre

Plus en détail

Conception des systèmes répartis

Conception des systèmes répartis Conception des systèmes répartis Principes et concepts Gérard Padiou Département Informatique et Mathématiques appliquées ENSEEIHT Octobre 2012 Gérard Padiou Conception des systèmes répartis 1 / 37 plan

Plus en détail

Initiation à JAVA et à la programmation objet. raphael.bolze@ens-lyon.fr

Initiation à JAVA et à la programmation objet. raphael.bolze@ens-lyon.fr Initiation à JAVA et à la programmation objet raphael.bolze@ens-lyon.fr O b j e c t i f s Découvrir un langage de programmation objet. Découvrir l'environnement java Découvrir les concepts de la programmation

Plus en détail

Bases Java - Eclipse / Netbeans

Bases Java - Eclipse / Netbeans Institut Galilée PDJ Année 2014-2015 Master 1 Environnements Java T.P. 1 Bases Java - Eclipse / Netbeans Il existe plusieurs environnements Java. Il est ESSENTIEL d utiliser la bonne version, et un environnement

Plus en détail

Introduction aux SGBDR

Introduction aux SGBDR 1 Introduction aux SGBDR Pour optimiser une base Oracle, il est important d avoir une idée de la manière dont elle fonctionne. La connaissance des éléments sous-jacents à son fonctionnement permet de mieux

Plus en détail

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation Université de Savoie Module ETRS711 Travaux pratiques Compression en codage de Huffman 1. Organisation du projet 1.1. Objectifs Le but de ce projet est d'écrire un programme permettant de compresser des

Plus en détail

Cours 1 : La compilation

Cours 1 : La compilation /38 Interprétation des programmes Cours 1 : La compilation Yann Régis-Gianas yrg@pps.univ-paris-diderot.fr PPS - Université Denis Diderot Paris 7 2/38 Qu est-ce que la compilation? Vous avez tous déjà

Plus en détail

Cours Informatique Master STEP

Cours Informatique Master STEP Cours Informatique Master STEP Bases de la programmation: Compilateurs/logiciels Algorithmique et structure d'un programme Programmation en langage structuré (Fortran 90) Variables, expressions, instructions

Plus en détail

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java Info0101 Intro. à l'algorithmique et à la programmation Cours 3 Le langage Java Pierre Delisle, Cyril Rabat et Christophe Jaillet Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique

Plus en détail

Cours de Programmation Impérative: Zones de mémoires et pointeurs

Cours de Programmation Impérative: Zones de mémoires et pointeurs Cours de Programmation Impérative: Zones de mémoires et pointeurs Julien David A101 - david@lipn.univ-paris13.fr Julien David (A101 - david@lipn.univ-paris13.fr) 1 / 1 Z`o n`e s `d`e m`é m`o i r`e Julien

Plus en détail

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

. Plan du cours. . Architecture: Fermi (2010-12), Kepler (12-?) Plan du cours Vision mate riel: architecture cartes graphiques NVIDIA INF 560 Calcul Paralle le et Distribue Cours 3 Vision logiciel: l abstraction logique de l architecture propose e par le langage CUDA

Plus en détail

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement des objets d'une classe Utilisation d'une classe Droit

Plus en détail

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004 Questionnaire d'examen final INF1101 Sigle du cours Nom : Signature : Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004 Professeur(s)

Plus en détail

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

UE Programmation Impérative Licence 2ème Année 2014 2015 UE Programmation Impérative Licence 2 ème Année 2014 2015 Informations pratiques Équipe Pédagogique Florence Cloppet Neilze Dorta Nicolas Loménie prenom.nom@mi.parisdescartes.fr 2 Programmation Impérative

Plus en détail

demander pourquoi mon site n'apparaît pas sur google ou pourquoi mon site n'est pas référencé par les moteurs de recherche?

demander pourquoi mon site n'apparaît pas sur google ou pourquoi mon site n'est pas référencé par les moteurs de recherche? 50 questions essentielles à vous poser avant la mise en ligne de votre site pour ne plus vous demander pourquoi mon site n'apparaît pas sur google ou pourquoi mon site n'est pas référencé par les moteurs

Plus en détail

Processus! programme. DIMA, Systèmes Centralisés (Ph. Mauran) " Processus = suite d'actions = suite d'états obtenus = trace

Processus! programme. DIMA, Systèmes Centralisés (Ph. Mauran)  Processus = suite d'actions = suite d'états obtenus = trace Processus 1) Contexte 2) Modèles de Notion de Points de vue Modèle fourni par le SX Opérations sur les 3) Gestion des Représentation des Opérations 4) Ordonnancement des Niveaux d ordonnancement Ordonnancement

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

Technologie de déduplication de Barracuda Backup. Livre blanc

Technologie de déduplication de Barracuda Backup. Livre blanc Technologie de déduplication de Barracuda Backup Livre blanc Résumé Les technologies de protection des données jouent un rôle essentiel au sein des entreprises et ce, quelle que soit leur taille. Toutefois,

Plus en détail

Architecture des ordinateurs

Architecture des ordinateurs Décoder la relation entre l architecture et les applications Violaine Louvet, Institut Camille Jordan CNRS & Université Lyon 1 Ecole «Découverte du Calcul» 2013 1 / 61 Simulation numérique... Physique

Plus en détail