A Combined Language and Polyhedral Approach for Heterogeneous Parallelism - TEL - Thèses en ligne
Thèse Année : 2018

A Combined Language and Polyhedral Approach for Heterogeneous Parallelism

Une Approche Combinée Langage-Polyédrique pour la Programmation Parallèle Hétérogène

Résumé

After a thirty-year history of development, the polyhedral model has evolved into a powerful solution to exploiting automatic parallelization and locality optimization. As bridging software between the high-level description of programs and the underlying implementation of hardware, polyhedral compilation is increasingly challenged by the diversity of programming languages and heterogeneity of architectures. A long standing limitation of the model has been its restriction to static control affine programs, resulting in an emergent demand for the support of non-affine extensions. This is particularly acute in the context of heterogeneous architectures where a variety of computation kernels need to be analyzed and transformed to match the constraints of hardware accelerators and to manage data transfers across memory spaces. We explore multiple non-affine extensions of the polyhedral model, in the context of a well-defined intermediate language combining affine and syntactic elements. The thesis is organized as follows. In the first part, we explain the challenges faced by the polyhedral model with respect to programming languages and architectures, and provide a brief introduction to polyhedral compilation. In the second part, we present a method to parallelize and optimize loop nests for an important class of programs where counted loops have a dynamic data-dependent upper bound. Such loops are amenable to a wider set of transformations than general while loops with inductively defined termination conditions: for example, the substitution of closed forms for induction variables remains applicable, removing the loop-carried data dependences induced by termination conditions. Our approach relies on affine relations only, as implemented in state-of-the-art polyhedral libraries. Revisiting a state-of-the-art framework to parallelize arbitrary while loops, we introduce additional control dependences on data-dependent predicates. Our method goes beyond the state of the art in fully automating the process, specializing the code generation algorithm to the case of dynamic counted loops and avoiding the introduction of spurious loop-carried dependences. We conduct experiments on representative irregular computations, from dynamic programming, computer vision and finite element methods to sparse matrix linear algebra. We validate that the method is applicable to general affine transformations for locality optimization, vectorization and parallelization. In the third part, we propose an automatic implementation of non-affine transformations by revisiting overlapped tiling in polyhedral compilation. Polyhedral frameworks implement classical forms of rectangular/parallelogram tiling affine transformations, but these forms lead to pipelined start and rather inefficient wavefront parallelism. Some experimental branches of existing polyhedral compilers evaluated sophisticated shapes such as trapezoid or diamond tiles, enabling concurrent start along the axes of the iteration space, but leading to custom scheduling and code generation methods insufficiently integrated with the general framework. Overlapped tiling is a technique designed to eliminate pipelined start by modifying tile shapes obtained from existing frameworks, but no implementations in a general-purpose polyhedral framework has been available until now, preventing its application in general-purpose loop-nest optimizers and hampering the fair comparison with other techniques. We revisit overlapped tiling in polyhedral compilation and demonstrate how to derive tighter tile shapes with less redundant computations, by enabling overlapped tiles in a schedule-tree-based algorithm. Our method allows the generation of both acute and right trapezoid shapes. It goes beyond the state of the art by avoiding the restriction to a domain-specific language or introducing post-pass rescheduling and custom code generation. We conduct experiments on the PolyMage benchmarks and representative iterated stencils, validating the effectiveness and general applicability of our technique on both general-purpose multicores and accelerators. Finally, we summarize our work and present concluding remarks as well as future research directions. We believe the contributions collected in this dissertation extend the reach fof the polyhedral model to wider ranges of real-world programs. We also believe this work contributes to the integration of polyhedral methods with other compilation techniques.
Après trente ans de développement, le modèle polyédrique est devenu une solution puissante pour exploiter la parallélisation automatique et l’optimisation de la localisation. En tant que logiciel de transition entre la description de haut niveau des programmes et la mise en œuvre sous-jacente du matériel, la compilation polyédrique est de plus en plus remise en cause par la diversité des langages de programmation et l’hétérogénéité des architectures. Un défaut de longue date du modèle est sa restriction aux programmes affines de contrôle statique, entraînant une demande émergente pour la prise en charge des extensions non affines, en particulier à l’ère des architectures hétérogènes. Nous étudions les extensions non affines dans le modèle polyédrique en le combinant avec un langage intermédiaire bien défini. La thèse est organisée comme ci-dessous. Dans la première partie, nous expliquons les défis rencontrés par le modèle polyédrique en ce qui concerne les langages de programmation et les architectures, et décrivons une brève introduction à la compilation polyédrique pour aider les lecteurs à comprendre le principe du travail. Dans la seconde partie, nous présentons l’approche du traitement des applications non affines en étudiant la compilation parallélisante et l’optimisation d’imbrication en boucle d’une classe importante de programmes où les boucles comptées ont une limite supérieure dynamique dépendante des données. De telles boucles se prêtent à un ensemble de transformations plus large que les boucles générales while avec des conditions de terminaison inductives : par exemple, la substitution des formes fermées par les variables d’induction reste applicable, éliminant les dépendances induites par les conditions de terminaison. Nous proposons une méthode de compilation automatique pour paralléliser et optimiser les boucles comptées dynamiques. Notre approche repose uniquement sur des relations affines, mises en œuvre dans des bibliothèques polyédriques à la pointe de la technologie. En revisitant un cadre de pointe pour paralléliser des boucles arbitraires while , nous introduisons des dépendances de contrôle supplémentaires sur les prédicats dépendant des données. Notre méthode va au-delà de l’état de la technique en automatisant complètement le processus, en spécialisant l’algorithme de génération de code au cas des boucles comptées dynamiques et en évitant l’introduction de dépendances parasites en boucle. Nous effectuons des expériences sur des calculs irréguliers représentatifs, allant de la programmation dynamique, de la vision par ordinateur et des méthodes par éléments finis à l’algèbre linéaire à matrice fragmentée. Nous validons que la méthode est applicable aux transformations affines générales pour l’optimisation de la localité, la vectorisation et la parallélisation. Dans la troisième partie, nous proposons une implémentation automatique des transformations non affines en revisitant les mosaïques superposées dans la compilation polyédrique. Les structures polyédriques mettent en œuvre des formes classiques de transformations affines de carrelage rectangulaire/parallélogramme, mais ces formes conduisent à un démarrage en pipeline et à un parallélisme de front d’onde plutôt inefficace. Certaines branches expérimentales de compilateurs polyédriques existants ont évalué des formes sophistiquées telles que des carreaux trapézoïdaux ou diamantés, permettant un démarrage simultané sur les axes de l’espace d’itération, mais conduisant à des méthodes de planification et de génération de code insuffisamment intégrées au cadre général. Le pavage superposé est une technique conçue pour éliminer le démarrage en pipeline en modifiant les formes de pavés obtenues à partir de structures existantes, mais aucune implémentation dans une structure polyédrique polyvalente n’était disponible jusqu’à présent, empêchant son application dans les optimiseurs de boucle comparaison avec d’autres techniques. Nous revisitons les mosaïques superposées dans la compilation polyédrique et montrons comment obtenir des formes de mosaïques plus étroites avec des calculs moins redondants, en activant des mosaïques superposées dans un algorithme basé sur un calendrier. Notre méthode permet de générer des formes trapézoïdales aiguës et droites. Cela dépasse l’état de la technique en évitant la restriction à un langage spécifique à un domaine ou en introduisant une reprogrammation post-pass et une génération de code personnalisée. Nous effectuons des expériences sur les repères PolyMage et les gabarits itératifs représentatifs, validant ainsi l’efficacité et l’applicabilité générale de notre technique sur les multicœurs et les accélérateurs polyvalents. Enfin, nous résumons notre travail et discutons de quelques remarques de conclusion pour les futures directions de recherche. Le travail de cette thèse met le modèle polyédrique en application dans des programmes réels, en étendant les champs applicables du modèle et en soutenant l’intégration avec d’autres algorithmes de compilation.
Fichier principal
Vignette du fichier
thesis.pdf (1.58 Mo) Télécharger le fichier
Origine Fichiers produits par l'(les) auteur(s)
Loading...

Dates et versions

tel-01988073 , version 1 (21-01-2019)
tel-01988073 , version 2 (26-02-2020)

Identifiants

  • HAL Id : tel-01988073 , version 1

Citer

Jie Zhao. A Combined Language and Polyhedral Approach for Heterogeneous Parallelism. Distributed, Parallel, and Cluster Computing [cs.DC]. PSL Research University, 2018. English. ⟨NNT : ⟩. ⟨tel-01988073v1⟩
461 Consultations
680 Téléchargements

Partager

More