MODULBESCHREIBUNG

Parallele Programmierung

ECTS-Punkte:
4
Lernziele:

Programmierung von parallelen, nebenläufigen und asynchronen Systemen:

  • Die Konzepte der Nebenläufigkeit verstehen und in Programmen anwenden können.

  • Die Korrektheitskriterien der Nebenläufigkeit kennen, typische Gefahren erkennen und vermeiden.

  • Programme mittels Parallelisierung auf Multi-Cores, GPUs und Cluster beschleunigen können.

  • Programme mittels Asynchronität nicht-blockierend entwerfen können.

  • Verschiedene Programmiermodelle für Nebenläufigkeit kennen lernen.

Kurse in diesem Modul

Parallele Programmierung:

Grundlagen des Multi-Threading und der Synchronisation:

  • Einführung in die nebenläufige und parallele Programmierung
  • Multi-Threading mit Java und .NET
  • Kritische Abschnitte und Synchronisationsmechanismen
  • Monitor-Konzept und deren Umsetzung in gängigen Sprachen
  • Spezifische Synchronisationsprimitiven wie Semaphore, Reader-Writer Locks, Latches, Barrieren u.a.
  • Korrektheitsdingungen; Problematik von Data Races, Race Conditions, Deadlocks und Starvation

Thread Pools für effiziente Parallelisierung und Asynchronität:

  • Thread Pools: Mechanismus, Konzept, Mechanismus, Work-Stealing, Java und .NET
  • Task- und Daten-Parallelität
  • Parallelisierung von Algorithmen
  • Asynchrone Programmierung in Java (CompletableFutures)
  • C# Async-Await Programmierung

Ausgewählte Themen der Nebenläufigkeit:

  • GUI und Nebenläufigkeit, asynchrone Programmierung im GUI
  • Speichermodelle in Java und .NET: Atomarität, Sichtbarkeit, Ordnung, Speicherbarrieren
  • Lock-freie Programmierung
  • Non-Blocking Data Structures

Massive Parallelisierung:

  • GPU-Parallelisierung: Konzept, Kernels, Launch Configs, Memory Management, Optimierungen
  • HPC Cluster Parallelisierung mit MPI

Fortgeschrittene Programmiermodelle für die Nebenläufigkeit:

  • Verteilte Parallelisierung mit Actors und CSP
  • Reactive Programming (je nach Anzahl Vorlesungswochen im Semester)
  • Hardware und Software Transactional Memory

Verwendete Technologien im Modul: Java, .NET C#, C/C++ (für GPU, MPI u.a.)

Uebung mit 2 Lektionen pro Woche
Vorlesung mit 2 Lektionen pro Woche
Disclaimer

Diese Beschreibung ist rechtlich nicht verbindlich! Weitere Informationen finden Sie in der detaillierten Modulbeschreibung.