HPCPersonnalpage

Henri-Pierre Charles

Slides

Filed in: Rech.Slides · Modified on : Fri, 15 Jan 10

Slides of my talks

Versailles university has started five years ago a strong support in free software diffusion. Each year 15000 copy of a DVD containing Openoffice.org and many other software are offered to all the students. Theses software and data are used later during the academic year by the students for the C2I (French undergraduate diploma for computing science usage), and for other teaching. The software diffusion use the DVD format against the download model for many reasons.

Les compilateurs sont généralement construits par une approche par "raffinement successif" : la grammaire du langage est définie, puis des analyseurs lexical et syntaxiques transforment le langage dans une forme intermédiaire qui permet enfin de produire le code binaire final. Des optimisations sont effectuées sur cette chaîne de compilation pour essayer de transformer les constructions de haut niveau (structures de données, fonctions, boucles) vers le langage machine grâce à des raffinements successifs. Dans ce modèle, la contrainte a satisfaire est le modèle d'architecture du processeur.

Malheureusement la complexité croissante des architectures (plusieurs jeux d'instructions, jeux d'instructions spécialisés) et le changement de modèle de programmation (multi-coeurs, multi-threads, GPU, ...) conduisent vers une complexité sans cesse croissante.

Dans cette présentation, je montrerai qu'en utilisant une approche très tardive de la production de code, il est possible de prendre en compte des paramètres qui ne sont, en général, pas utilisés : alignement mémoire, valeur des données, parallélisme d'instruction, instructions multimédia, etc.

Grâce à cette approche, il est possible d'atteindre des performances quasi optimales sur des processeurs comme l'Itanium, le Cell ou le power4 SP2 (utilisé dans la machine BlueGene) pour des applications multimédia.

Cette approche est basée sur une description détaillée de l'architecture : la représentation binaire des instructions qui permet de créer des générateurs de code spécifiques grace à notre outil HPBCG (High Performance Binary Code Generation http://hpbcg.org/)

La génération de code binaire à partir d'un programme suit à la fois la croissance de la complexité des applications et des architectures matérielles. Il existe un grand nombre de solutions pour génerer un code exécutable plus ou moins tardivement dans la chaîne de compilation.

Dans ce séminaire je ferai une présentation des solutions existantes, de la compilation statique classique en passant par les jit, les GPU, les interpréteurs, etc.

Je tenterai de montrer à quel moment les optimisations classiques s'appliquent le mieux et je terminerai par la présentation d'un outil de génération dynamique de code : HPBCG et les expérimentations de transformations de la chaine de compilation menées avec cet outil.


Powered by PmWiki