Die Veranstaltung behandelt zunächst die etablierten Programmiersysteme OpenMP und MPI in größerer Tiefe als im Bachelorstudium. Der Schwerpunkt wird auf fortgeschrittene Sprachkonstrukte wie OpenMP-Tasks, MPI-Kommuni-katoren und hybride MPI/OpenMP-Programmierung gelegt. Wir diskutieren den Einsatz der Konstrukte anhand von Beispielanwendungen. Dabei stehen die Entwurfsziele Performance und Skalierbarkeit im Vordergrund. Außerdem werden einige komplexere Synchronisationsprobleme besprochen.

 

Im zweiten Teil der Veranstaltung werden aktuelle parallele Programmiersysteme vorgestellt und mit den etablierten Systemen verglichen. Typische Herangehensweisen dieser Systeme sind der Partitioned Global Address Space (PGAS) und die Taskbasierte Parallele Programmierung (TaPP). Einzelne Sprachen werden erlernt und erprobt, z.B. Chapel, TBB, HPX und Charm++. Daneben diskutieren wir Querschnittsthemen wie Entwurfsmuster, Fehlertoleranz und Elastizität.

 

Für den Besuch der Veranstaltung sind Vorkenntnisse aus Parallelverarbeitung 1 und 2 von Vorteil, aber nicht zwingend erforderlich. Die Veranstaltung gliedert sich in einen Vorlesungs- und einen Praktikumsteil. Der Praktikumsteil umfasst die Entwicklung von Programmen mit den behandelten Programmiersystemen. Im Praktikum arbeiten Sie typischerweise in Zweierteams. Das Praktikum bildet zusammen mit einem Abschlussgespräch die Basis für die Bewertung der Veranstaltung.