Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

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

671 visualizaciones

Publicado el

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

Publicado en: Educación
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

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

×