Nach positiver Absolvierung der Lehrveranstaltung sind Studierende in der Lage, das Konzept der Datenabhängigkeit zu beschreiben und für die Parallelisierung sequentieller Programme anzuwenden, Programmtransformationen zur Abhängigkeitselimination und Lokalitätsoptimierung aufzuzeigen, grundlegende Vektorisierungs- und Parallelisierungsstrategien zu implementieren, die polyhedrale Darstellung von Schleifen zu erklären, Analysetechniken für parallele Programme zu diskutieren.
Ü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. Im Übungsteil wird u.a. ein gegebener source-to-source Compiler um Programmtransformationen und parallele Übersetzungstechniken erweitert.
Vorlesung, Übungsbeispiele, Programmierprojekt, Literaturstudium, Präsentation.
Die Veranstaltung ist als Präsenzveranstaltung geplant. Im Fall erneuter pandemiebedingter Einschränkungen wird die Lehrveranstaltung auf einen Online-Modus umgestellt.
ECTS Breakdown (3 ECTS ~ 75 h):
Vorlesung inkl. Nachbereitung 20 Übungsbeispiele 10 Programmierprojekt 25 Lektüre/Präsentation Paper 20
Abgabe von Übungsbeispielen, Abgabegespräch Programmierprojekt, Präsentation eines Papers.
Nicht erforderlich
Randy Allen, Ken Kennedy. Optimizing compilers for modern architectures. Kaufmann, 2002.Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman, Compilers: Principles, Techniques, & Tools (2nd Edition). Pearson Addison Wesley, 2007.Michael J. Wolfe. High-Performance Compilers for Parallel Computing. Addison-Wesley, 1996.Hans Zima, Barbara Chapman. Supercompilers for Parallel and Vector Computers. ACM Press, 1990.
Grundbegriffe aus Übersetzerbau, Parallele Programmierung.