Polyhedral Compilation for Domain Specific Languages - Inria - Institut national de recherche en sciences et technologies du numérique Access content directly
Theses Year : 2019

Polyhedral Compilation for Domain Specific Languages

Compilation polyédrique pour les langages dédiés

Abstract

In the recent years, the complexity of optimizing compilers has increased significantly due to increasing diversity of programming languages and heterogeneity of target architectures. Even though there has been a lot of progress with the general purpose compilers, they are not been able to extract peak level performance provided by the specialized libraries. To bridge this performance gap domain specific compilers(DSLs) are proposed, by restricting input to a specialized domain it can perform more aggressive transformations needed to achieve peak performance while being more flexible than standard libraries. One of the major optimization needed to obtain high performance on modern heterogeneous architectures is loop transformations to exploiting locality and automatic parallelization. The polyhedral model has evolved as a highly efficient, reusable generic framework for loop optimizations especially for regular static control affine programs. In this thesis we explore the suitability of polyhedral loop transformation framework in context of compiling Image processing and Deep learning pipelines. We study the challenges of adapting a generic polyhedral scheduler for DSLs. We propose various extensions to the scheduler to find optimal schedule by modeling various hardware and application characteristics. We present method to handle reductions in polyhedral model. In the state-of-the-art polyhedral compilers there was no support for reductions. The reduction loop was treated as a serial loop and this may be a major bottleneck for several applications especially on GPUs. We propose languages extensions in PENCIL to express arbitrary user-defined reductions. We encode this reduction information in polyhedral model using reduction dependences. We show how to use this dependences in polyhedral scheduler to exploit parallelization of reduction loops. We also propose a template based code generation for emitting highly efficient reduction code for GPUs. We validate our approach through experiments by comparing automatically generated code with the highly tuned library. Exploiting locality is a key factor in achieving high performance on the complex processors with complex memory/computation hierarchies. The cost function used in the Pluto algorithm optimizes only temporal locality. Exploiting spatial locality is as important as temporal locality and it has implications on vectorization and coalesced memory accesses. we propose a new unified algorithm for optimizing parallelism and locality in loop nests, that is capable of modeling temporal and spatial effects of multiprocessors and accelerators with deep memory hierarchies and multiple levels of parallelism. It orchestrates a collection of parametrizable optimization problems for locality and parallelism objectives over a polyhedral space of semantics-preserving transformations. We discuss the rationale for this unified algorithm, and validate it on a collection of representative computational kernels/benchmarks. We study the challenges of using polyhedral compilation techniques for a complex, real-world, end-to-end image processing application called SLAMBench. The SLAMBench has several non-affine kernels that not readily amendable for polyhedral compilation.We show the usefulness of summary functions to compile such non-affine parts of the program thus extending the reach of polyhedral compilation. We also present prl runtime library needed to avoid redundant data transfers between device and host. We validate our high-level compilation approach through experiments comparing the performance of the generated code with the highly optimized manual version of the SLAMBench. We also study the applicability of polyhedral compilation for optimizing deep learning pipelines. Most of the operations in the deep learning pipelines are affine hence are suitability for polyhedral compilation. Our framework is build on TVM an end-to-end deep learning compilation framework with support for multiple front ends such as MXNet, Tensorflow etc. and supports multiple different architectures. We extract the polyhedral representation from TVM IR and use polyhedral scheduler along with performance model based autotuning to automatically find the schedules for TVM operators. In this context we extend the polyhedral scheduler to find optimal schedules for different sizes and shapes of the tensor. We model the amount of data reuse for the case when all the parameter values are known, and formulate the constraints to ILP to maximize data reuse. We also present a performance model based autotuning technique that can cut down the tuning time from hours to minutes. We conduct experiments on the common deep learning benchmarks validating the effectiveness and general applicability of our technique in providing portable performance. Finally, we summarize our work and present concluding remarks as well as future research direc- tions. We believe with the improvements proposed in this dissertation improves the effectiveness of polyhedral framework as a loop transformation framework for compiling DSLs.
Au cours des dernières années, la complexité de l’optimisation du compilateur a considérablement augmenté en raison de la diversité croissante des langages de programmation et de l’hétérogénéité des cibles architectures. Même si les compilateurs à usage général ont beaucoup progressé, ils ne sont pas en mesure d’extraire les performances de pointe fournies par les bibliothèques spécialisées. Pour remédier à cette situation, des compilateurs spécifiques au domaine (DSL) sont proposés, en limitant la saisie à un domaine spécialisé, il peut effectuer des transformations plus agressives nécessaires pour atteindre le pic performances tout en étant plus flexible que les bibliothèques standard. Une des optimisations majeures des transformations de boucle sont nécessaires pour obtenir des performances élevées sur les architectures hétérogènes modernes à exploiter la localité et la parallélisation automatique. Le modèle polyédrique a évolué comme un cadre générique hautement efficace et réutilisable pour l’optimisation des boucles, en particulier pour programmes affines de contrôle statique réguliers. Dans cette thèse, nous explorons la pertinence de cadre de transformation de boucle polyédrique dans le contexte de la compilation Traitement de l’image et Pipelines d’apprentissage en profondeur. Nous étudions les défis de l’adaptation d’un générique ordonnanceur polyédrique pour DSL. Nous proposons diverses extensions à le planificateur pour trouver la planification optimale en modélisant divers matériels et caractéristiques d’application. Nous présentons une méthode pour gérer les réductions dans un modèle polyédrique. Dans l’état de l’art compilateurs polyédriques, il n’ya pas eu de soutien aux réductions. La réduction boucle a été traitée comme une boucle série et cela peut être un goulot d’étranglement majeur pour plusieurs applications notamment sur les GPU. Nous proposons des extensions de langues dans PENCIL pour exprimer des réductions arbitraires définies par l’utilisateur. Nous encodons ceci informations de réduction dans un modèle polyédrique utilisant des dépendances de réduction. Nous montrons comment utiliser ces dépendances dans un planificateur polyédrique exploiter la parallélisation des boucles de réduction. Nous proposons également un génération de code basée sur des modèles pour une réduction très efficace de l’émission code pour les GPU. Nous validons notre approche par des expériences de comparer le code généré automatiquement avec le très optimisé bibliothèque. L’exploitation de la localité est un facteur clé pour atteindre de hautes performances sur le proces- seurs complexes avec des hiérarchies complexes de mémoire / calcul. Le coût fonction utilisée dans l’algorithme de Pluton n’optimise que la localité temporelle. L’exploitation de la localité spatiale est aussi importante que la localité temporelle et a des implications sur la vectorisation et les accès mémoire coalescés. nous proposons un nouvel algorithme unifié pour optimiser le parallélisme et localité dans des nids de boucles, capable de modéliser temporellement et effets spatiaux des multiprocesseurs et des accélérateurs à mémoire profonde les hiérarchies et les multiples niveaux de parallélisme. Il orchestre un collection de problèmes d’optimisation paramé- trables pour la localité et objectifs de parallélisme sur un espace polyédrique de préservation de la sémantique transformations. Nous discutons de la raison de cet algorithme unifié, et valider sur une collection de calcul représentatif noyaux / points de repère. Nous étudions les défis de l’utilisation de techniques de compilation polyédriques pour SLAM- Bench, une application de traitement d’image complexe et réaliste, de bout en bout. La SLAM- Bench a plusieurs noyaux non affines qui ne peuvent pas être facilement modifiés compilation polyédrique.Nous montrons l’utilité des fonctions de synthèse pour compiler de telles parties non affines du programme étendant ainsi la portée de la compilation polyédrique. Nous présentons également la bibliothèque d’exécution prl nécessaire pour éviter les redondances. transferts de données entre l’appareil et l’hôte. Nous validons notre haut niveau approche de compilation par des expériences comparant les performances du code généré avec la version manuelle hautement optimisée de SLAMBench. Nous étudions également l’applicabilité de la compilation polyédrique à l’optimisation pipelines d’apprentissage en profondeur. La plupart des opérations dans l’apprentissage en profondeur les pipelines sont affines et conviennent donc à la compilation polyédrique. Notre cadre repose sur TVM, une compilation d’apprentissage en profondeur de bout en bout framework avec support de plusieurs interfaces telles que MXNet, Tensorflow etc. et prend en charge plusieurs architectures différentes. Nous extrayons la représentation polyédrique de TVM IR et utilisons planificateur polyédrique avec autotuning basé sur un modèle de performance pour trouver automatiquement les horaires des opérateurs TVM. Dans ce contexte, nous étendons l’ordonnanceur polyédrique pour trouver horaires optimaux pour différentes tailles et formes du tenseur. Nous modélisons la quantité de données réutilisées pour le cas où tous les les valeurs des paramètres sont connues et formulent les contraintes à ILP maximiser la réutilisation des données. Nous présentons également un modèle de performance basé sur technique de réglage automatique qui peut réduire le temps de réglage de quelques heures à quelques minutes. Nous menons des expériences sur les critères communs d’apprentissage en profondeur qui valident la l’efficacité et l’applicabilité générale de notre technique dans fournir des performances portables. Enfin, nous résumons nos travaux et présentons les conclusions finales ainsi que les recherches fu- tures. directions. Nous croyons aux améliorations proposées dans cette thèse améliore l’efficacité du cadre polyédrique en tant que transformation de boucle cadre pour la compilation de DSL.
Fichier principal
Vignette du fichier
reddy.pdf (1.65 Mo) Télécharger le fichier
Origin : Files produced by the author(s)
Loading...

Dates and versions

tel-02385670 , version 1 (28-11-2019)

Identifiers

  • HAL Id : tel-02385670 , version 1

Cite

Chandan Reddy. Polyhedral Compilation for Domain Specific Languages. Computer Science [cs]. Ecole normale supérieure, 2019. English. ⟨NNT : ⟩. ⟨tel-02385670⟩
253 View
789 Download

Share

Gmail Facebook X LinkedIn More