Titelaufnahme

Titel
Analyse und Optimierung von parallelen Programmen im Insieme Compiler und Laufzeitsystem
VerfasserKofler, Klaus
GutachterFahringer, Thomas ; Oberguggenberger, Michael
Erschienen2017
HochschulschriftInnsbruck, Univ., Diss., 2017
Anmerkung
Arbeit an der Bibliothek noch nicht eingelangt - Daten nicht geprüft
Datum der AbgabeFebruar 2017
SpracheEnglisch
DokumenttypDissertation
Schlagwörter (DE)Paralleles Programieren / Program Optimierung / OpenCL / OpenMP / Maschinelles Lernen / Auto-Tuning
Schlagwörter (EN)parallel programming / program optimization / OpenCL / OpenMP / machine learning / auto-tuning
Zugriffsbeschränkung
 Das Dokument ist ausschließlich in gedruckter Form in der Bibliothek vorhanden.
Links
Nachweis
Klassifikation
Zusammenfassung (Deutsch)

Die jüngsten Entwicklungen in Computer Hardware führten zu hochgradig parallelen und oft auch heterogenen Systemen, welche viele Recheneinheiten, oft verschiedener Art, miteinander vereinen. Solche Systeme stellen Programmierer vor neue Herausforderungen, da das Erstellen von parallelen und heterogenen Programmen nicht nur fehleranfälliger und typischer Weise auch zeitintensiver ist als das Programmieren von sequentiellen Systemen, ein Programmierer muss auch alle verschiedenen Stufen des Parallelismus berücksichtigen, um eine hohe Performance zu erzielen. Nicht nur bevorzugen die verschiedenen Recheneinheiten in einem heterogenen System unterschiedliche Code Optimierungen, auch die Verteilung der Arbeitslast über die verfügbaren Ressourcen ist von größter Wichtigkeit.

Um den Programmierer das Erstellen von parallelen und heterogenen Programmen zu erleichtern und seine Effizienz zu erhöhen, ist es wünschenswert die Programoptimierung soweit als möglichst zu automatisieren. Die momentan existierenden Compiler und Laufzeitsysteme lassen in dieser Hinsicht allerdings noch viel zu wünschen übrig. Das Ziel dieser Dissertation ist es den momentanen Stand der Wissenschaft in automatischer Optimierung von parallelen und heterogenen Programmen voran zu treiben. Sie präsentiert eine detaillierte Übersicht paralleler und heterogener Systeme und beschreibt die Herausforderungen welche Programmierer überwinden müssen um eine hohe Performance zu erzielen. Die Dissertation führt mehrere neue Ansätze ein, um Teile des Optimierungsprozesses zu automatisieren, um das Programmieren von parallelen und heterogenen Systemen zu vereinfachen und effizienter zu gestallten. Für die automatische Analyse und Transformation des Programmcodes verwenden wir das Insieme Compiler und Laufzeitsystem, welches im Rahmen der Forschung in dieser Arbeit um neue Funktionen erweitert wurde.

Um unsere Forschung zu in die richtigen Bahnen zu lenken und Programmierern gut funktionierende Entwurfsmuster vor zu legen, analysieren wir verschiedene Leistungscharakteristiken von unterschiedlichen OpenCL Devices mit mehreren Microbenchmarks. Zusätzlich präsentieren wir zwei neuartige Techniken mit welchen die Ausführung von OpenCL Programmen beschleunigt werden kann. Die erste Technik verteilt die Arbeitslast von OpenCL Programmen automatisch über mehrere Recheneinheiten während die Zweite automatisch die Tile-größe für gegebene OpenCL Programm/GPU Kombinationen bestimmt. Zusätlich führen wir einen Auto-tuner ein, welcher OpenMP Programme in Bezug auf mehrere Zielvorgaben mittels iterativer Compilierung optimiert. Zum Abschluss zeigen wir noch die Vorteile von GPGPU rechnen mittels OpenCL zum Ausführen von wissenschaftlichen Simulationen an Hand von zwei bereichsspezifischen Anwendungen auf.

Zusammenfassung (Englisch)

Recent developments in computer hardware have resulted in increasingly parallel and often heterogeneous computing systems combining several processing units of different kinds. Such systems impose new challenges to the programmers, as writing parallel, heterogeneous programs is not only more error prone and typically also more time consuming than writing programs for sequential systems, but a programmer must also take into account all levels of parallelism to obtain high performance. Not only do the different processing units in a heterogeneous system favor different code optimizations, the workload distribution among the available computational resources is also crucial.

To support the programmer and making the creation of parallel heterogeneous programming more efficient, it is desirable to automate the program optimization process as much as possible. However, current compiler and runtime systems still have a large potential for improvements in that regard. The purpose of this thesis is to advance the state of the art in automatic optimization of parallel heterogeneous programs. It presents a detailed survey of modern parallel and heterogeneous systems and describes the challenges that programmers need to overcome to achieve good performance. It introduces several novel approaches to automate parts of the optimization process, thereby making programming parallel, heterogeneous system easier and more efficient. To perform automatic code analysis and transformations, we use the Insieme compiler and runtime system which has been extend with new features as part of the research described within this thesis.

To guide our research and help programmers understand what design patterns work best for which processing unit, we analyze the different performance characteristics of various OpenCL devices using a set of microbenchmarks. Additionally, we present two novel techniques to speed up the execution of OpenCL programs. The first technique automatically distributes the workload of OpenCL programs over several processing units while the second one automatically determines the tile size for a given OpenCL program/GPU combination. Furthermore, we introduce an auto-tuner which optimizes OpenMP programs with regard to several objectives using iterative compilation. Finally, we demonstrate the benefits of GPGPU computing using OpenCL to execute scientific simulations on the example of two domain applications.