Polyèdres et compilation
Résumé
La première utilisation de polyèdres pour résoudre un problème de compilation, la parallélisation automatique de boucles en présence d'appels de procédure, a été décrite et implémentée il y a près de trente ans. Le modèle polyédrique est maintenant reconnu internationalement et est en phase d'intégration dans le compilateur GCC, bien que la complexité exponentielle des algorithmes associés ait été pendant très longtemps un motif justifiant leur refus pur et simple. L'objectif de cet article est de donner de nombreux exemples d'utilisation des polyèdres dans un compilateur optimiseur et de montrer qu'ils permettent de poser des conditions simples pour garantir la légalité de nombreuses transformations de programme.
Title: Compiling with polyhedra
Abstract: Polyhedra have been used to parallelize loops containing call sites for almost 30 years. The polyhedral model is now internationally known and is being integrated within GCC, although the worst-case exponential complexity of its algorithms has long been a reason to forbid its use in a production compiler. This paper contains numerous examples of polyhedral models and shows that they provide simple conditions to express the legality of transformations.
Title: Compiling with polyhedra
Abstract: Polyhedra have been used to parallelize loops containing call sites for almost 30 years. The polyhedral model is now internationally known and is being integrated within GCC, although the worst-case exponential complexity of its algorithms has long been a reason to forbid its use in a production compiler. This paper contains numerous examples of polyhedral models and shows that they provide simple conditions to express the legality of transformations.