Techniques avancées de génération de code pour la performance
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é
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.