Automatisches Parallelisieren

Die Beschleunigung von Berechnungen durch gleichzeitige Nutzung mehrerer Hardwareeinheiten gehört zu den Standardtechniken heutiger Computersysteme und ist insbesondere für den effizienten Einsatz von Mikroprozessoren von entscheidender Bedeutung. Als Alternative zur aufwändigen und fehleranfälligen direkten Programmierung paralleler Systeme bietet sich die automatisierte Erzeugung paralleler Programme an.

Die Veranstaltung zielt auf das Verständnis der Möglichkeiten und Methoden, vorliegende sequenzielle oder parallele Programme automatisch und effizient an verschiedene parallele Rechnerarchitekturen oder Prozessorpipelines anzupassen, sowie die Fähigkeit, solche Anpassungen für einfache Programme manuell selbst vorzunehmen.

Inhalte der Vorlesung sind insbesondere Abhängigkeitsanalyse, Befehlsanordnung (Scheduling), Allokation und Bindung von Ressourcen, synchrone und asynchrone Parallelität, Abstraktionsmodelle für Pipelines und parallele Rechnerarchitekturen, Programmtransformation, semantisch äquivalente Programme, Parallelisierung, Vektorisierung, Software-Pipelining, Schleifentransformationen, Polyedermethoden und Code-Erzeugung.

Hilfreich für das Verständnis mancher Vorlesungsinhalte wären Kenntnisse aus der linearen Optimierung.

Basisliteratur: Alain Darte, Yves Robert und Frédéric Vivien, Scheduling and Automatic Parallelization

Die Vorlesung richtet sich vorrangig an Studierende im Hauptstudium Informatik (Diplom, Lehramt an Gymnasien oder Magister) bzw. Bioinformatik.