Modulbeschreibung

Parallele Programmierung

ECTS-Credits:
4
Lernziele:

Programmierung von parallelen und nebenläufigen Systemen

  • Grundlagen der nebenläufigen und parallelen Programmierung (Threads, Synchronisation, Korrektheits- und Fairnessbedingungen, Thread Pools, asynchrone Programmierung, Speichermodelle) kennen und verstehen.
  • Entwurf und Implementation von nebenläufigen und parallelen Programmen in modernen verbreiteten Technologien (z.B. .NET C#, Java) umsetzen können.
  • Datenstrukturen, Algorithmen und Design Patterns zur effizienten Parallelisierung (Lock-Free/Wait-Free Data Structures, Recursive Parallel, Producer/Consumer u.a.) kennen und anwenden können.
  • Weitergehende Concurrency-Modelle und Technologien (Actors/CSP, Software Transactional Memory, Cluster-Parallelisierung mit MPI, GPU-Parallelisierung) kennen und einsetzen können.

Kurse in diesem Modul

Parallele Programmierung:

Multi-Threading und Synchronisation

  • Einführung in die nebenläufige/parallele Programmierung und zugrundeliegenden Systemarchitekturen
  • Multi-Threading mit .NET und/oder Java
  • Kritische Abschnitte und Synchronisationsmechanismen
  • Monitor-Konzept und deren Umsetzung in gängigen Sprachen
  • Spezifische Synchronisationsprimitiven (Semaphore, Reader-Writer Locks, Latches, Barrieren u.a.)
  • Korrektheits- und Fairnessbedingungen; Problematik von Race Conditions, Deadlocks und Starvations

Thread Pools und effiziente Parallelisierung

  • Thread Pools: Mechanismus, Eignung und Limitationen
  • Task- und Daten-Parallelität
  • Parallele Algorithmen (Sortierung, Suchen etc.)
  • Asynchrone Programmierung
  • GUI und Nebenläufigkeit
  • Entwurfsmuster der Nebenläufigkeit (Producer/Consumer, Concurrent Pipelines, Reader/Writer, Recursive Parallel)
  • Speichermodelle: Atomarität, Sichtbarkeit und Optimierung
  • Lock-Free & Wait-Free Datenstrukturen

Fortgeschrittene Nebenläufigkeitsmodelle

  • Verteilte Parallelisierung mit Actors/CSP
  • Cluster Computing mit MPI
  • Software Transactional Memory
  • Vektorparallelisierung; GPU / Coprozessor-Parallelisierung
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.