Übersetzer für Parallele Systeme

Compilers for Parallel Systems

SS 2015

185.A64 VU 2h 3.0 ECTS

Computerprogramme weisen einen bestimmten Grad an Parallelismus auf, wodurch auf paralleler Hardware mehrere Operationen gleichzeitig ausgeführt werden können. In Multicore-PCs rechnen bis zu acht, im Intel Xeon-Phi 60, in den stärksten Supercomputern Millionen von Prozessorkernen.

Parallelismus kann im Programm implizit enthalten (z. B. in einer Schleife mit voneinander unabhängigen Iterationen) oder explizit, mittels paralleler Sprachkonstrukte, angegeben sein.

Source: en.wikipedia.org/wiki/Parallel_computing
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 16.3. in TISS LVA 185.A64

Termine

Mo 16:30 - 18:00 Seminarraum 384 (Elektrot. Institutsg. Gußhausstr. 27-29, 4. Stock), am 16.3. und 23.3. in Seminarraum 124 (Elektrot. Institutsg. Gußhausstr. 27-29, 3. Stock); ab 2.3.2015 (Vorbesprechung)
Complang
Schnellzugriff:
TISS LVA 185.A64
Fakultät für Informatik
Technische Universität Wien
Anfang | HTML 4.01 | letzte Änderung: 2015-02-12 (Moritsch)