Alain Darte Paul Feautrier Chargé de recherches au CNRS Professeur ENS-Lyon Équipe Compsys Compilation avancée: analyse de programmes, optimisations de code. A suivre de préférence après le cours de base de compilation (Tanguy Risset). Des connections également avec les cours d’algorithmique.
32
Embed
Alain Darte Paul Feautrier Chargé de recherches au CNRS Professeur ENS-Lyon Équipe Compsys LIP, ENS-Lyon Compilation avancée: analyse de programmes, optimisations.
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Alain Darte Paul FeautrierChargé de recherches au CNRS Professeur ENS-Lyon
Équipe Compsys
LIP, ENS-Lyon
Compilation avancée: analyse de programmes, optimisations de code.
A suivre de préférence après le cours de base de compilation (Tanguy Risset).
Des connections également avec les cours d’algorithmique.
Plan
• Introduction.
– Organisation du cours.
– Problématique, questions.
– Quelques thèmes abordés.
– Outils mathématiques rencontrés.
• Quelques problèmes sur des processeurs spécifiques.
• Pipeline logiciel.
• Transformations de boucles.
• Équations récurrentes uniformes.
Organisation du cours
• Choix des thèmes du cours en fonction de ce que vous savez déjà (Master 2 notamment) et du nombre de participants.
• Une grosse moitié de cours « magistraux » pour
– donner les bases,
– présenter quelques techniques en détails,
– et introduire quelques problèmes.
• Une seconde partie de découverte de sujets plus pointus par lecture et présentation d’articles.
• Évaluation: 1 devoir à la maison, 1 examen final éventuel, attitude en cours, rapport + exposé.
Problématique
• Comprendre ce qui peut se faire automatiquement dans le domaine de la compilation (souvent avec des problèmes liés à la mémoire et au parallélisme):
– Formalisation des problèmes (modèle, fonction objective).
– Étude des problèmes (NP-complétude?, algorithmes).
– Étude des modèles (limites, contre-exemples).
• Établir des liens entre différents problèmes/théories.
• Applications:
– Parallélisation automatique (et compilation de HPF).
– Optimisations avancées en compilation “traditionnelle”.
– Compilation de circuits (ex: compilateur PICO des HP Labs/Synfora, MMAlpha ici).
Évolution de la thématique
Réseaux systoliques Vectorisation de boucles
Équations récurrentes uniformes
Parallélisation automatique
Transformations de boucles
High Performance Fortran
ILP et processeurs embarqués
Langages de haut niveau (Matlab, OpenMP,UPC,
CoArray Fortran, …)
“Compilation” de circuits spécialisés
Sujets abordés
• Rappels d’ordonnancement « de base »: graphes de tâches acycliques, contraintes de ressources, “deadlines”.
• Ordonnancement cyclique et pipeline logiciel: liens avec le retiming. Supports hardware pour le pipeline logiciel: registres rotatifs, de prédication, avec spéculation.
• Compilation-parallélisation; premier pas: transformations de boucles. Algorithmes d’Allen et Kennedy, de Lamport. Transformation unimodulaires. Réécriture de code.
• Systèmes d’équations récurrentes uniformes: calculabilité, ordonnancement, liens avec la parallélisation. Synthèse de circuits: méthode systolique de base et extensions.
• Localité et allocation mémoire: fusion de boucles, contraction de tableaux, repliement mémoire.
Outils mathématiques
• Modélisation:
– Systèmes d’équations récurrentes uniformes.
– Graphes de toutes sortes (control-flow, de dominance, d’ínterférence, de dépendances, etc.).
– Polyèdres, réseaux (« lattices »).
• Analyse:
– NP-complétude.
– Algorithmes de graphes.
– Techniques d’ordonnancement.
– Algèbre linéaire. Formes d’Hermite et de Smith.
– Calculs sur polyèdres, programmation linéaire.
Plan
• Introduction.
• Quelques problèmes sur des processeurs spécifiques