Automatic Source-to-Source Optimizations using Machine Learning - PASTEL - Thèses en ligne de ParisTech Accéder directement au contenu
Thèse Année : 2022

Automatic Source-to-Source Optimizations using Machine Learning

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

Maksim Berezov
  • Fonction : Auteur
  • PersonId : 1316161
  • IdRef : 273181351

Résumé

Code optimizations could be applied at very different levels. For instance, one could propose an algorithm that would have lower asymptotic computation time complexity, and another - a compiler - could generate code that runs faster. This thesis takes place in the context of source-to-source program transformations. This means that having a program written in a source programming language (in our case C language), we want to obtain a transformed program in the same programming language which is more efficient. The cost function that guides the optimization can vary: execution time, compile time, memory consumption, a combination of different metrics, etc. The most significant and used in the context of this Ph.D. is the execution time and memory consumption. In particular, we focused on nested loop transformations, because typically they are the most consuming part of a program. The common source-to-source loop transformations targeted in this thesis are loop tiling, loop unrolling and loop interchange.This thesis uses machine learning techniques. Machine learning is a class of artificial intelligence methods, a distinctive feature of which is not a direct solution to the problem, but which learns by applying solutions to many similar tasks. The main objective of this thesis is to define an appropriate recipe for source-to-source program transformations to improve a chosen cost function for a homogeneous architecture using Machine Learning.My main contributions fall into two main groups 1) Data collection of representative code patterns for the ML purposes and optimal experimental design, 2) Application of an efficient loop tiling transformation.The first group focuses on aspects of synthetic code generation. We propose the COLAGEN generator to collect data that captures relevant patterns for loop transformations. This generator can produce training and validation sets of arbitrary sizes for Machine Learning needs. In addition, we propose a strategy based on Active Learning to generate the most representative data samples. It helps either to reduce the training time to reach a certain level of performance or to obtain a more efficient model under the same time constraints. This technique achieves up to 15% more speed-up using the same amount of data.The second group targets the determination of the optimal parameters for the loop tiling transformation. Two types of models have been developed. The first model targets the prediction of optimal tile sizes. We show that the best pipeline is to predict 1) the speedup for a given kernel using potential tile sizes as input feature, and then 2) the tile size that maximizes the predicted speedup. The parallelepiped tiling seems the most appropriate tile shape for ML modeling, it achieves 2.45x speedups on the validation set and 3.35x on the test set. In contrast, the predictions for cubic tiling reached 1.85x and 1.58x respectively. Our model performances are remarkable since 80% of the optimal gains are reached for cubic tiling and 70% for parallelepiped tiling compared to those obtained by an autotuner.The second model targets the extended set of parameters of the loop tiling transformation. We propose an approach to simultaneously predict 1) tile size, 2) intra-tile scanning directions, 3) inter-tile scanning directions, and 4) tile shape for kernels that have uniform data dependencies. We show that this kind of parameters could bring up to 30% additional speedups for 2D loop nests. It achieves 7% more speedups on average for kernels where the scanning direction settings are beneficial. Our model for extended tile settings for 2D loops achieves up to 84% of the peak performance found by an autotuner.
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.
Fichier principal
Vignette du fichier
103989_BEREZOV_2022_archivage.pdf (3.45 Mo) Télécharger le fichier
Origine : Version validée par le jury (STAR)

Dates et versions

tel-04307172 , version 1 (25-11-2023)

Identifiants

  • HAL Id : tel-04307172 , version 1

Citer

Maksim Berezov. Automatic Source-to-Source Optimizations using Machine Learning. Robotics [cs.RO]. Université Paris sciences et lettres, 2022. English. ⟨NNT : 2022UPSLM098⟩. ⟨tel-04307172⟩
76 Consultations
175 Téléchargements

Partager

Gmail Facebook X LinkedIn More