MODULBESCHREIBUNG

Parallele Programmierung

Kurzzeichen:
M_ParProg
Durchführungszeitraum:
FS/19-FS/20
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.

Verantwortliche Person:
Bläser Luc
Empfohlene Module:
Zusätzlich vorausgesetzte Kenntnisse:
keine
Skriptablage:
Modultyp:
Standard-Modul für Elektrotechnik STD_05(Keine Semester Empfehlung)
Standard-Modul für Elektrotechnik STD_14(Keine Semester Empfehlung)
Standard-Modul für Informatik STD_11(Empfohlenes Semester: 4)
Standard-Modul für Informatik STD_14(Keine Semester Empfehlung)
Standard-Modul für Generalist STD_14 (PF)

ECTS-Punkte pro Kategorie

Kategorie:
Technik / 4 Punkte
Technik / 4 Punkte
Aufbau Informatik / 4 Punkte
Grundlagen Informatik und Aufbau Informatik / 4 Punkte
Kernmodule Informatik Profile / 4 Punkte

Modulbewertung

Bewertungsart:
Note von 1 - 6

Leistungsbewertung

Während der Prüfungssession:
Schriftliche Prüfung, 120 Minuten
Zulassungsbedingungen zur Prüfung:

Bestehen der Testatbedingungen; d.h. mehrere erfolgreich bestandene Testat-Übungsserien.

Kurse in diesem Modul

Parallele Programmierung

Kurzzeichen:
ParProg
Lernziele:
Plan 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.)

Kursart:

(Durchführung gemäss Stundenplan)

Uebung mit 2 Lektionen pro Woche
   - Max. Teilnehmer: 18
   - Harte Grenze: ja
Vorlesung mit 2 Lektionen pro Woche
   - Max. Teilnehmer: 126
   - Harte Grenze: ja

Übergangsregelungen:
Parallel- und Netzwerkprogrammierung (mUk_PnProg) (nicht durchgeführt)