Evaluation de la quantité de travail (in)utile dans l’exécution des programmes
-
Upload
benjamin-vidal -
Category
Education
-
view
81 -
download
3
description
Transcript of Evaluation de la quantité de travail (in)utile dans l’exécution des programmes
![Page 1: Evaluation de la quantité de travail (in)utile dans l’exécution des programmes](https://reader033.fdocuments.net/reader033/viewer/2022060117/5586d329d8b42a25758b474b/html5/thumbnails/1.jpg)
Soutenance de stage de DEASoutenance de stage de DEA
Évaluation de la quantité de travail utile dansÉvaluation de la quantité de travail utile dansl’exécution des programmesl’exécution des programmes
Stage encadré par P. MichaudStage encadré par P. Michaud
et effectué par B. Vidalet effectué par B. Vidal
Projet CAPSProjet CAPS
![Page 2: Evaluation de la quantité de travail (in)utile dans l’exécution des programmes](https://reader033.fdocuments.net/reader033/viewer/2022060117/5586d329d8b42a25758b474b/html5/thumbnails/2.jpg)
DéfinitionDéfinition
• Une instruction dynamique est utile siUne instruction dynamique est utile si
- Elle produit un résultat émis en sortieElle produit un résultat émis en sortie
- Elle produit un résultat utilisé comme opérande Elle produit un résultat utilisé comme opérande d’une instruction utiled’une instruction utile
- C’est un branchementC’est un branchement
2
![Page 3: Evaluation de la quantité de travail (in)utile dans l’exécution des programmes](https://reader033.fdocuments.net/reader033/viewer/2022060117/5586d329d8b42a25758b474b/html5/thumbnails/3.jpg)
3
BibliographieBibliographie
• Différentes définitions du travail inutileDifférentes définitions du travail inutile
- Valeurs mortes dynamiquesValeurs mortes dynamiques G. Sohi & A. ButtG. Sohi & A. Butt
ASPLOS X - oct. 2002ASPLOS X - oct. 2002
- Écritures silencieusesÉcritures silencieuses M. Lipasti, K. Lepak & G. BellM. Lipasti, K. Lepak & G. Bell
IEEE, vol. 50, No. 11 - nov. 2001IEEE, vol. 50, No. 11 - nov. 2001
- Évaluation de l’ensemble du travail inutile Évaluation de l’ensemble du travail inutile après exécutionaprès exécution
![Page 4: Evaluation de la quantité de travail (in)utile dans l’exécution des programmes](https://reader033.fdocuments.net/reader033/viewer/2022060117/5586d329d8b42a25758b474b/html5/thumbnails/4.jpg)
La méthode utilisée [1]La méthode utilisée [1]
• Exemple simpleExemple simple
3
![Page 5: Evaluation de la quantité de travail (in)utile dans l’exécution des programmes](https://reader033.fdocuments.net/reader033/viewer/2022060117/5586d329d8b42a25758b474b/html5/thumbnails/5.jpg)
La méthode utilisée [1]La méthode utilisée [1]
• Exemple simpleExemple simple
3
![Page 6: Evaluation de la quantité de travail (in)utile dans l’exécution des programmes](https://reader033.fdocuments.net/reader033/viewer/2022060117/5586d329d8b42a25758b474b/html5/thumbnails/6.jpg)
La méthode utilisée [1]La méthode utilisée [1]
• Exemple simpleExemple simple
3
![Page 7: Evaluation de la quantité de travail (in)utile dans l’exécution des programmes](https://reader033.fdocuments.net/reader033/viewer/2022060117/5586d329d8b42a25758b474b/html5/thumbnails/7.jpg)
La méthode utilisée [1]La méthode utilisée [1]
• Exemple simpleExemple simple
3
![Page 8: Evaluation de la quantité de travail (in)utile dans l’exécution des programmes](https://reader033.fdocuments.net/reader033/viewer/2022060117/5586d329d8b42a25758b474b/html5/thumbnails/8.jpg)
La méthode utilisée [1]La méthode utilisée [1]
• Exemple simpleExemple simple
3
![Page 9: Evaluation de la quantité de travail (in)utile dans l’exécution des programmes](https://reader033.fdocuments.net/reader033/viewer/2022060117/5586d329d8b42a25758b474b/html5/thumbnails/9.jpg)
La méthode utilisée [1]La méthode utilisée [1]
• Exemple simpleExemple simple
3
![Page 10: Evaluation de la quantité de travail (in)utile dans l’exécution des programmes](https://reader033.fdocuments.net/reader033/viewer/2022060117/5586d329d8b42a25758b474b/html5/thumbnails/10.jpg)
La méthode utilisée [1]La méthode utilisée [1]
• Exemple simpleExemple simple
3
![Page 11: Evaluation de la quantité de travail (in)utile dans l’exécution des programmes](https://reader033.fdocuments.net/reader033/viewer/2022060117/5586d329d8b42a25758b474b/html5/thumbnails/11.jpg)
La méthode utilisée [1]La méthode utilisée [1]
• Exemple simpleExemple simple
3
![Page 12: Evaluation de la quantité de travail (in)utile dans l’exécution des programmes](https://reader033.fdocuments.net/reader033/viewer/2022060117/5586d329d8b42a25758b474b/html5/thumbnails/12.jpg)
La méthode utilisée [1]La méthode utilisée [1]
• Exemple simpleExemple simple
3
![Page 13: Evaluation de la quantité de travail (in)utile dans l’exécution des programmes](https://reader033.fdocuments.net/reader033/viewer/2022060117/5586d329d8b42a25758b474b/html5/thumbnails/13.jpg)
La méthode utilisée [2]La méthode utilisée [2]
• Graphe de dépendance de donnéeGraphe de dépendance de donnée
- Construction au cours de l’exécutionConstruction au cours de l’exécution
- Relier les instructions dépendantesRelier les instructions dépendantes RegistresRegistres MémoireMémoire
• Parcours du grapheParcours du graphe
- Sources (sorties ou branchements)Sources (sorties ou branchements)
- Marquage des instructions utilesMarquage des instructions utiles
4
![Page 14: Evaluation de la quantité de travail (in)utile dans l’exécution des programmes](https://reader033.fdocuments.net/reader033/viewer/2022060117/5586d329d8b42a25758b474b/html5/thumbnails/14.jpg)
OptimisationOptimisation
• Réduction du grapheRéduction du graphe
- Suppression des nœuds certifiés utilesSuppression des nœuds certifiés utiles A mesure que le programme se dérouleA mesure que le programme se déroule Un nœud utile ne peut devenir inutileUn nœud utile ne peut devenir inutile
- Suppression des nœuds certifiés inutilesSuppression des nœuds certifiés inutiles Une instruction n’est accessible depuis aucune Une instruction n’est accessible depuis aucune
ressourceressource Système de ramasse-mietteSystème de ramasse-miette
5
![Page 15: Evaluation de la quantité de travail (in)utile dans l’exécution des programmes](https://reader033.fdocuments.net/reader033/viewer/2022060117/5586d329d8b42a25758b474b/html5/thumbnails/15.jpg)
OptimisationOptimisation
5
![Page 16: Evaluation de la quantité de travail (in)utile dans l’exécution des programmes](https://reader033.fdocuments.net/reader033/viewer/2022060117/5586d329d8b42a25758b474b/html5/thumbnails/16.jpg)
OptimisationOptimisation
• Réduction du grapheRéduction du graphe
- Suppression des nœuds certifiés utilesSuppression des nœuds certifiés utiles A mesure que le programme se dérouleA mesure que le programme se déroule Un nœud utile ne peut devenir inutileUn nœud utile ne peut devenir inutile
- Suppression des nœuds certifiés inutilesSuppression des nœuds certifiés inutiles Une instruction n’est accessible depuis aucune Une instruction n’est accessible depuis aucune
ressourceressource Système de ramasse-mietteSystème de ramasse-miette
5
![Page 17: Evaluation de la quantité de travail (in)utile dans l’exécution des programmes](https://reader033.fdocuments.net/reader033/viewer/2022060117/5586d329d8b42a25758b474b/html5/thumbnails/17.jpg)
Mise en œuvreMise en œuvre
• SaltoSalto
- Récupérer des informations statiquesRécupérer des informations statiques
- Instrumenter du code assembleurInstrumenter du code assembleur Insérer des instructionsInsérer des instructions
• Au cours de l’exécutionAu cours de l’exécution
- Récupérer des informations dynamiquesRécupérer des informations dynamiques Ordre d’exécutionOrdre d’exécution Adresses des accès à la mémoireAdresses des accès à la mémoire État du systèmeÉtat du système
6
![Page 18: Evaluation de la quantité de travail (in)utile dans l’exécution des programmes](https://reader033.fdocuments.net/reader033/viewer/2022060117/5586d329d8b42a25758b474b/html5/thumbnails/18.jpg)
Instrumentation [1]Instrumentation [1]
• Exemple simpleExemple simple
7
![Page 19: Evaluation de la quantité de travail (in)utile dans l’exécution des programmes](https://reader033.fdocuments.net/reader033/viewer/2022060117/5586d329d8b42a25758b474b/html5/thumbnails/19.jpg)
Instrumentation [1]Instrumentation [1]
• Exemple simpleExemple simple
7
![Page 20: Evaluation de la quantité de travail (in)utile dans l’exécution des programmes](https://reader033.fdocuments.net/reader033/viewer/2022060117/5586d329d8b42a25758b474b/html5/thumbnails/20.jpg)
Instrumentation [1]Instrumentation [1]
• Exemple simpleExemple simple
7
![Page 21: Evaluation de la quantité de travail (in)utile dans l’exécution des programmes](https://reader033.fdocuments.net/reader033/viewer/2022060117/5586d329d8b42a25758b474b/html5/thumbnails/21.jpg)
Instrumentation [1]Instrumentation [1]
• Exemple simpleExemple simple
7
![Page 22: Evaluation de la quantité de travail (in)utile dans l’exécution des programmes](https://reader033.fdocuments.net/reader033/viewer/2022060117/5586d329d8b42a25758b474b/html5/thumbnails/22.jpg)
Instrumentation [1]Instrumentation [1]
• Exemple simpleExemple simple
7
![Page 23: Evaluation de la quantité de travail (in)utile dans l’exécution des programmes](https://reader033.fdocuments.net/reader033/viewer/2022060117/5586d329d8b42a25758b474b/html5/thumbnails/23.jpg)
Instrumentation [2]Instrumentation [2]
• Différentes phasesDifférentes phases
- Sauvegarde du contexteSauvegarde du contexte
- Création de la structure de donnéeCréation de la structure de donnée
- Traitement des opérandesTraitement des opérandes
- Traitement des résultatsTraitement des résultats
- Parcours du graphe si nécessaireParcours du graphe si nécessaire
- Restauration du contexteRestauration du contexte
8
![Page 24: Evaluation de la quantité de travail (in)utile dans l’exécution des programmes](https://reader033.fdocuments.net/reader033/viewer/2022060117/5586d329d8b42a25758b474b/html5/thumbnails/24.jpg)
VérificationVérification
• Ré-exécution du même programme avec Ré-exécution du même programme avec les mêmes données en entréeles mêmes données en entrée
- Saut des instructions inutilesSaut des instructions inutiles
• Vérification que les deux exécutions sont Vérification que les deux exécutions sont équivalenteséquivalentes
9
![Page 25: Evaluation de la quantité de travail (in)utile dans l’exécution des programmes](https://reader033.fdocuments.net/reader033/viewer/2022060117/5586d329d8b42a25758b474b/html5/thumbnails/25.jpg)
RésultatsRésultats
• Tests effectués sur GZIP et GUNZIPTests effectués sur GZIP et GUNZIP
- Sans optimisation de compilationSans optimisation de compilation Entre 1 et 11 % de travail inutile en moyenneEntre 1 et 11 % de travail inutile en moyenne
- Avec optimisations de compilationAvec optimisations de compilation Entre 10 et 12 % de travail inutile en moyenneEntre 10 et 12 % de travail inutile en moyenne
- Dépend du type de traitementDépend du type de traitement CompressionCompression DécompressionDécompression
- Dépend du fichier traitéDépend du fichier traité
10
![Page 26: Evaluation de la quantité de travail (in)utile dans l’exécution des programmes](https://reader033.fdocuments.net/reader033/viewer/2022060117/5586d329d8b42a25758b474b/html5/thumbnails/26.jpg)
Analyse [1]Analyse [1]
11
GZIP sur un fichier texte de 2 KoSans optimisation de compilation
Nombre d’instructions dynamiques
No
mb
re d
’in
stru
ctio
ns
inu
tile
s
![Page 27: Evaluation de la quantité de travail (in)utile dans l’exécution des programmes](https://reader033.fdocuments.net/reader033/viewer/2022060117/5586d329d8b42a25758b474b/html5/thumbnails/27.jpg)
Analyse [2]Analyse [2]
• Phase d’initialisationPhase d’initialisation ≈ ≈ 50 % de travail inutile50 % de travail inutile
• Cœur de l’algorithme de compressionCœur de l’algorithme de compression
- Sans optimisation de compilationSans optimisation de compilation ≈ ≈ 7 % de travail inutile7 % de travail inutile
- Avec optimisations de compilationAvec optimisations de compilation ≈ ≈ 10 % de travail inutile10 % de travail inutile
12
![Page 28: Evaluation de la quantité de travail (in)utile dans l’exécution des programmes](https://reader033.fdocuments.net/reader033/viewer/2022060117/5586d329d8b42a25758b474b/html5/thumbnails/28.jpg)
Analyse [3]Analyse [3]
• Exemple d’initialisationExemple d’initialisation
prev_match = match_start;. . .
if (prev_length>=MIN_MATCH && match_length<=prev_length) {
check_match(strstart-1, prev_match, prev_length); . . .
}
Affectation inutile dans 95 % des casAffectation inutile dans 95 % des cas
13
![Page 29: Evaluation de la quantité de travail (in)utile dans l’exécution des programmes](https://reader033.fdocuments.net/reader033/viewer/2022060117/5586d329d8b42a25758b474b/html5/thumbnails/29.jpg)
Analyse [4]Analyse [4]
• Au cœur de l’algorithmeAu cœur de l’algorithme
- « Dictionnaire »« Dictionnaire »
- Insertion d’un nouvel élément (chaîne)Insertion d’un nouvel élément (chaîne)
- Recherche de redondanceRecherche de redondance
- Comparaison progressiveComparaison progressive Lazy evaluation mechanismLazy evaluation mechanism
- Insertion d’éléments n’apparaissant qu’une foisInsertion d’éléments n’apparaissant qu’une fois Travail inutileTravail inutile
14
![Page 30: Evaluation de la quantité de travail (in)utile dans l’exécution des programmes](https://reader033.fdocuments.net/reader033/viewer/2022060117/5586d329d8b42a25758b474b/html5/thumbnails/30.jpg)
ConclusionConclusion
• Quantifier le travail inutileQuantifier le travail inutile
- Proportion non négligeable dans GZIPProportion non négligeable dans GZIP
• Comprendre d’où il provientComprendre d’où il provient
- AlgorithmeAlgorithme Inhérent à l’algorithmeInhérent à l’algorithme Du à une implémentation « naïve »Du à une implémentation « naïve »
- CompilationCompilation
• Éviter ce travailÉviter ce travail
- Outil d’aide au programmeurOutil d’aide au programmeur
15