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ées

Prérequis

Bases en architecture des processeur, compilation et systèmes

Contenu

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...)
Transformation de boucle et parallélisation automatique
  • Pourquoi/comment optimiser les nids boucles
  • Principes de la compilation polyédrique
  • Introduction à la parallélisation automatique

Compétences acquises

Enseignants

Steven Derrien (responsable), Erven Rohou