Optimisation et transformations de code

Optimisation et transformations de code
Master InformatiqueParcours Science et ingénierie du logiciel (SIL)

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

Contacts

Responsable(s) de l'enseignement