Parallele und verteilte Systeme

Die Lehrveranstaltung gibt eine Einführung in die grundlegenden Konzepte paralleler und verteilter Programmierung. Behandelt werden aber auch praktische Aspekte zur Programmierung von Mehrkern-Systemen, die verteilte Berechnung auf Rechnerclustern und die massive Parallelität mittels Grafikprozessoren.

Bitte beachten Sie: Die Unterlagen zu unseren Vorlesungen und Übungen sind nur aus dem Netzwerk der Bauhaus-Universität Weimar erreichbar.

Vorlesung

Einführung

  1. Organisatorisches, Grundlagen, Architekturen (Folien, Druck)

Mehrkern-Programmierung

  1. Parallelprogrammierung, Mehrkern-Programmierung, OpenMP (Folien, Druck)
  2. Kommunikation zwischen Threads, Synchronisationstechniken (Folien, Druck)
  3. Parallele Abschnitte, Datenabhängigkeiten, Mutexe (Folien, Druck)

Verteilte Systeme

  1. Effiziente Parallelisierung, verteilte Systeme, Interprozesskommunikation, Open MPI (Folien, Druck)
  2. Senden und Empfangen, gepuffert, (nicht) blockierend, (a)synchron, (nicht) lokal (Folien, Druck)
  3. Kollektive Kommunikation, Verbreiten, Verteilen und Einsammeln, Reduktionsoperatoren, Abgeleitete Datentypen (Folien, Druck)
  4. Kommunikatoren und Gruppen, ...

Massiv parallele Programmierung

  1. Datenparallelität auf Grafikprozessoren, GPGPU, OpenCL (Folien, Druck)
  2. Modell-Sichtweisen, Geräteinformation, Kernel einlesen, Parameterübergabe, Zeitmessung, Compilermeldungen, Watchdog Timer (Folien, Druck)
  3. Mehrdimensionale Gitter, Speicheroptimierung, parallele Reduktion, Speicherorganisation, Kernelaufrufe aufteilen, Vektordatentypen, weitere Bibliotheksfunktionen (Folien, Druck)
  4. Hybride parallele Systeme, Ausblick C++17, Zusammenfassung (Folien, Druck)

Modellierung und Verifikation

  1. Petrinetze, mathematische Darstellung, Modellieren verteilter Systeme, formale Analyse, Spezialfälle, Verallgemeinerung (Folien, Druck)
  2. (Lineare) temporale Logik (Folien, Druck), Grenzen effizienter Parallelisierung (Folien, Druck)

Übung

Die Übungen finden jede zweite Woche freitags um 13:30 Uhr im LiNT-Pool statt. Ausführliche Informationen finden Sie auf der Moodle-Seite der Veranstaltung. Das Passwort wird am 25. Oktober 2019, während der ersten Übung bekanntgegeben.

Organisatorisches

1. Mehrkern-Programmierung mit OpenMP

  • Open Multi-Processing (OpenMP) Kommandoreferenz
  • 1. Übungsblatt 
  • 2. Übungsblatt

2. Verteiltes Rechnen mit Open MPI

  • Message Passing Interface (MPI) Standard 
  • 3. Übungsblatt
  • 4. Übungsblatt

3. Massiv parallele Programmierung mit OpenCL

  • Open Computing Language (OpenCL) Kommandoreferenz
  • OpenCL Best Practices Guide
  • 5. Übungsblatt
  • 6. Übungsblatt

Klausur

Klausur

Termin: Freitag, den 08. Februar 2019 um 9:00 Uhr im HS HK7
Hilfsmittel: Keine

Klausurvorbereitung