Thèse soutenue

Fonctions élémentaires : vers des implémentations vectorisables, efficaces, et automatiquement générées

FR  |  
EN
Auteur / Autrice : Hugues de Lassus Saint-Genies
Direction : David DefourGuillaume Revy
Type : Thèse de doctorat
Discipline(s) : Informatique
Date : Soutenance le 17/05/2018
Etablissement(s) : Perpignan
Ecole(s) doctorale(s) : École doctorale Énergie environnement (Perpignan)
Partenaire(s) de recherche : Laboratoire : Digits- Architectures et Logiciels Informatiques / DALI
Jury : Examinateurs / Examinatrices : Florent Dupont de Dinechin, Fabienne Jézéquel, Marc Daumas, Lionel Lacassagne, Daniel Ménard, Éric Petit
Rapporteurs / Rapporteuses : Florent Dupont de Dinechin, Fabienne Jézéquel

Résumé

FR  |  
EN

Les fonctions élémentaires sont utilisées dans de nombreux codes de calcul haute performance. Bien que les bibliothèques mathématiques (libm) auxquelles font appel ces codes proposent en général plusieurs variétés d'une même fonction, celles-ci sont figées lors de leur implémentation. Cette caractéristique représente un frein à la performance des programmes qui les utilisent car elles sont conçues pour être polyvalentes au détriment d'optimisations spécifiques. De plus, la duplication de modèles partagés rend la maintenance de ces libms plus difficile et sujette à l'introduction de bugs. Un défi actuel est de proposer des "méta-outils" visant la génération automatique de code performant pour l'évaluation des fonctions élémentaires. Ces outils doivent permettre la réutilisation d'algorithmes efficaces et génériques pour différentes variétés de fonctions ou architectures matérielles. Il devient alors possible de générer des libms optimisées pour des besoins très spécifiques avec du code générateur factorisé, qui facilite sa maintenance. Dans un premier temps, nous proposons un algorithme original permettant de générer des tables sans erreur pour les fonctions trigonométriques et hyperboliques. Puis nous étudions les performances de schémas d'évaluation polynomiale vectorisés, premier pas vers la génération de fonctions vectorisées efficaces. Enfin, nous proposons une méta-implémentation d'un logarithme vectorisé, factorisant la génération de code pour différents formats et architectures. Ces contributions sont compétitives comparées à d'autres solutions, justifiant le développement de tels méta-codes.