PDF

MODULBESCHREIBUNG

Parallele Programmierung

Kurzzeichen:
M_ParProg
Durchführungszeitraum:
FS 2019 - FS 2019
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:
Luc Bläser
Zusätzlich vorausgesetzte Kenntnisse:
keine
Skriptablage:
Modultyp:
Standard-Modul für Elektrotechnik (Bachelor 05) (Keine Semester Empfehlung)
Standard-Modul für Elektrotechnik (Bachelor 14) (Keine Semester Empfehlung)
Standard-Modul für Informatik (Bachelor 11) (Empfohlenes Semester: 4)
Standard-Modul für Informatik (Bachelor 14) (Keine Semester Empfehlung)
Standard-Modul für Software Engineering (Bachelor 14)
Standard-Modul für Generalist (Bachelor 14)

ECTS-Punkte pro Kategorie

Kategorie:
Elektrotechnik (Bachelor 05)
Technik / 4 Punkte
Elektrotechnik (Bachelor 14)
Technik / 4 Punkte
Informatik (Bachelor 11)
Aufbau Informatik / 4 Punkte
Informatik (Bachelor 14)
Grundlagen Informatik und Aufbau Informatik / 4 Punkte
Software Engineering (Bachelor 14)
Kernmodule Informatik Profile / 4 Punkte
Generalist (Bachelor 14)

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.


Während des Semesters:
 
Bewertungsart:
keine Note oder Wertung

Kurse in diesem Modul

Parallele Programmierung

Kürzel:
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:
Uebung mit 2 Lektionen pro Woche
Vorlesung mit 2 Lektionen pro Woche

Übergangsregelungen:
Beschreibung erzeugt: 2018-10-23 12:27:43
Letzte Moduländerung: 2017-12-21 09:03:42
Modul-Id: 31603 (Vorgänger)
Status: aktiviert