Übersetzer für Parallele Systeme

Compilers for Parallel Systems

SS 2019

185.A64 VU 2h 3.0 ECTS

Computerprogramme weisen einen gewissen Grad an Parallelismus auf, dadurch können auf einem parallelen System mehrere Rechenoperationen gleichzeitig ausgeführt werden können. In Desktop-PCs rechnen bis zu 18 Cores, in Koprozessoren bis zu 72 (Intel Xeon-Phi), in den stärksten Supercomputern bis zu Millionen Cores.

Cray XC30 "Piz Daint", Swiss National Supercomputing Centre (Quelle: www.cscs.ch)

Parallelismus kann im Programm implizit enthalten (z. B. in einer Schleife mit voneinander unabhängigen Iterationen) oder explizit, mittels paralleler Sprachkonstrukte, angegeben sein. Der Programmieraufwand für eine parallele Implementierung ist zumeist deutlich höher als für eine sequentielle, daher kommt dem Compiler eine wichtige Rolle bei der Unterstützung der Programmentwicklung zu. Nicht von ungefähr wird das Parallelisieren eines Programms oft als "tedious and error-prone" - mühsame und fehleranfällige - Aufgabe bezeichnet. Dies gilt erst recht, wenn ein hoher Performancegewinn, und zwar für eine konkrete parallele Architektur mit bestimmten performancerelevanten Merkmalen, erzielt werden soll.

Wie kann ein Übersetzer impliziten Parallelismus automatisch erkennen und - ebenso wie explizit spezifizierten - auf eine parallele Zielarchitektur abbilden, so dass deren Ressourcen optimal genutzt werden? Diese Fragestellung steht im Zentrum der Lehrveranstaltung. Sie vermittelt Übersetzungs- und Optimierungstechniken, die effizienten Code für Parallelrechner liefern. Als Zielarchitekturen werden Multiprozessorsysteme mit gemeinsamem (z.B. Multicore-Prozessoren) und verteiltem Speicher (z. B. Linux-Cluster, massiv parallele Systeme), betrachtet.

Inhalt: Überblick über Parallele Systeme, Datenabhängigkeit, Kontrollabhängigkeit, Programmtransformationen, Vektorisierung, Parallelisierung für Systeme mit gemeinsamem und verteiltem Speicher, Lokalitätsoptimierungen, Polyhedrales Modell, Zwischendarstellungen, Programmanalysen, Übersetzung von parallelen Sprachen; Ausblick: Autotuning, Laufzeitparallelisierung.

Grundlegende Kenntnisse aus Übersetzerbau und Paralleler Programmierung sind vorteilhaft, aber keine unbedingte Voraussetzung.

Es wird ein source-to-source Compiler für eine imperative Sprache, mit Zielsprache Fortran 95 (implementiert in C/lex/yacc) zur Verfügung gestellt. Im Rahmen des Übungsteils wird er um Programmtransformationen und Übersetzungstechniken (Vektorisierung, Parallelisierung) erweitert. C-Kenntnisse und Verständnis der Syntaxbaum-Datenstrukturen sind dafür ausreichend. Als parallele Zielkonstrukte werden

verwendet.

Teil der Master-Curricula 066 931: Computational Intelligence und 066 937: Software Engineering & Internet Computing.

Vortragender: Hans Moritsch

Die begleitenden LVAs Optimierende Übersetzer und Codegeneratoren behandeln Techniken der Datenflussanalyse und maschinenunabhängigen Optimierung sowie Codeoptimierung auf Instruktionsebene für (super-)skalare Architekturen.

Anmeldung

bis 18.3. 2019 in TISS LVA 185.A64
Complang
Schnellzugriff:
TISS LVA 185.A64
Fakultät für Informatik
Technische Universität Wien
Anfang | HTML 4.01 | letzte Änderung: 2019-03-03 (Hans Moritsch)