Fonctions élémentaires : vers des implémentations vectorisables, efficaces, et automatiquement générées
Auteur / Autrice : | Hugues de Lassus Saint-Genies |
Direction : | David Defour, Guillaume 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 ; 1999-....) |
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 |
Rapporteur / Rapporteuse : Florent Dupont de Dinechin, Fabienne Jézéquel |
Mots clés
Résumé
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.