Description
Cette UE présente des techniques de transformation de programmes permettant d’améliorer sensiblement leurs performances en termes de vitesse d’exécution et de consommation d’énergie.
Compétences requises
À l'entrée de cet enseignement, un étudiant devrait savoir :
Écrire des programmes complexes dans un langage impératif
Les mécanismes fondamentaux d’architecture des ordinateurs (principes des processeurs et des mémoires).
Les mécanismes fondamentaux des compilateurs.
Compétences visées
À l'issue de cet enseignement un étudiant saura :
comprendre les interactions logiciels-matériels
améliorer sensiblement la performance des programmes : temps d’exécution et consommation d’énergie
identifier les sources et les moyens d’amélioration de performance : parallélisme (multi-threading, vectorisation), localité des accès aux données, spécialisation, mémoïsation de fonctions.
Disciplines
- Informatique
Syllabus
Analyse de boucles et de boucles imbriquées : analyse de dépendances, localité temporelle et spatiale des accès aux données, validité des transformations.
Transformation de boucles et de boucles imbriquées : échange de boucles, fusion/fission de boucles, pavage de boucles, torsion de boucles.
Généralisation des transformations de boucles avec le modèle polyédrique.
Transformations génériques : réduction du nombre d’opérations, pré-calculs, réduction du nombre de conditionnelles, réduction de force, calcul approximé.
Optimisations des fonctions : inlining, spécialisation, mémoïsation (fonctions récursives).
Techniques d’analyse et de profilage de code : outils de profilage (gprof, perf, papi, likwid), registres compteurs, modèle roofline.
Bibliographie
Fedor G Pikus, 2021. The Art of Writing Efficient Programs: An advanced programmer's guide to efficient hardware utilization and compiler optimizations using C++ examples. Packt Publishing.
Paul Feautrier and Christian Lengauer. 2011. Polyhedron model. In Encyclopedia of Parallel Computing, David Padua (Ed.). Springer US, 1581–1592. DOI:http://dx.doi.org/10.1007/978-0-387-09766-4_502