Doctorat ParisTech THÈSE. l École nationale supérieure des mines de Paris - PDF

Description
École doctorale n O 432 : Sciences des Métiers de l Ingénieur Doctorat ParisTech THÈSE pour obtenir le grade de docteur délivré par l École nationale supérieure des mines de Paris Spécialité «Informatique

Please download to get full document.

View again

of 25
All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
Information
Category:

Genealogy

Publish on:

Views: 111 | Pages: 25

Extension: PDF | Download: 0

Share
Transcript
École doctorale n O 432 : Sciences des Métiers de l Ingénieur Doctorat ParisTech THÈSE pour obtenir le grade de docteur délivré par l École nationale supérieure des mines de Paris Spécialité «Informatique temps-réel, robotique et automatique» présentée et soutenue publiquement par Dounia KHALDI le 27 novembre 2013 Parallélisation automatique et statique de tâches sous contraintes de ressources une approche générique Automatic Resource-Constrained Static Task Parallelization A Generic Approach Directeur de thèse : François IRIGOIN Encadrement de la thèse : Corinne ANCOURT Jury Corinne ANCOURT, Chargée de recherche, CRI, MINES ParisTech Cédric BASTOUL, Professeur, Université de Strasbourg Henri-Pierre CHARLES, Ingénieur chercheur en informatique, CEA François IRIGOIN, Directeur de recherche, CRI, MINES ParisTech Paul H J KELLY, Professeur, SPO, Imperial College London Examinateur Président & Examinateur Rapporteur Directeur de thèse Rapporteur MINES ParisTech Centre de recherche en informatique 35, rue Saint-Honoré, Fontainebleau Cedex, France A la mémoire de ma nièce Nada Khaldi Remerciements Soyons reconnaissants aux personnes qui nous donnent du bonheur ; elles sont les charmants jardiniers par qui nos âmes sont fleuries. Marcel Proust La réalisation d une thèse est naturellement un travail personnel, mais en aucun cas un travail solitaire. Je tiens à remercier tout d abord mon directeur de thèse, François Irigoin, et mon encadrante, Corinne Ancourt, pour m avoir fait confiance malgré les connaissances plutôt légères que j avais, en octobre 2010, sur les systèmes de parallélisation automatique. J adresse également, et tout particulièrement, mes vifs remerciements et témoigne toute ma reconnaissance à Pierre Jouvelot pour l expérience enrichissante et pleine d intérêt qu il m a fait vivre durant ces trois années au sein du CRI. Je remercie également tous ceux sans lesquels cette thèse ne serait pas ce qu elle est, aussi bien par les discussions que j ai eu la chance d avoir avec eux, leurs suggestions ou leurs contributions. Je pense ici en particulier à Cédric Bastoul, qui de plus m a fait l honneur de présider le jury de cette thèse, et Paul Kelly et Henri-Pierre Charles, qui ont accepté d être les rapporteurs de cette thèse, et je les en remercie, de même que pour leur participation au jury. Ils ont également contribué par leurs nombreuses remarques et suggestions à améliorer la qualité de ce mémoire, et je leur en suis très reconnaissante. Je passe ensuite une dédicace spéciale à toutes les personnes que j ai eu le plaisir de côtoyer au CRI, à savoir Jacqueline Altimira, Amira Mensi, Mehdi Amini, Vivien Maisonneuve, Olivier Hermant, Claude Tadonki, Antoniu Pop, Nelson Lossing, Pierre Guillou, Pierre Beauguitte, Benoît Pin, Laurent Daverio et, en particulier, Claire Médrala, avec qui j ai partagé le même bureau. Je tiens aussi à remercier François Willot, pour son aide pour les expérimentations sur une machine à mémoire distribuée. Je tiens aussi à remercier Sarah, Ghania et Halim, Razika et Rochdi pour leurs esprits taquins, ainsi que Khaled, Soumia, Molka, Naira, Nilsa, Arnaud et Karter pour leurs nombreux coups de main, leur sens pratique, leur efficacité et leur sourire. J adresse enfin une pensée particulière à mes parents. Abstract This thesis intends to show how to efficiently exploit the parallelism present in applications in order to enjoy the performance benefits that multiprocessors can provide, using a new automatic task parallelization methodology for compilers. The key characteristics we focus on are resource constraints and static scheduling. This methodology includes the techniques required to decompose applications into tasks and generate equivalent parallel code, using a generic approach that targets both different parallel languages and architectures. We apply this methodology in the existing tool PIPS, a comprehensive source-to-source compilation platform. This thesis mainly focuses on three issues. First, since extracting task parallelism from sequential codes is a scheduling problem, we design and implement an efficient, automatic scheduling algorithm called BDSC for parallelism detection; the result is a scheduled SDG, a new task graph data structure. In a second step, we design a new generic parallel intermediate representation extension called SPIRE, in which parallelized code may be expressed. Finally, we wrap up our goal of automatic parallelization in a new BDSC- and SPIRE-based parallel code generator, which is integrated within the PIPS compiler framework. It targets both shared and distributed memory systems using automatically generated OpenMP and MPI code. Résumé Le but de cette thèse est d exploiter efficacement le parallélisme présent dans les applications informatiques séquentielles afin de bénéficier des performances fournies par les multiprocesseurs, en utilisant une nouvelle méthodologie pour la parallélisation automatique des tâches au sein des compilateurs. Les caractéristiques clés de notre approche sont la prise en compte des contraintes de ressources et le caractère statique de l ordonnancement des tâches. Notre méthodologie contient les techniques nécessaires pour la décomposition des applications en tâches et la génération de code parallèle équivalent, en utilisant une approche générique qui vise différents langages et architectures parallèles. Nous implémentons cette méthodologie dans le compilateur source-à-source PIPS. Cette thèse répond principalement à trois questions. Primo, comme l extraction du parallélisme de tâches des codes séquentiels est un problème d ordonnancement, nous concevons et implémentons un algorithme d ordonnancement efficace, que nous nommons BDSC, pour la détection du parallélisme ; le résultat est un SDG ordonnancé, qui est une nouvelle structure de données de graphe de tâches. Secondo, nous proposons une nouvelle extension générique des représentations intermédiaires séquentielles en des représentations intermédiaires parallèles que nous nommons SPIRE, pour la représentation des codes parallèles. Enfin, nous développons, en utilisant BDSC et SPIRE, un générateur de code que nous intégrons dans PIPS. Ce générateur de code cible les systèmes à mémoire partagée et à mémoire distribuée via des codes OpenMP et MPI générés automatiquement. Contents Remerciements Abstract Résumé iv vi viii Introduction (en français) 8 1 Introduction Context Motivation Contributions Thesis Outline Perspectives: Bridging Parallel Architectures and Software Parallelism Parallel Architectures Multiprocessors Memory Models Parallelism Paradigms Mapping Paradigms to Architectures Program Dependence Graph (PDG) Control Dependence Graph (CDG) Data Dependence Graph (DDG) List Scheduling Background Algorithm PIPS: Automatic Parallelizer and Code Transformation Framework Transformer Analysis Precondition Analysis Array Region Analysis Complexity Analysis PIPS (Sequential) IR Conclusion Concepts in Task Parallel Programming Languages Introduction Mandelbrot Set Computation Task Parallelism Issues CONTENTS xi Task Creation Synchronization Atomicity Parallel Programming Languages Cilk Chapel X10 and Habanero-Java OpenMP MPI OpenCL Discussion and Comparison Conclusion SPIRE: A Generic Sequential to Parallel Intermediate Representation Extension Methodology Introduction SPIRE, a Sequential to Parallel IR Extension Design Approach Execution Synchronization Data Distribution SPIRE Operational Semantics Sequential Core Language SPIRE as a Language Transformer Rewriting Rules Validation: SPIRE Application to LLVM IR Related Work: Parallel Intermediate Representations Conclusion BDSC: A Memory-Constrained, Number of Processor-Bounded Extension of DSC Introduction The DSC List-Scheduling Algorithm The DSC Algorithm Dominant Sequence Length Reduction Warranty BDSC: A Resource-Constrained Extension of DSC DSC Weaknesses Resource Modeling Resource Constraint Warranty Efficient Task-to-Cluster Mapping The BDSC Algorithm Related Work: Scheduling Algorithms Bounded Number of Clusters Cluster Regrouping on Physical Processors xii CONTENTS 5.5 Conclusion BDSC-Based Hierarchical Task Parallelization Introduction Hierarchical Sequence Dependence DAG Mapping Sequence Dependence DAG (SDG) Hierarchical SDG Mapping Sequential Cost Models Generation From Convex Polyhedra to Ehrhart Polynomials From Polynomials to Values Reachability Analysis: The Path Transformer Path Definition Path Transformer Algorithm Operations on Regions using Path Transformers BDSC-Based Hierarchical Scheduling (HBDSC) Closure of SDGs Recursive Top-Down Scheduling Iterative Scheduling for Resource Optimization Complexity of HBDSC Algorithm Parallel Cost Models Related Work: Task Parallelization Tools Conclusion SPIRE-Based Parallel Code Transformations and Generation Introduction Parallel Unstructured to Structured Transformation Structuring Parallelism Hierarchical Parallelism From Shared Memory to Distributed Memory Transformation Related Work: Communications Generation Difficulties Equilevel and Hierarchical Communications Equilevel Communications Insertion Algorithm Hierarchical Communications Insertion Algorithm Communications Insertion Main Algorithm Conclusion and Future Work Parallel Code Generation Mapping Approach OpenMP Generation SPMDization: MPI Generation Conclusion CONTENTS xiii 8 Experimental Evaluation with PIPS Introduction Implementation of HBDSC- and SPIRE-Based Parallelization Processes in PIPS Preliminary Passes Task Parallelization Passes OpenMP Related Passes MPI Related Passes: SPMDization Experimental Setting Benchmarks: ABF, Harris, Equake, IS and FFT Experimental Platforms: Austin and Cmmcluster Effective Cost Model Parameters Protocol BDSC vs. DSC Experiments on Shared Memory Systems Experiments on Distributed Memory Systems Scheduling Robustness Faust Parallel Scheduling vs. BDSC OpenMP Version in Faust Faust Programs: Karplus32 and Freeverb Experimental Comparison Conclusion Conclusion Contributions Future Work Conclusion (en français) 217 List of Tables 2.1 Multicores proliferation Execution time estimations for Harris functions using PIPS complexity analysis Summary of parallel languages constructs Mapping of SPIRE to parallel languages constructs (terms in parentheses are not currently handled by SPIRE) Execution and communication time estimations for Harris using PIPS default cost model (N and M variables represent the input image size) Comparison summary between different parallelization tools CPI for the Austin and Cmmcluster machines, plus the transfer cost of one byte β on the Cmmcluster machine (in #cycles) Run-time sensitivity of BDSC with respect to static cost estimation (in ms for Harris and ABF; in s for equake and IS). 201 List of Figures 1 Une implementation séquentielle en C de la fonction main de l algorithme de Harris Le graphe de flôts de données de l algorithme de Harris Organisation de la thèse : le bleu indique les contributions de la thèse ; une ellipse, un processus; et un rectangle, résultats Sequential C implementation of the main function of Harris Harris algorithm data flow graph Thesis outline: blue indicates thesis contributions; an ellipse, a process; and a rectangle, results A typical multiprocessor architectural model Memory models Rewriting of data parallelism using the task parallelism model Construction of the control dependence graph Example of a C code and its data dependence graph A Directed Acyclic Graph (left) and its associated data (right) Example of transformer analysis Example of precondition analysis Example of array region analysis Simplified Newgen definitions of the PIPS IR Result of the Mandelbrot set Sequential C implementation of the Mandelbrot set Cilk implementation of the Mandelbrot set (P is the number of processors) Chapel implementation of the Mandelbrot set X10 implementation of the Mandelbrot set A clock in X10 (left) and a phaser in Habanero-Java (right) C OpenMP implementation of the Mandelbrot set MPI implementation of the Mandelbrot set (P is the number of processors) OpenCL implementation of the Mandelbrot set A hide-and-seek game (X10, HJ, Cilk) Example of an atomic directive in OpenMP Data race on ptr with Habanero-Java OpenCL example illustrating a parallel loop forall in Chapel, and its SPIRE core language representation A C code, and its unstructured parallel control flow graph representation xvi LIST OF FIGURES xvii 4.4 parallel sections in OpenMP, and its SPIRE core language representation OpenCL example illustrating spawn and barrier statements Cilk and OpenMP examples illustrating an atomically-synchronized statement X10 example illustrating a future task and its synchronization A phaser in Habanero-Java, and its SPIRE core language representation Example of Pipeline Parallelism with phasers MPI example illustrating a communication, and its SPIRE core language representation SPIRE core language representation of a non-blocking send SPIRE core language representation of a non-blocking receive SPIRE core language representation of a broadcast Stmt and SPIRE(Stmt) syntaxes Stmt sequential transition rules SPIRE(Stmt) synchronized transition rules if statement rewriting using while loops Simplified Newgen definitions of the LLVM IR A loop in C and its LLVM intermediate representation SPIRE (LLVM IR) An example of a spawned outlined sequence A Directed Acyclic Graph (left) and its scheduling (right); starred top levels (*) correspond to the selected clusters Result of DSC on the graph in Figure 5.1 without (left) and with (right) DSRW A DAG amenable to cluster minimization (left) and its BDSC step-by-step scheduling (right) DSC (left) and BDSC (right) cluster allocation Abstract syntax trees Statement syntax Parallelization process: blue indicates thesis contributions; an ellipse, a process; and a rectangle, results Example of a C code (left) and the DDG D of its internal S sequence (right) SDGs of S (top) and S0 (bottom) computed from the DDG (see the right of Figure 6.3); S and S0 are specified in the left of Figure SDG G, for a part of equake S given in Figure 6.7; Gbody is the SDG of the body Sbody (logically included into G via H) 117 xviii LIST OF FIGURES 6.6 Example of the execution time estimation for the function MultiplY of the code Harris; each comment provides the complexity estimation of the statement below (N and M are assumed to be global variables) Instrumented part of equake (Sbody is the inner loop sequence) Numerical results of the instrumented part of equake (instrumented equake.in) An example of a subtree of root forloop An example of a path execution trace from S b to S e in the subtree forloop An example of a C code and the path transformer of the sequence between S b and S e ; M is, since there are no loops in the code An example of a C code and the path transformer of the sequence of calls and test between S b and S e ; M is, since there are no loops in the code An example of a C code and the path transformer between S b and S e Closure of the SDG G0 of the C code S0 in Figure 6.3, with additional import entry vertices topsort(g) for the hierarchical scheduling of sequences Scheduled SDG for Harris, using P =3 cores; the scheduling information via cluster(τ) is also printed inside each vertex of the SDG After the first application of BDSC on S = sequence(s 0 ;S 1 ), failing with Not enough memory Hierarchically (via H) Scheduled SDGs with memory resource minimization after the second application of BDSC (which succeeds) on sequence(s 0 ;S 1 )(κ i = cluster(σ(s i ))). To keep the picture readable, only communication edges are figured in these SDGs Parallel code transformations and generation: blue indicates this chapter contributions; an ellipse, a process; and a rectangle, results Unstructured parallel control flow graph (a) and event (b) and structured representations (c) A part of Harris, and one possible SPIRE core language representation SPIRE representation of a part of Harris, non optimized (left) and optimized (right) A simple C code (hierarchical), and its SPIRE representation 157 LIST OF FIGURES xix 7.6 An example of a shared memory C code and its SPIRE code efficient communication primitive-based distributed memory equivalent Two examples of C code with non-uniform dependences An example of a C code and its read and write array regions analysis for two communications from S 0 to S 1 and to S An example of a C code and its in and out array regions analysis for two communications from S 0 to S 1 and to S Scheme of communications between multiple possible levels of hierarchy in a parallel code; the levels are specified with the superscripts on τ s Equilevel and hierarchical communications A part of an SDG and the topological sort order of predecessors of τ Communications generation from a region using region to coms function Equilevel and hierarchical communications generation and SPIRE distributed memory representation of a C code Graph illustration of communications made in the C code of Figure 7.14; equilevel in green arcs, hierarchical in black Equilevel and hierarchical communications generation after optimizations: the current cluster executes the last nested spawn (left) and barriers with one spawn statement are removed (right) SPIRE representation of a part of Harris, and its OpenMP task generated code SPIRE representation of a C code, and its OpenMP hierarchical task generated code SPIRE representation of a part of Harris, and its MPI generated code Parallelization process: blue indicates thesis contributions; an ellipse, a pass or a set of passes; and a rectangle, results Executable (harris.tpips) for harris.c A model of an MPI generated code Scheduled SDG of the main function of ABF Steps for the rewriting of data parallelism to task parallelism using the tiling and unrolling transformations ABF and equake speedups with OpenMP Speedups with OpenMP: impact of tiling (P=3) Speedups with OpenMP for different class sizes (IS) ABF and equake speedups with MPI Speedups with MPI: impact of tiling (P=3) Speedups with MPI for different class sizes (IS) xx LIST OF FIGURES 8.12 Run-time comparison (BDSC vs. Faust for Karplus32) Run-time comparison (BDSC vs. Faust for Freeverb) Introduction (en français) I live and don t know how long, I ll die and don t know when, I am going and don t know where, I wonder that I am happy. Martinus Von Biberach Contexte La loi de Moore [83] postule que, tout au long de l histoire du matériel informatique, le nombre de transistors utilisés dans les circuits intégrés va doubler tous les deux ans environ. Cette croissance s accompagnait, jusqu à très récemment encore, de vitesses d horloge toujours plus élevées, afin de d améliorer encore plus les performances des processeurs (ou cœurs). Le passage de la fabrication de microprocesseurs uniques à la conception de machines parallèles est en partie dû à la croissance de la consommation exagérée d énergie liée à cette augmentation de fréquence. Le nombre de transistors continue toutefois à augmenter afin d intégrer plus de cœurs et assurer un passage à l échelle proportionnel de performance pour des applications scientifiques toujours plus sophistiquées. En dépit de la validité de la loi de Moore jusqu à maintenant, la performance des cœurs a ainsi cessé d augmenter après Du coup, la scalabilité des applications, qui correspond à l idée que les performances sont accrues lorsque des ressources supplémentaires sont allouées à la résolution d un problème, n est plus garantie. Pour comprendre ce problème, il est nécessaire de jeter un coup d œil à la loi dite d Amdahl [16]. Selon cette loi, l accélération d un programme à l aide de plusieurs processeurs est limitée par le temps nécessaire à l
Related Search
Similar documents
View more...
We Need Your Support
Thank you for visiting our website and your interest in our free products and services. We are nonprofit website to share and download documents. To the running of this website, we need your help to support us.

Thanks to everyone for your continued support.

No, Thanks