Site Unistra - Accueil
Faire un don

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.

Discipline(s)

  • 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

Contact

Responsable(s) de l'enseignement
Philippe Clauss : clauss@unistra.fr