Thèse soutenue

L'automatisation des optimisations source-à -source de programmes en utilisant des techniques de Machine Learning

FR  |  
EN
Auteur / Autrice : Maksim Berezov
Direction : Corinne Ancourt
Type : Thèse de doctorat
Discipline(s) : Informatique temps réel, robotique et automatique
Date : Soutenance le 06/12/2022
Etablissement(s) : Université Paris sciences et lettres
Ecole(s) doctorale(s) : Ecole doctorale Ingénierie des Systèmes, Matériaux, Mécanique, Énergétique (Paris)
Partenaire(s) de recherche : Laboratoire : Centre de recherche en informatique (Fontainebleau, Seine et Marne)
établissement de préparation de la thèse : École nationale supérieure des mines (Paris ; 1783-....)
Jury : Président / Présidente : Frédéric Magoulès
Examinateurs / Examinatrices : Corinne Ancourt, Cédric Bastoul, François Irigoin, Guillaume Iooss, Thiago Teixeira
Rapporteurs / Rapporteuses : Frédéric Magoulès, Cédric Bastoul

Mots clés

FR  |  
EN

Résumé

FR  |  
EN

Les optimisations de code peuvent être appliquées à des niveaux très différents. Par exemple, un programmeur peut optimiser un algorithme afin qu'il ait une complexité de temps de calcul asymptotique plus faible, et un compilateur peut transformer du code afin qu'il s'exécute plus rapidement. Cette thèse se place dans le contexte des transformations de programme source à source. Cela signifie qu'à partir d'un programme écrit dans un langage de programmation source, nous voulons obtenir un programme transformé dans le même langage de programmation qui est plus efficace. En particulier, nous nous sommes concentrés sur les transformations de nids de boucles imbriquées, car elles représentent les parties de code les plus consommatrices. Les transformations de boucles source-à-source ciblées sont le tuilage de boucle, le déroulement et l'échange de boucles.Cette thèse utilise des techniques d'apprentissage automatique. L'objectif principal de cette thèse est de définir une méthode appropriée pour les transformations de programme source-à-source afin d'améliorer une fonction de coût choisie pour une architecture homogène utilisant l'apprentissage automatique.Mes principales contributions se répartissent en deux groupes 1) la collecte d'un ensemble de codes représentatifs pour le ML et sa conception expérimentale optimale, 2) l'application d'une transformation de tuilage de boucle efficace.Le premier groupe se concentre sur les aspects de génération automatique de codes. Nous proposons le générateur COLAGEN pour former des ensembles de données qui capturent des modèles pertinents pour les transformations de boucles. Ce générateur peut produire des ensembles pour l'apprentissage et la validation de tailles arbitraires pour les besoins du Machine Learning. De plus, nous proposons une stratégie basée sur l'Active Learning pour générer des échantillons de données les plus représentatifs. Elle permet soit de réduire le temps d'apprentissage pour atteindre un certain niveau de performance, soit d'obtenir un modèle plus performant sous les mêmes contraintes de temps. Cette technique peut atteindre une vitesse jusqu'à 15 % plus rapide en utilisant la même quantité de données.Le deuxième groupe cible la détermination des paramètres optimaux pour le tuilage de boucle. Deux types de modèles ont été développés. Le premier modèle cible la prédiction des tailles de tuiles optimales. Nous montrons que le meilleur pipeline consiste à prédire 1) l'accélération pour un noyau donné en utilisant des tailles de tuiles potentielles comme caractéristique d'entrée, puis 2) la taille de tuile qui maximise l'accélération prévue. De plus, nous montrons que le pavage parallélépipédique est la forme de tuile la plus appropriée pour la modélisation ML, il atteint des accélérations de 2,45x sur l'ensemble de validation et de 3,35x sur l'ensemble de test. En revanche, les prédictions pour le pavage cubique atteignent respectivement 1,85x et 1,58x. Les performances de notre modèle sont remarquables puisque 80% des gains optimaux sont atteints pour un pavage cubique et 70% pour un pavage parallélépipédique par rapport à ceux obtenus par un autotuneur.Le deuxième modèle cible l'ensemble étendu de paramètres de la transformation de tuilage. Nous proposons une approche pour prédire simultanément 1) la taille des tuiles, 2) les directions de balayage intra-tuiles, 3) les directions de balayage inter-tuiles et 4) la forme des tuiles pour les noyaux qui ont des dépendances de données uniformes. Nous montrons que ce type de paramètres pourrait apporter jusqu'à 30% d'accélération supplémentaire pour les nids de boucles 2D. Il atteint 7% d'accélération supplémentaire en moyenne pour les nids de boucles où les paramètres de direction de balayage sont avantageux. Notre modèle pour les paramètres de tuilage étendus pour les boucles 2D atteint jusqu'à 84 % des performances maximales trouvées par un autotuneur.