Go to page
 

Bibliographic Metadata

Title
Insieme : a compiler infrastructure for parallel programs / by Herbert Jordan
AuthorJordan, Herbert
CensorTichy, Walter
Thesis advisorFahringer, Thomas
PublishedInnsbruck, 2014
DescriptionXII, 421 S. : graph. Darst.
Institutional NoteInnsbruck, Univ., Diss., 2014
Date of SubmissionAugust 2014
LanguageEnglish
Bibl. ReferenceOeBB
Document typeDissertation (PhD)
Keywords (DE)Compiler / Parallele Programme / Programmiermodel / Zwischendarstellungen / Programmanalyse / Programmtransformationen / Programm Optimierungen / Compiler Optimierungen / Auto-Tuning
Keywords (EN)compiler / parallel programs / programming models / intermediate representations / program analysis / program transformations / program optimization / compiler optimization / auto-tuning
Keywords (GND)Paralleles Programm / Automation
URNurn:nbn:at:at-ubi:1-1364 Persistent Identifier (URN)
Restriction-Information
 The work is publicly available
Files
Insieme [5.58 mb]
Links
Reference
Classification
Abstract (German)

Die Entwicklung von Programmen welche die Möglichkeiten aktueller, paralleler Hardware Architekturen effizient ausnützen ist komplex und zeitaufwendig. Dies liegt zum Teil am inhärenten Problem der Formulierung benötigter paralleler Algorithmen, als auch in der Tatsache dass sich Programmiersprachen und zugehörige Compiler bis dato (noch) nicht den veränderten Ansprüchen angepasst haben, welche sich aus dem Übergang von sequenziellen zu parallelen Architekturen in den vergangenen zehn Jahren ergeben haben.

Angebotene APIs und Spracherweiterungen zur Adressierung paralleler Hardware werden von allen gängigen Compilern als gewöhnliche (sequenzielle) Program-Bibliotheken, eingebettet in einer ansonsten sequenziellen Sprache, wahrgenommen. Ihre parallelen Abläufe und die damit verbundenen Eigenschaften bleiben in Routinen externer Bibliotheken verborgen. Compilerintern werden Programme mittels rein sequenziellen, maschinennahen Repräsentationen dargestellt, welche keine Elemente zur Modellierung paralleler Abläufe aufweisen. Aufgrund dessen übersteigt die Aufgabe parallele Abläufe in Programmen zu Verbessern und sich an deren Koordinierung zu beteiligen die Fähigkeiten gängiger Compiler -- weshalb diese Aufgaben von den Entwicklern, bzw. in begrenzten Masse von diversen Laufzeit Systemen, übernommen werden müssen.

Grundlage dieser Dissertation ist die Annahme das durch eine neuartige Compilerarchitektur, basierend auf einer innovativen, kompakten, explizit parallelen und vereinheitlichen internen Modellierung paralleler Programme, diese Optimierungs- und Koordinierungsaufgaben von automatisierten Compiler-Tools übernommen werden können. Die Entwicklung einer derartigen Compilerarchitektur, insbesondere deren interne Programrepräsentation sowie zugehöriger Analyse- und Transformationssysteme, ist der Schwerpunkt dieser Arbeit. Zum Nachweis deren Eignung für die angestrebten Zielsetzungen werden einige auf dem entwickelten System aufbauende Lösungen aufgezeigt, welche die Koordinierung und Optimierung paralleler Programme automatisieren. Durch die Verwendung derartiger Werkzeuge kann die Produktivität bei der Entwicklung von (Performance kritischen) Anwendungen sowie die Performance und Skalierbarkeit der resultierenden Programme im Vergleich zu state-of-the-art Ansätzen deutlich gesteigert werden.

Abstract (English)

Developing programs efficiently utilizing contemporary parallel architectures is complex and time consuming. This is partially due to the inherent problem of revealing parallelism within algorithms and partially due to the fact that programming languages and associated compilation tools have not (yet) been adapted to the fundamental paradigm shift towards parallel systems triggered more than a decade ago.

Available APIs and language extensions for programming parallel architectures are treated by compilers like ordinary libraries utilized by an otherwise sequential host language. Their parallel control flow remains hidden within opaque runtime library calls embedded within a sequential intermediate representation lacking the concepts of parallelism. Consequently, the tuning and coordination of parallelism is clearly beyond the scope of conventional optimizing compilers and hence left to the programmer or the runtime system.

This thesis is based on the hypothesis that a novel compiler architecture, based on an innovative, concise, unified, explicitly parallel, high-level intermediate representation, can open up a whole new level of optimization, tuning and coordination opportunities for a compiler to influence the quality of the processed program. This increased influence can be utilized to gradually off-load the tuning and coordination efforts from the developer to the compiler and the associated runtime system. The development of such an architecture, in particular its internal intermediate representation and the associated analysis and transformation frameworks, is the main focus of this thesis. Furthermore, a set of example applications based on this novel compiler infrastructure simplifying the development of scalable parallel programs are outlined. Those demonstrate the architectures capabilities of facilitating tools increasing the productivity of software developers as well as its capabilities of significantly improving the performance of processed applications beyond the capabilities of state-of-the-art solutions.