Restrukturierung von Programmen

Ist die Ausführung eines vorliegenden Programms auf einem Rechner des gewünschten Typs nicht effizient oder wegen spezifischer Eigenarten des Rechners gar nicht möglich, wird versucht, das Programm in ein semantisch äquivalentes Programm mit den gewünschten Eigenschaften zu transformieren. Im Falle prozeduraler Programmiersprachen steht dabei wegen des erreichbaren Parallelitätsgrades die Restrukturierung von Schleifen im Vordergrund. Für Maschinenprogramme interessiert vor allem die statische Reihenfolge der Anweisungen.

In der Vorlesung werden die Befehlsanordnung (Scheduling) und die Bindung an die Ressourcen behandelt. Inhalte sind einerseits Anordnungstechniken für sequenzielle Programmstücke, andererseits Methoden zur Restrukturierung von Schleifen und Kriterien für die parallele Ausführbarkeit verschiedener Instanzen des Schleifenkörpers. Ein wichtiger Gesichtspunkt ist dabei die Optimierung diverser Parameter des Transformationsprozesses im Hinblick auf die Architekturklasse sowie eventuell bekannte Hardware-Kenngrößen der Zielmaschine.

Die Vorlesung richtet sich an Studierende im Hauptstudium Informatik (Diplom oder Lehramt an Gymnasien). 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.