Parallelrechner und Parallelprogrammierung

Vortragssprache:

Deutsch

Beschreibung:

Die Vorlesung gibt eine Einführung in die Welt moderner Parallel- und Höchstleistungsrechner, des Supercomputings bzw. des High-Performance Computings (HPC) und die Programmierung dieser Systeme.

Zunächst werden allgemein und exemplarisch Parallelrechnersysteme vorgestellt und klassifiziert. Im Einzelnen wird auf speichergekoppelte und nachrichtengekoppelte System, Hybride System und Cluster sowie Vektorrechner eingegangen. Aktuelle Beispiele der leistungsfähigsten Supercomputer der Welt werden ebenso wie die Supercomputer am KIT kurz vorgestellt.

Im zweiten Teil wird auf die Programmierung solcher Parallelrechner, die notwendigen Programmierparadigmen und Synchronisationsmechanismen, die Grundlagen paralleler Software sowie den Entwurf paralleler Programme eingegangen. Eine Einführung in die heute üblichen Methoden der parallelen Programmierung mit OpenMP und MPI runden die Veranstaltung ab.

Literaturhinweise:

  1. David E. Culler, Jaswinder Pal Singh, Anoop Gupta: “Parallel computer architecture: a hardware, software approach”, Morgan Kaufmann, 1999, ISBN 1-55860-343-3
  2. Theo Ungerer: „Parallelrechner und parallele Programmierung“, Spektrum Verlag, 1997, ISB: 3-8274-0231-X
  3. John L. Hennessy, David A. Patterson: “Computer architecture: a quantitative approach (4. edition)”, Elsevier, 2007, ISBN 0-12-370490-1, 978-0-12-370490-0
  4. Kai Hwang, Zhiwei Xu: “Scalable parallel computing: technology, architecture, programming”, McGraw-Hill, 1998, ISBN 0-07-031798-4
  5. William Gropp, Ewing Lusk, Anthony Skjellum: “Using MPI: portable parallel programming with the message-passing interface (2. edition)”, MIT Press, 1999, ISBN 0-262-57132-3, 0-262-57134-X
  6. Barbara Chapman, Gabriele Jost, Ruud van der Pas: “Using OpenMP: portable shared memory parallel programming”, MIT Press, 2008,  ISBN 0-262-53302-2, 978-0-262-53302-7

Lehrinhalt:

  1. Studierende sollen in die Grundbegriffe paralleler Architekturen und die Konzepte ihrer Programmierung eingeführt werden. Sie eignen sich Wissen über verschiedene Architekturen von Höchstleistungsrechnern an und lernen verschiedene Typen anhand von Beispielen aus der Vergangenheit und Gegenwart kennen.
  2. Sie lernen Methoden und Techniken zum Entwurf, Bewertung und Optimierung paralleler Programme, die für den Einsatz in Alltags- oder industriellen Anwendungen geeignet sind.
  3. Die Studierenden können Probleme im Bereich der Parallelprogrammierung analysieren, strukturieren und beschreiben. Sie erarbeiten Lösungskonzepte für Problemstellungen mit verschiedenen Klassen von Parallelrechnern.