Modulbeschreibung

Parallele Programmierung

Kurzzeichen:
M_ParProg
Unterrichtssprache:
Englisch
ECTS-Credits:
4
Leitidee:

Programmierung von parallelen, nebenläufigen und asynchronen Systemen.

Die Studierenden können:

  • die Konzepte der Nebenläufigkeit darstellen und in Programmen anwenden

  • die Korrektheitskriterien der Nebenläufigkeit erläutern, typische Gefahren erkennen und vermeiden

  • Programme mittels Parallelisierung auf Multi-Cores, GPUs und Cluster beschleunigen

  • Programme mittels Asynchronität nicht-blockierend entwerfen

  • Verschiedene Programmiermodelle für Nebenläufigkeit erklären

Modulverantwortung:
Prof. Dr. Purandare Mitra
Standort (angeboten):
Rapperswil-Jona
Zusätzliche Eingangskompetenzen:

 Paralleler oder vorgängiger Besuch von Betriebssysteme 2 vorteilhaft. 

Modultyp:
Wahlpflicht-Modul für Elektrotechnik STD_05(Keine Semesterempfehlung)Kategorie:Technik (E-et)
Wahlpflicht-Modul für Elektrotechnik STD_14(Keine Semesterempfehlung)Kategorie:Technik (E-et)
Wahlpflicht-Modul für Elektrotechnik STD_21(Keine Semesterempfehlung)Kategorie:Technik (E-et)
Wahlpflicht-Modul für Informatik Retro STD_14_UG(Empfohlenes Semester: 4)Kategorie:Grundlagen Informatik und Aufbau Informatik (I-gai)
Wahlpflicht-Modul für Software Engineering STD_14 (PF)Kategorie:Kernmodule Informatik Profile (I-KMP)
Wahlpflicht-Modul für Informatik STD_11(Empfohlenes Semester: 4)Kategorie:Aufbau Informatik (I-a)
Wahlpflicht-Modul für Informatik STD_14(Empfohlenes Semester: 4)Kategorien:Aufbau (I_Auf), Informatik (I_Inf)
Wahlpflicht-Modul für Informatik STD_21(Empfohlenes Semester: 4)Kategorien:Aufbau (I_Auf), Informatik (I_Inf)
Modulbewertung:
Note von 1 - 6

Leistungsnachweise und deren Gewichtung

Modulschlussprüfung:
Schriftliche Prüfung, 120 Minuten

Inhalte

Modul- und Lerninhalt:

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.)