Méthodes d’optimisation scalables dans le modèle polyédrique
Institution:
Paris 11Disciplines:
Directors:
Abstract EN:
Limited by ever-increasing power consumption and control complexity, current processors have evolved to multiprocessor architectures on a chip with increasingly many cores per chip and multiple threads per core. Compilers are responsible for translating the idealistic operational semantics of the source program into a form that makes efficient use of a highly complex heterogeneous machine. The polyhedral model is a sound mathematical abstraction to represent programs with affine control loops. It alleviates many tradeoffs hampering current optimizing compilers. In the first part of this thesis, we discuss the problems faced by compilers. We abstract from these and show how a semi-automatic approach alleviates the user from producing complex code for long sequences of transformations. In the second part, we discuss the scheduling problem. We provide a new formulation to express the set of all legal multidimensional schedules in a single optimization problem. We take a fresh look at dependence analysis and program legality. This allows us to devise a complex sequences automatic correction process to fix illegal transformations. In the third part we discuss the code generation issues and build the first fully reentrant framework based on the polyhedral model. We introduce the concept of code generation optimizing transformations and schedule equivalence to tailor syntactical optimizations at the finest possible grain. All the contributions have been implemented either in the “URUK” framework on top of the Open64 compiler, or as part of IBM's XLC compiler.
Abstract FR:
Limités par une augmentation incontrôlée de la dissipation d'énergie et de la complexité des circuits de contrôle, les processeurs actuels évoluent vers des architectures multi-coeurs avec de plus en plus de threads par coeur. La tâche consistant à générer du code efficace pour ces machines hautement hétérogènes incombe aux compilateurs. Le modèle polyédrique est une abstraction mathématique qui permet de représenter l'exécution de programmes contenant des boucles de contrôle affines. Il permet de résoudre des problèmes de compromis présents dans les compilateurs traditionnels. Dans la première partie de cette thèse, nous étudions les problèmes rencontrés par les compilateurs. Grâce au modèle polyédrique, nous montrons comment une méthode semi-automatique permet de passer outre. Dans la seconde partie, nous nous penchons sur le problème de l’ordonnancement et donnons une formulation multidimensionnelle qui exprime l'ensemble des ordonnancements légaux sous forme d'un seul problème global. Nous revisitons l'analyse de dépendances et proposons une méthode pour corriger des séquences de transformations complexes. Dans la troisième partie nous discutons le problème de la génération de code et nous construisons le premier générateur de code polyédrique qui permet la réentrance. Nous introduisons également les notions de transformation à la génération de code et d'équivalence d'ordonnancement pour contrôler les optimisations de programme au niveau le plus fin possible. Les contributions de cette thèse ont été implémentées dans l'environnement ``URUK'' et dans le compilateur XLC d'IBM