2023
Dissertation, RWTH Aachen University, 2023
Veröffentlicht auf dem Publikationsserver der RWTH Aachen University
Genehmigende Fakultät
Fak01
Hauptberichter/Gutachter
;
Tag der mündlichen Prüfung/Habilitation
2023-08-18
Online
DOI: 10.18154/RWTH-2023-08320
URL: https://publications.rwth-aachen.de/record/967905/files/967905.pdf
Einrichtungen
Inhaltliche Beschreibung (Schlagwörter)
DSL (frei) ; HPC (frei) ; abstraction (frei) ; optimization (frei) ; parallel patterns (frei) ; productivity (frei)
Thematische Einordnung (Klassifikation)
DDC: 004
Kurzfassung
Die Rechenanforderungen in den Natur- und Ingenieurwissenschaften steigen mit der zunehmenden Komplexität von Simulationen und der Verfügbarkeit umfangreicher Daten rasch an. Diese Nachfrage wird mit großen Computerclustern und spezialisierten Hardwarebeschleunigern befriedigt. Die Programmierung solcher Systeme ist jedoch herausfordernd und zeitaufwändig, und die massive Nebenläufigkeit ist fehleranfällig. Die Softwareentwickler stehen dabei vor der Aufgabe, eine gut skalierbare Lösung zu finden und dabei die Korrektheit zu bewahren. Diese Softwareentwicklungsherausforderungen werden durch die sich schnell entwickelnde Hardware-Landschaft von High-Performance Computing (HPC) noch verstärkt. In dieser Arbeit werden die wichtigsten Herausforderungen bei der Entwicklung hochproduktiver und leistungsfähiger paralleler Programme untersucht. Diese Analyse basiert auf umfangreichen Studien mit einer Vielzahl von parallelen Programmen und Programmierern, die von menschlichen Probanden durchgeführt wurden. Sie deckt quantitative und messbare Produktivitätsmetriken, die wichtigsten Einflussfaktoren für die effiziente Entwicklung paralleler Programme und Methoden zur Kostenschätzung für die Softwareentwicklung auf. Auf der Grundlage dieser Analyse wird ein abstraktes Modell für parallele Algorithmen vorgeschlagen, um diese Herausforderungen zu entschärfen. Es basiert auf einer strikten Trennung zwischen der algorithmischen Struktur eines Programms und seinen ausgeführten Funktionen. Durch die Zerlegung von parallelen Programmen in eine hierarchische Struktur von parallelen Mustern werden effektive und globale Optimierungspotenziale aufgedeckt. Ein statisches Leistungsmodell sowie Optimierungs- und Scheduling-Algorithmen werden eingeführt, um diese Optimierungspotenziale zu nutzen. Es wird eine Proof of Concept (POC) Entwicklungspipeline vorgeschlagen, um Softwareentwicklern diesen musterbasierten Programmieransatz näherzubringen: Zunächst können parallele Programme in der vorgeschlagenen Parallel Pattern Language (PPL) spezifiziert werden, die sich eng an die mathematische Definition paralleler Algorithmen anlehnt. Alternativ dazu können vorhandene Codes mithilfe von Mustererkennungsmethoden in die vorgeschlagene hierarchische Musterstruktur übersetzt werden. Zweitens wird die hierarchische Struktur paralleler Muster extrahiert und globale Transformationen werden angewendet, um die Gesamtlaufzeit für eine Zielhardwarearchitektur zu minimieren. Drittens werden der optimierte Code und sein Scheduling in einer Source-to-Source-Methode für heterogene Systeme mit gemeinsamem und verteiltem Speicher und Beschleunigern generiert. Der vorgeschlagene Ansatz und die POC-Implementierung werden an realen parallelen Algorithmen evaluiert.The computational demands in sciences and engineering are quickly rising with the increasing complexities of simulation and the availability of extensive data. This demand is satisfied with large clusters of computers and specialized hardware accelerators. However, programming such systems is challenging and time-consuming, and the massive concurrency is error-prone. The software developers are faced with deriving a well-scaling solution while preserving correctness. These development challenges are aggravated by the quickly evolving hardware landscape of High-Performance Computing (HPC). This work investigates the key challenges when developing highly productive and performant parallel programs. This analysis is based on extensive human-subject studies with a diverse set of parallel programs and programmers. It uncovers quantitative and measurable productivity metrics, the main impact factors for developing parallel programs efficiently, and cost estimation methods for developing software. Based on this analysis, an abstract model of parallel algorithms is proposed to mitigate these challenges. It is based on a strict separation between the algorithmic structure of a program and its executed functions. Rich and high-level optimization potentials are revealed by decomposing parallel programs into a hierarchical structure of parallel patterns. A static performance model and optimization and scheduling algorithms are introduced to leverage these optimization potentials. A Proof of Concept (POC) development pipeline is proposed exposing this pattern-based programming approach to software developers: First, parallel programs may be specified in the proposed Parallel Pattern Language (PPL) that closely follows the mathematical definition of parallel algorithms. Alternatively, existing codes can be translated into the proposed hierarchical pattern structure with pattern-detection methods. Second, the hierarchical pattern structure is extracted and global transformations are applied to minimize the overall runtime for a target hardware architecture. Third, the optimized code and its scheduling are generated in a source-to-source fashion for heterogeneous systems with shared and distributed memory and accelerators. The proposed approach and POC implementation are evaluated on real-world parallel algorithms.
OpenAccess:
PDF
(additional files)
Dokumenttyp
Dissertation / PhD Thesis
Format
online
Sprache
English
Externe Identnummern
HBZ: HT030352386
Interne Identnummern
RWTH-2023-08320
Datensatz-ID: 967905
Beteiligte Länder
Germany
|
The record appears in these collections: |