Thèse soutenue

Techniques avancées de génération de code pour la performance

FR  |  
EN
Auteur / Autrice : Jules Pénuchot
Direction : Joël Falcou
Type : Thèse de doctorat
Discipline(s) : Informatique
Date : Soutenance le 24/09/2024
Etablissement(s) : université Paris-Saclay
Ecole(s) doctorale(s) : École doctorale Sciences et technologies de l'information et de la communication
Partenaire(s) de recherche : Référent : Faculté des sciences d'Orsay
graduate school : Université Paris-Saclay. Graduate School Informatique et sciences du numérique (2020-….)
Laboratoire : Laboratoire interdisciplinaire des sciences du numérique (Orsay, Essonne ; 2021-....)
Jury : Président / Présidente : Christine Paulin-Mohring
Examinateurs / Examinatrices : David Hill, Thierry Géraud, Amina Guermouche
Rapporteur / Rapporteuse : David Hill, Thierry Géraud

Résumé

FR  |  
EN

En réponse à la demande croissante de puissance de calcul,les constructeurs de matériel proposent de nouvelles architectures parallèles de très différentes natures, et ayant chacune leurs propres API et modèle de programmation.Cela rend les applications haute performance plus complexes à développer avec des méthodes de programmation traditionnelles, d'autant plus lorsque plusieurs architectures sont ciblées.En réponse à cette demande, des bibliothèques exploitant la génération de code à la compilation furent développées pour faciliter la programmation haute performance avec des abstractions de haut niveau tels que les langages dédiés externes. Dans cette thèse, nous explorons en premier temps les techniques de métaprogrammation existant à travers un large panel de langages, puis nous évaluons les techniques actuelles de métaprogrammation de templates C++dans le cadre de la génération de noyaux de calculs de type BLAS. Nous couvrons ensuite de nouvelles techniques de métaprogrammation basées sur l'exécution de code C++ à la compilation en implémentant des parsers pour deux langages: Brainfuck, et un langage appelé Tiny Math Language (TML). Le parser Brainfuck est fourni avec plusieurs backends de génération de code pour étudier différentes techniques de génération de code, tandis que TML est utilisé pour étudier la génération de code en utilisant des bibliothèques portables haute performance. Pour évaluer l'impact de ces diverses techniques de métaprogrammation,nous proposons une nouvelle méthodologie de benchmarking qui exploite le profiler intégré de Clang, ce qui permet l'analyse de performance en temps de compilation au-delà des mesures de performance en boîte noire.