Soutenance de stage de DEA 
É valuation de la quantité de travail utile dans 
l’’exécution des programmes 
Stage encadré p...
Dé finition 
• Une instruction dynamique est utile si 
- Elle produit un résultat émis en sortie 
- Elle produit un résult...
3 
Bibliographie 
• Différentes définitions du travail inutile 
- Valeurs mortes dynamiques 
 G. Sohi & A. Butt 
ASPLOS X...
La mé thode utilisé e [1] 
• Exemple simple 
3
La mé thode utilisé e [1] 
• Exemple simple 
3
La mé thode utilisé e [1] 
• Exemple simple 
3
La mé thode utilisé e [1] 
• Exemple simple 
3
La mé thode utilisé e [1] 
• Exemple simple 
3
La mé thode utilisé e [1] 
• Exemple simple 
3
La mé thode utilisé e [1] 
• Exemple simple 
3
La mé thode utilisé e [1] 
• Exemple simple 
3
La mé thode utilisé e [1] 
• Exemple simple 
3
La mé thode utilisé e [2] 
• Graphe de dépendance de donnée 
- Construction au cours de l’’exécution 
- Relier les instruc...
Optimisation 
• Réduction du graphe 
- Suppression des noeoeuds certifiés utiles 
 A mesure que le programme se déroule 
...
Optimisation 
5
Optimisation 
• Réduction du graphe 
- Suppression des noeoeuds certifiés utiles 
 A mesure que le programme se déroule 
...
Mise en oeoeuvre 
• Salto 
- Récupérer des informations statiques 
- Instrumenter du code assembleur 
 Insérer des instru...
Instrumentation [1] 
• Exemple simple 
7
Instrumentation [1] 
• Exemple simple 
7
Instrumentation [1] 
• Exemple simple 
7
Instrumentation [1] 
• Exemple simple 
7
Instrumentation [1] 
• Exemple simple 
7
Instrumentation [2] 
• Différentes phases 
- Sauvegarde du contexte 
- Création de la structure de donnée 
- Traitement de...
Vé rification 
• Ré-exécution du même programme avec 
les mêmes données en entrée 
- Saut des instructions inutiles 
• Vér...
Ré sultats 
• Tests effectués sur GZIP et GUNZIP 
- Sans optimisation de compilation 
 Entre 1 et 11 % de travail inutile...
Analyse [1] 
11 
GZIP sur un fichier texte de 2 Ko 
Sans optimisation de compilation 
Nombre d’instructions dynamiques 
No...
Analyse [2] 
• Phase d’’initialisation 
 ≈≈ 50 % de travail inutile 
• Coeoeur de l’’algorithme de compression 
- Sans op...
Analyse [3] 
• Exemple d’’initialisation 
prev_match = match_start; 
. . . 
if (prev_length>=MIN_MATCH && 
match_length<=p...
Analyse [4] 
• Au coeoeur de l’’algorithme 
- « Dictionnaire » 
- Insertion d’’un nouvel élément (chaî ne) 
- Recherche de...
Conclusion 
• Quantifier le travail inutile 
- Proportion non négligeable dans GZIP 
• Comprendre d’’où il provient 
- Alg...
Prochain SlideShare
Chargement dans…5
×

Evaluation de la quantité de travail (in)utile dans l’exécution des programmes

535 vues

Publié le

Soutenance de stage de DEA - sujet de recherche : Evaluation de la quantité de travail (in)utile dans l’exécution des programmes

Publié dans : Formation
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
535
Sur SlideShare
0
Issues des intégrations
0
Intégrations
3
Actions
Partages
0
Téléchargements
4
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive
  • Bonjour...
  • Expliquer à l’oral la définition retenue du travail inutile (déf. récursive)
    Expliquer d’emblée le but du stage
  • Donner rapidement à l’oral les deux autres définitions et les comparer à la notre.
    Mettre en évidence le fait que les valeurs mortes dynamiques sont un sous ensemble de notre def. Et que les écritures silencieuses sont disjointe à la def.
  • Expliquer le principe de la table de l’état mémoire/registres
  • Introduire les problèmes mémoire posés par cet algorithme !
  • Expliquer à l’oral ce que représente un arc du graphe (un lien de dépendance partant du consommateur d’une ressource et allant à son producteur).
    Expliquer qu’il sagit d’un graphe de dépendance de donnée dynamique ! =&amp;gt; il est impossible de le construire avant l’exécution.
    Dire que chaque instruction dynamique du programme est un noeud.
    Expliquer que le parcours du graphe part d&amp;apos;une source (noeud de sortie ou de branchement) et parcours tous les arcs sortants de ce noeud (opérandes de l&amp;apos;instruction).
    Ainsi de suite récursivement jusqu&amp;apos;à arriver à des puits du graphe (instruction sans opérandes : instructions d&amp;apos;affectation d&amp;apos;une constante ou entrée d&amp;apos;une donnée par l&amp;apos;utilisateur).
    Ne pas oublier de parler de GZIP
  • Gros problème de l’algo précédent : on est obligé de garder en mémoire une quantité d’information très importante pendant l’exécution du programme =&amp;gt; impossible de tester de gros programmes (limité à 300 000 instructions).
    Réduction du graphe =&amp;gt; réduction de l’occupation mémoire.
    Grace aux optimisations proposées qui ont été implémentées (libération mémoire des noeuds certifiés utiles seulement) =&amp;gt; jusqu’à 1 000 000 d’instructions (gain d’un facteur 3 à 4).
    Expliquer que les noeuds peuvent être certifiés utiles à mesure que le programme se déroule si on a des sorties intermédiaires.
    Transition avec prec : solution au problème de mémoire rencontrés : optimisation.
  • Gros problème de l’algo précédent : on est obligé de garder en mémoire une quantité d’information très importante pendant l’exécution du programme =&amp;gt; impossible de tester de gros programmes (limité à 300 000 instructions).
    Réduction du graphe =&amp;gt; réduction de l’occupation mémoire.
    Grace aux optimisations proposées qui ont été implémentées (libération mémoire des noeuds certifiés utiles seulement) =&amp;gt; jusqu’à 1 000 000 d’instructions (gain d’un facteur 3 à 4).
    Expliquer que les noeuds peuvent être certifiés utiles à mesure que le programme se déroule si on a des sorties intermédiaires.
    Transition avec prec : solution au problème de mémoire rencontrés : optimisation.
  • Gros problème de l’algo précédent : on est obligé de garder en mémoire une quantité d’information très importante pendant l’exécution du programme =&amp;gt; impossible de tester de gros programmes (limité à 300 000 instructions).
    Réduction du graphe =&amp;gt; réduction de l’occupation mémoire.
    Grace aux optimisations proposées qui ont été implémentées (libération mémoire des noeuds certifiés utiles seulement) =&amp;gt; jusqu’à 1 000 000 d’instructions (gain d’un facteur 3 à 4).
    Expliquer que les noeuds peuvent être certifiés utiles à mesure que le programme se déroule si on a des sorties intermédiaires.
    Transition avec prec : solution au problème de mémoire rencontrés : optimisation.
  • On ne passe pas trop de temps sur l’implémentation mais il nous a semblé intéressant de mettre en lumière la méthode qui nous a permis de récupérer des information dynamiques : l’instrumentation.
    Expliquer à l’oral que l’état du système permet de connaitre le niveau de la fenêtre de registres dans le cas de l’architecture utilisée (Sparc).
  • Dans notre cas nous avions besoin de -&amp;gt; transp suivant
  • La façon dont nous avons instrumenté chaque instruction.
    Expliquer le travail qui est fait au niveau de chacune des phases.
  • Expliquer que cette vérification à permis d’affiner l’implémentation du premier programme et de s’assurer que le travail inutile l’était bien.
    Expliquer qu’on n’a réussi à le faire tourner que sur un niveau d’optimisation de compilation nul.
  • Expliquer qu’on a écarté de ces chiffres le cas particulier ou on recompresse/décompresse un fichier déjà compressé.
  • Donner les conditions de tests à l’oral + marquer de quoi il sagit
  • Ce qu’on a appris sur GZIP…
  • Evaluation de la quantité de travail (in)utile dans l’exécution des programmes

    1. 1. Soutenance de stage de DEA É valuation de la quantité de travail utile dans l’’exécution des programmes Stage encadré par P. Michaud et effectué par B. Vidal Projet CAPS
    2. 2. Dé finition • Une instruction dynamique est utile si - Elle produit un résultat émis en sortie - Elle produit un résultat utilisé comme opérande d’’une instruction utile - C’’est un branchement 2
    3. 3. 3 Bibliographie • Différentes définitions du travail inutile - Valeurs mortes dynamiques  G. Sohi & A. Butt ASPLOS X - oct. 2002 - É critures silencieuses  M. Lipasti, K. Lepak & G. Bell IEEE, vol. 50, No. 11 - nov. 2001 - É valuation de l’’ensemble du travail inutile après exécution
    4. 4. La mé thode utilisé e [1] • Exemple simple 3
    5. 5. La mé thode utilisé e [1] • Exemple simple 3
    6. 6. La mé thode utilisé e [1] • Exemple simple 3
    7. 7. La mé thode utilisé e [1] • Exemple simple 3
    8. 8. La mé thode utilisé e [1] • Exemple simple 3
    9. 9. La mé thode utilisé e [1] • Exemple simple 3
    10. 10. La mé thode utilisé e [1] • Exemple simple 3
    11. 11. La mé thode utilisé e [1] • Exemple simple 3
    12. 12. La mé thode utilisé e [1] • Exemple simple 3
    13. 13. La mé thode utilisé e [2] • Graphe de dépendance de donnée - Construction au cours de l’’exécution - Relier les instructions dépendantes  Registres  Mémoire • Parcours du graphe - Sources (sorties ou branchements) - Marquage des instructions utiles 4
    14. 14. Optimisation • Réduction du graphe - Suppression des noeoeuds certifiés utiles  A mesure que le programme se déroule  Un noeoeud utile ne peut devenir inutile - Suppression des noeoeuds certifiés inutiles  Une instruction n’’est accessible depuis aucune ressource  Système de ramasse-miette 5
    15. 15. Optimisation 5
    16. 16. Optimisation • Réduction du graphe - Suppression des noeoeuds certifiés utiles  A mesure que le programme se déroule  Un noeoeud utile ne peut devenir inutile - Suppression des noeoeuds certifiés inutiles  Une instruction n’’est accessible depuis aucune ressource  Système de ramasse-miette 5
    17. 17. Mise en oeoeuvre • Salto - Récupérer des informations statiques - Instrumenter du code assembleur  Insérer des instructions • Au cours de l’’exécution - Récupérer des informations dynamiques  Ordre d’’exécution  Adresses des accès à la mémoire  É tat du système 6
    18. 18. Instrumentation [1] • Exemple simple 7
    19. 19. Instrumentation [1] • Exemple simple 7
    20. 20. Instrumentation [1] • Exemple simple 7
    21. 21. Instrumentation [1] • Exemple simple 7
    22. 22. Instrumentation [1] • Exemple simple 7
    23. 23. Instrumentation [2] • Différentes phases - Sauvegarde du contexte - Création de la structure de donnée - Traitement des opérandes - Traitement des résultats - Parcours du graphe si nécessaire - Restauration du contexte 8
    24. 24. Vé rification • Ré-exécution du même programme avec les mêmes données en entrée - Saut des instructions inutiles • Vérification que les deux exécutions sont équivalentes 9
    25. 25. Ré sultats • Tests effectués sur GZIP et GUNZIP - Sans optimisation de compilation  Entre 1 et 11 % de travail inutile en moyenne - Avec optimisations de compilation  Entre 10 et 12 % de travail inutile en moyenne - Dépend du type de traitement  Compression  Décompression - Dépend du fichier traité 10
    26. 26. Analyse [1] 11 GZIP sur un fichier texte de 2 Ko Sans optimisation de compilation Nombre d’instructions dynamiques Nombre d’instructions inutiles
    27. 27. Analyse [2] • Phase d’’initialisation  ≈≈ 50 % de travail inutile • Coeoeur de l’’algorithme de compression - Sans optimisation de compilation  ≈≈ 7 % de travail inutile - Avec optimisations de compilation  ≈≈ 10 % de travail inutile 12
    28. 28. Analyse [3] • Exemple 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 cas 13
    29. 29. Analyse [4] • Au coeoeur de l’’algorithme - « Dictionnaire » - Insertion d’’un nouvel élément (chaî ne) - Recherche de redondance - Comparaison progressive  Lazy evaluation mechanism - Insertion d’’éléments n’’apparaissant qu’’une fois  Travail inutile 14
    30. 30. Conclusion • Quantifier le travail inutile - Proportion non négligeable dans GZIP • Comprendre d’’où il provient - Algorithme  Inhérent à l’’algorithme  Du à une implémentation « naï ve » - Compilation • É viter ce travail - Outil d’’aide au programmeur 15

    ×