MIN117: High Performance Computing

Kernmodule

MIN117: High Performance Computing

Kurzporträt MIN117: High Performance Computing
Worum geht es? High Performance Computing behandelt paralleles und verteiltes Rechnen für rechenintensive Aufgaben. Die Studierenden beschäftigen sich mit parallelen Architekturen, Prozessen, Threads, Message Passing, GPUs und Anwendungen aus dem Scientific Computing.
Wofür braucht man es? Die Kompetenzen werden gebraucht, wenn einzelne Rechner, sequentielle Programme oder naive Algorithmen nicht mehr ausreichen. Sie sind relevant für Simulation, Datenanalyse, KI, numerische Verfahren und alle Anwendungen mit hohem Rechenbedarf.
Wieso ist es interessant? Interessant ist das Modul, weil mehr Hardware nicht automatisch mehr Geschwindigkeit bedeutet. Erst geeignete Zerlegung, Kommunikation, Speicherzugriffe und Messung zeigen, ob Parallelisierung tatsächlich hilft.
Modulverantwortung

Prof. Dr. Nils Kopal

Lehrperson(en)
  • Prof. Dr. Nils Kopal
  • Prof. Dr. Jens Brandt
  • Prof. Dr. Steffen Goebbels
Verwendbarkeit

Master Informatik

Fächergruppe

Informatik

Modultyp
Wahlpflicht
Sprache

Deutsch

Angebot

Wintersemester

Dauer

1 Semester

Credits

5 ECTS

Benotung

Deutsche Notenskala 1-5

SWS

4SL

Workload
Präsenzstudium: 45 Std. Selbststudium: 90 Std.
Engl. Titel

High Performance Computing

Empfohlene Voraussetzungen

Programmierkenntnisse in C, mathematische Grundlagen (Lineare Algebra), Grundlegendes Verständnis von Parallelität

Lernergebnisse / Kompetenzen
WAS

Mit erfolgreichem Abschluss des Moduls sind die Studierenden in der Lage, Algorithmen der Numerik zu parallelisieren und auf Prozessen, Threads und GPUs zu implementieren. Sie können den Einfluss der Parallelisierung auf Laufzeit und Speicherbedarf analysieren und die Konzepte parallelen Rechnens auf neue Problemstellungen übertragen.

WOMIT

Die Studierenden erreichen dieses Lernergebnis, indem sie

  • in einer anwendungsorientierten Arbeitsweise die Grundlagen des verteilten Rechnens kennenlernen und bewerten.
  • Algorithmen der Numerik parallelisieren und unter Verwendung von GPUs und/oder Open MPI implementieren.
  • den Einfluss der Parallelisierung auf Laufzeit und Speicherbedarf analysieren.
  • Ergebnisse zielgruppengerecht dokumentieren und präsentieren.
WOZU

Die Studierenden nutzen diese Kompetenzen, um rechenintensive Algorithmen auf paralleler Hardware zu implementieren. Sie erlangen grundlegende Kenntnisse über Verfahren des Scientific Computing, die in entsprechenden Projekten genutzt werden können. Darüber hinaus sind die Studierenden in der Lage, die Konzepte der parallelen Programmierung auch auf Aufgabenstellungen außerhalb der Numerik anzuwenden.

Inhalte
  • Architektur paralleler Systeme
  • Design paralleler Algorithmen
  • Parallelisierung mittels Prozessen und Threads, Kommuniketion über Shared Memory (Open MP) und Messaging (Open MPI)
  • Verwendung von GPUs zum parallelen Rechnen (CUDA/OpenCL)
  • Anwendung auf Verfahren der linearen Algebra (Matrixmultiplikation, Lösen von Gleichungssystemen, schnelle Fourier-Transformation)
Prüfungsvorleistung

Erfolgreiche Implementierung und Erklärung von parallelen Beispiel-Algorithmen.

Prüfungsleistung

Mündliche Prüfung (45 Minuten).

Literatur
  • George Karniadakis, Robert M. Kirby: Parallel Scientific Computing in C++ and MPI. Cambridge University Press, 2003
  • Gene H. Golub, James M. Ortega: Scientific Computing - An Introduction with Parallel Computing. Academic Press, 2014
  • Efstratios Gallopoulos, Bernard Philippe, Ahmed H. Sameh: Parallelism in Matrix Computations, Springer, 2015
  • Michael Quinn: Parallel Programming in C with MPI and OpenMP. McGraw-Hill, 2003
  • Peter Pacheco: Parallel Programming with MPI. Morgan Kaufmann, 1996