Compilation optimisante et parallelisation automatique (OPC)
Description
L'objectif du cours est d’une part de dresser un état de l’art des techniques d’optimisation utilisées dans les compilateurs actuels (gcc, icc, llvm), mais aussi d’aborder les principales problématiques de recherche dans ce domaine. Dans une première partie du cours, on s'intéressera aux différents facteurs qui influent sur la performance des applications ainsi qu'aux méthodes et outils qui permettent de détecter un problème. Nous aborderons ensuite les techniques d'optimisation mises en œuvre par un compilateur pour améliorer ces performances. Dans une seconde partie du module , le cours s’intéressera aux techniques d’optimisation et de parallélisation de boucles basées sur la compilation polyédrique. Cette partie s’articulera en deux temps, tout d’abord une présentation des principales transformations de boucles et leur impact sur les performances, pour lesquelles on montrera ensuite comment elles peuvent être automatisées dans un compilateur.Mots-clés
Architectures de processeurs, arhitectures spécialiséesPrérequis
Bases en architecture des processeur, compilation et systèmesContenu
Aspects de la performance des applications- Mesure de performance: techniques et outils
- Facteurs architecturaux (caches, prédicteur de branchement)
- Facteurs logiciels (interprétation, JIT, précision...)
- Pourquoi/comment optimiser les nids boucles
- Principes de la compilation polyédrique
- Introduction à la parallélisation automatique