You are here: University of Vienna PHAIDRA Detail o:1312132
Title (eng)
Programming support for high-level parallel pipeline patterns on hybrid many-core architectures
Parallel title (deu)
Programmierunterstützung für High-Level Parallele Pipeline Patterns auf Hybriden Many-core Architekturen
Parallel title (eng)
Programming Support for High-Level Parallel Pipeline Patterns on Hybrid Many-core Architectures
Author
Enes Bajrovic
Advisor
Siegfried Benkner
Assessor
Siegfried Benkner
Abstract (deu)
Heterogene Elemente in modernen Hardware-Architekturen versprechen umfassende Leistungssteigerungen sowie verbesserte Energieeffizienz. Neue Hardware Entwicklungen scheinen diesen Trend durch die Kombination von konventionellen multi-core Prozessoren mit Hardware-Beschleunigern wie etwa GPUs oder Intel Xeon Phi zu übernehmen. Die Softwareentwicklung für derartige Systeme gestaltet sich jedoch äußerst komplex und es ist oftmals schwierig, deren gesamtes Leistungspotenzial zu nutzen. ProgrammiererInnen sind gezwungen explizit auf verschiedene Speicherbereiche, Lokalität und Lastverteilung Rücksicht zu nehmen und müssen darüber hinaus verschiedene Programmiermodelle und Parallelisierungsverfahren beachten. Um hohe Effizienz sowie Programmierbarkeit zu gewährleisten, kombinieren bestehende Ansätze oftmals höhere und abstrakte Programmiermodelle mit Compiler-Techniken sowie Laufzeitsystemen. Diese Arbeit präsentiert einen Ansatz für die Programmierung von heterogenen many-core Systemen mit Hilfe eines parallelen Pipeline Programmiermuster. Dies baut auf einem komponentenbasierten, task-parallelen Programmiermodell welches innerhalb des europäischen Forschungsprojekt PEPPHER entwickelt wurde. Das gewählte Komponentenmodell ermöglicht verschiedene Implementierungsvarianten von Task-Routinen welche für verschiedene Zielarchitekturen angepasst werden können. Ein hochentwickeltes Laufzeit-System ist für die Verteilung und Auswahl passender Implementierungsvarianten sowie deren effizienter Ausführung auf verschiedenen Hardware-Elementen verantwortlich. Aufbauend auf dieser Basis, haben wir ein Programmiersystem entwickelt welches aus einer abstrakten Koordinationssprache, einem Source-to-Source Transformationssystem sowie einer Laufzeit-Koordinationsbibliothek für Pipelining besteht. Der vorgestellte Ansatz wird auf zwei unterschiedlichen heterogenen Systemen mit Anwendungen aus Computer-Vision sowie Bioinformatik evaluiert.
Abstract (eng)
The increasing heterogeneity in modern hardware architectures promises significant performance gains as well as a better performance-to-power ratio. New hardware appears to be leaning towards hybrid many-core architectures that combine conventional multi-core systems with accelerators, such as GPUs , Intel Xeon Phis, etc. However, developing software that can fully exploit the potential computing power proves to be considerably complex and the programmability of such systems is significantly hindered. Consequently, programmers are forced to explicitly deal with distinct memory spaces, locality, load balancing, while using different programming models and parallelization strategies. In order to enable efficient execution and increase programmability, many approaches combine higher-level abstractions in programming models with compilers and runtimes systems. This thesis presents an approach towards the support for high-level pipeline parallel patterns on heterogeneous many-core architectures. It builds on top of a component-based, task-parallel programming model developed within the European project PEPPHER. In this context tasks relate to the components that may have multiple implementation variants tailored for different execution units of hybrid many-core system. A sophisticated heterogeneous runtime system is responsible for mapping suitable component implementation variants and scheduling their execution to different execution units. On top of these foundations, we have developed a framework comprised of a high-level coordination language, a source-to-source compiler and the coordination layer for pipelining that relies on a heterogeneous runtime system to perform dynamic scheduling in a performance and resource efficient way. We evaluate the approach on two different heterogeneous systems and demonstrate its viability and effectiveness with two benchmarks from the areas of computer vision and bioinformatics.
Keywords (eng)
Parallelprogramming modelsheterogeneous architectureshybrid architecturesmany coresmulti corespipeline pattern
Keywords (deu)
Programmiermodelleparallelen Pipeline Programmiermustermany coresmulti corespipeline patternheterogene systeme
Subject (deu)
Subject (deu)
Type (deu)
Persistent identifier
https://phaidra.univie.ac.at/o:1312132
rdau:P60550 (deu)
V, 113 S. : Ill., graph. Darst.
Number of pages
221
Association (deu)
Members (1)
Title (eng)
Programming support for high-level parallel pipeline patterns on hybrid many-core architectures
Parallel title (deu)
Programmierunterstützung für High-Level Parallele Pipeline Patterns auf Hybriden Many-core Architekturen
Parallel title (eng)
Programming Support for High-Level Parallel Pipeline Patterns on Hybrid Many-core Architectures
Author
Enes Bajrovic
Abstract (deu)
Heterogene Elemente in modernen Hardware-Architekturen versprechen umfassende Leistungssteigerungen sowie verbesserte Energieeffizienz. Neue Hardware Entwicklungen scheinen diesen Trend durch die Kombination von konventionellen multi-core Prozessoren mit Hardware-Beschleunigern wie etwa GPUs oder Intel Xeon Phi zu übernehmen. Die Softwareentwicklung für derartige Systeme gestaltet sich jedoch äußerst komplex und es ist oftmals schwierig, deren gesamtes Leistungspotenzial zu nutzen. ProgrammiererInnen sind gezwungen explizit auf verschiedene Speicherbereiche, Lokalität und Lastverteilung Rücksicht zu nehmen und müssen darüber hinaus verschiedene Programmiermodelle und Parallelisierungsverfahren beachten. Um hohe Effizienz sowie Programmierbarkeit zu gewährleisten, kombinieren bestehende Ansätze oftmals höhere und abstrakte Programmiermodelle mit Compiler-Techniken sowie Laufzeitsystemen. Diese Arbeit präsentiert einen Ansatz für die Programmierung von heterogenen many-core Systemen mit Hilfe eines parallelen Pipeline Programmiermuster. Dies baut auf einem komponentenbasierten, task-parallelen Programmiermodell welches innerhalb des europäischen Forschungsprojekt PEPPHER entwickelt wurde. Das gewählte Komponentenmodell ermöglicht verschiedene Implementierungsvarianten von Task-Routinen welche für verschiedene Zielarchitekturen angepasst werden können. Ein hochentwickeltes Laufzeit-System ist für die Verteilung und Auswahl passender Implementierungsvarianten sowie deren effizienter Ausführung auf verschiedenen Hardware-Elementen verantwortlich. Aufbauend auf dieser Basis, haben wir ein Programmiersystem entwickelt welches aus einer abstrakten Koordinationssprache, einem Source-to-Source Transformationssystem sowie einer Laufzeit-Koordinationsbibliothek für Pipelining besteht. Der vorgestellte Ansatz wird auf zwei unterschiedlichen heterogenen Systemen mit Anwendungen aus Computer-Vision sowie Bioinformatik evaluiert.
Abstract (eng)
The increasing heterogeneity in modern hardware architectures promises significant performance gains as well as a better performance-to-power ratio. New hardware appears to be leaning towards hybrid many-core architectures that combine conventional multi-core systems with accelerators, such as GPUs , Intel Xeon Phis, etc. However, developing software that can fully exploit the potential computing power proves to be considerably complex and the programmability of such systems is significantly hindered. Consequently, programmers are forced to explicitly deal with distinct memory spaces, locality, load balancing, while using different programming models and parallelization strategies. In order to enable efficient execution and increase programmability, many approaches combine higher-level abstractions in programming models with compilers and runtimes systems. This thesis presents an approach towards the support for high-level pipeline parallel patterns on heterogeneous many-core architectures. It builds on top of a component-based, task-parallel programming model developed within the European project PEPPHER. In this context tasks relate to the components that may have multiple implementation variants tailored for different execution units of hybrid many-core system. A sophisticated heterogeneous runtime system is responsible for mapping suitable component implementation variants and scheduling their execution to different execution units. On top of these foundations, we have developed a framework comprised of a high-level coordination language, a source-to-source compiler and the coordination layer for pipelining that relies on a heterogeneous runtime system to perform dynamic scheduling in a performance and resource efficient way. We evaluate the approach on two different heterogeneous systems and demonstrate its viability and effectiveness with two benchmarks from the areas of computer vision and bioinformatics.
Keywords (eng)
Parallelprogramming modelsheterogeneous architectureshybrid architecturesmany coresmulti corespipeline pattern
Keywords (deu)
Programmiermodelleparallelen Pipeline Programmiermustermany coresmulti corespipeline patternheterogene systeme
Subject (deu)
Subject (deu)
Type (deu)
Persistent identifier
https://phaidra.univie.ac.at/o:1312133
Number of pages
221
Association (deu)