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 (FolienDruck), Grenzen effizienter Parallelisierung (FolienDruck)

Übung

Organisatorisches

1. Mehrkern-Programmierung mit OpenMP

2. Verteiltes Rechnen mit Open MPI

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

3. Massiv parallele Programmierung mit OpenCL

  • Open Computing Language (OpenCL) 2.0 Kommandoreferenz
  • OpenCL Best Practices Guide
  • 5. Übungsblatt (hello_world.cpp, VS2012-Projekt, utils.cpp)
  • 6. Übungsblatt

Klausur

Klausur

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

Klausurvorbereitung