Informatik (Master)

Modulübersicht: Angewandte Informatik

Informatik (INFM)

Parallel Computing

Empfohlene Vorkenntnisse

Vorlesung und Praktikum Programmierung (Java und C)

Vorlesung und Praktikum Betriebssysteme

Vorlesung und Praktikum Algorithmen und Datenstrukturen

 

Lehrform Vorlesung/Labor
Lernziele / Kompetenzen

Erfolgreiche Teilnehmerinnen und Teilnehmer ...

  • verfügen über vertiefte Kenntnisse in der Programmierung nebenläufiger Anwendungen und der Nutzung von Synchronisationskonstrukten
  • haben die Fähigkeit entwickelt, bestehende Anwendungen und algorithmische Probleme auf ihre (Teil-)Parallelisierbarkeit hin zu untersuchen und Lösungen programmatisch umzusetzen
  • kennen die Möglichkeiten und Grenzen der Parallelisierung aufgrund theoretischer Komplexitätsbetrachtungen
  • sind in der Lage, parallele Algorithmen zu verstehen, zu analysieren sowie auf massiv paralleler Hardware zu implementieren
  • können ihr Wissen im Bereich des Parallel Computing einem Fachpublikum schriftlich sowie mündlich vermitteln
Dauer 1
SWS 4.0
Aufwand
Lehrveranstaltung 60
Selbststudium / Gruppenarbeit: 90
Workload 150
ECTS 5.0
Voraussetzungen für die Vergabe von LP

Modulprüfung für "Parallel Computing" (mündliche Prüfung)
"Praktikum Parallel Computing" muss "m.E." attestiert sein

Modulverantwortlicher

Prof. Dr. Tobias Lauer

Max. Teilnehmer 15
Empf. Semester 1-2
Haeufigkeit jedes Jahr (WS)
Verwendbarkeit

Master-Studiengang INFM

Veranstaltungen

Praktikum Parallel Computing

Art Praktikum
Nr. EMI2113
SWS 2.0
Lerninhalt

Entwurf und Implementierung paralleler Algorithmen und Synchronisationsmechanismen

- auf Standardhardware in einer geläufigen Programmiersprache (Java)

- auf Spezialhardware (GPUs) mit Hilfe eines spezifischen parallelen Programmiermodells (CUDA)

 

Literatur

Oechsle, R., Parallele und verteilte Anwendungen in Java, 3. Auflage, Hanser 2011
Goetz, B. et al., Java Concurrency in Practice, Addison-Wesley Longman, 2006
Cook, S., CUDA Programming: A Developer's Guide to Parallel Computing with GPUs, Morgan Kaufman, 2012
Kirk, D., Hwu, W., Programming Massively Parallel Processors, Morgan Kaufman, 2010

Parallel Computing

Art Vorlesung
Nr. EMI2112
SWS 2.0
Lerninhalt

Die Vorlesung befasst sich mit parallelen Algorithmen und deren Programmierung sowohl auf Standard-Multicore-Rechnern als auch auf Spezialhardware (GPUs). Nach einer Vertiefung der Grundkenntnisse in nebenläufiger Programmierung (Multithreading) werden erweiterte Synchronisationsmechanismen behandelt. Anhand diverser Beispiele werden die Teilnehmer in die Theorie und Praxis paralleler Algorithmen eingeführt. Dabei werden auch die Möglichkeiten und Grenzen der Beschleunigung von Programmen durch Parallelisierung erörtert.


Themen:

  • Parallelität und Nebenläufigkeit (Hardware- und Software-Aspekte)
  • Threadsicherheit und Synchronisation (Konkurrenz und Kooperation, Race-Conditions, Deadlocks atomare Operationen, Barrieren, etc.)
  • Aufbau (teil-)parallelisierter Anwendungen: Tasks vs. Threads, Thread-Pools, Executor-Framework, Fork/Join-Framework
  • Parallele Rechenmodelle (PRAM-Architektur, SIMD vs. MIMD, Speichermodelle)
  • Parallele Algorithmen (Array-Scan, Merge-Sort, Quicksort, Editierdistanz, paralleles Maximum, parallele Präfixsumme, paralleles Merging)
  • Analyse paralleler Algorithmen: Zeitkomplexität, Prozessorkomplexität, Work-Komplexität, Work-Optimalität
  • Möglichkeiten und Grenzen der Beschleunigung durch Parallelisierung (Amdahl'sches Gesetz, Gustafson'sches Gesetz)
  • Massiv parallele Architekturen und ihre Programmierung am Beispiel von GPUs (Grafikkarten)

 

Literatur

Oechsle, R., Parallele und verteilte Anwendungen in Java, 3. Auflage, Hanser 2011
Goetz, B. et al., Java Concurrency in Practice, Addison-Wesley Longman, 2006
Cook, S., CUDA Programming: A Developer's Guide to Parallel Computing with GPUs, Morgan Kaufman, 2012
Kirk, D., Hwu, W., Programming Massively Parallel Processors, Morgan Kaufman, 2010