Informatik

Mit den Schwerpunkten "Data Science & Analytics" oder "Advanced Software Engineering". Möglichkeit eines Master-Studiums parallel zu Job oder Familie

Modulhandbuch

 Zurück 

Parallele Programmierung und Algorithmen

Empfohlene Vorkenntnisse

Vorlesung und Praktikum Betriebssysteme 

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
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 "Parallele Programmierung und Algorithmen" (K60)
"Praktikum  Parallele Programmierung und Algorithmen" muss "m.E." attestiert sein

Leistungspunkte Noten

5 CP

Modulverantwortlicher

Prof. Dr. Tobias Lauer

Max. Teilnehmer 15
Haeufigkeit jedes Jahr (WS)
Verwendbarkeit

Master-Studiengang INFM

Veranstaltungen

Praktikum Parallele Programmierung und Algorithmen

Art Praktikum
Nr. E+I2113
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

Parallele Programmierung und Algorithmen

Art Vorlesung
Nr. E+I2112
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

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

 Zurück