Multicore-Programmierung (WS16/17)
Vorlesungsinhalt
Die Inhalte der Vorlesung umfassen eine Einführung in die Architektur von Multicore-Prozessoren, Programmiermodelle zur Multicore-Programmierung und die Programmierung mit Threads. Zur Thread-Programmierung werden verschiedene Sprach- und Bibliothekansätze vorgestellt.
Vorkenntnisse: Programmierkenntnisse in C; Grundkenntnisse in Rechnerarchitektur
Literaturempfehlungen
- Parallel Programming for Multicore and Cluster Systems 2nd Edition von Thomas Rauber und Gudula Rünger, Springer-Verlag, 2013
- Parallele Programmierung von Thomas Rauber und Gudula Rünger 3. Auflage , Springer-Verlag 2012
- Multicore: Parallele Programmierung von Thomas Rauber und Gudula Rünger, Springer-Verlag 2007
- Intel Threading Building Blocks: Outfitting C++ for Multi-Core Processor Parallelism von J. Reinders, OReilly-Verlag 2007
- The Art of Multiprocessor Programming von Maurice Herlithy und Nir Shavir, Elsevier-Verlag, 2008
Übungsblätter/Hausaufgaben
- C Einführung
- Übung 1
- Übung 2
- Übung 3
- Übung 4
- Übung 5
- Theorieteil: OpenMP Task Programmierung
- Programmierhinweise
- Übung 6, dining_phils.c
- Übung 7
- Übung 8
- Übung 9
- Übung 10
- Übung 11
- Übung 12
- Tabellen der Cache Strategien
- Lösungsskizzen der Programmieraufgaben
- Lösungsskizzen der Cuda-Programmieraufgaben
Sie können bearbeitete Aufgaben über die OPAL-Gruppe abgeben.
Vorlesungsfolien
- Teil 1: Einleitung (Stand 18.10.16 changelog)
- Teil 2: OpenMP Programmierung (Stand 3.11.16 changelog)
- Teil 3: PThread Programmierung (Stand 22.11.16 changelog)
- Teil 4: Schleifenscheduling
- Teil 5: Caches und Speicherhierarchien
- Teil 6: GPU-Programmierung