Calcul automatique de bornes sur la complexité I/O de programmes affines
Auteur / Autrice : | Auguste Olivry |
Direction : | Fabrice Rastello |
Type : | Thèse de doctorat |
Discipline(s) : | Informatique |
Date : | Soutenance le 08/06/2022 |
Etablissement(s) : | Université Grenoble Alpes |
Ecole(s) doctorale(s) : | École doctorale mathématiques, sciences et technologies de l'information, informatique (Grenoble ; 199.-....) |
Partenaire(s) de recherche : | Laboratoire : Laboratoire d'informatique de Grenoble |
Jury : | Président / Présidente : Laure Gonnord |
Examinateurs / Examinatrices : Uday Reddy Bondhugula, Sven Verdoolaege | |
Rapporteurs / Rapporteuses : Sebastian Hack, Laura Grigori |
Mots clés
Mots clés contrôlés
Mots clés libres
Résumé
L’évaluation de la complexité d’un algorithme est une étape importante lors du développement d’une application, de par son impact sur son temps d’exécution et sa consommation énergétique. La complexité arithmétique, qui est le nombre d’opérations effectuées par un programme, est en général facile à caractériser pour un programme affine, composé de boucles simples avec des bornes statiques. La complexité de mouvement de données (ou complexitéI/O) est plus complexe à évaluer. En effet, elle se réfère à la quantité minimale de données à transférer entre une mémoire lente de grande capacité, et une mémoire rapide de capacité limitée, et ce en considérant tous les ordonnancements valides des opérations. Dans cette thèse, nous présentons IOOpt, un outil automatisé capable de calculer des bornes symboliques sur la complexité I/O de programmes affines. Étant donné une description d’un programme affine, il génère : 1. une borne inférieure sur la complexité I/O sous la forme d’une expression symbolique dépendant de la taille de la mémoire rapide et des paramètres du programme ; 2. une borne supérieure qui permet d’évaluer la précision de la borne inférieure 3. une recommandation de tuilage (taille des tuiles et permutation des boucles) quipermet d’atteindre la borne supérieure. Cet outil est implémenté sous la forme d’une application open-source, et peut être testé sur la page https://iocomplexity.corse.inria.fr/.Le développement de cet outil a été possible grâce à la combinaison de résultats mathématiques avancés avec des outils puissants d’analyse de programmes, tels la représentation polyédrique. Notre modèle de mouvement de données est notamment basé sur celui proposé parHong&Kung (« Red-blue pebble game »), adapté pour pouvoir décomposer et recomposer des programmes complexes. L’applicabilité de cette approche est démontrée en combinant des bornes symboliques sur un large panel de programmes affines. Dans de nombreux cas, les bornes trouvées par IOOpt sont optimales, ou proches de la borne optimale par un facteur constant.