Advanced Topics in Parallel Programming

  • Typ: Seminar (S)
  • Semester: SS 2015
  • Ort:

    Gebäude 20.21 (SCC-Süd), Raum 314

  • Zeit: Montag, 15:45-17:15
  • Beginn: 20.04.2015
  • Dozent: Prof. Dr. Achim Streit
    Dr. Gevorg Poghosyan
  • LVNr.: 2400017

Beschreibung

Eine effiziente Nutzung hochwertiger Supercomputing-Ressourcen (auch Hochleistungsrechner bzw. HPC genannt) für Simulationen von Phänomenen aus der Physik, Chemie, Biologie, mathematischen oder technischen Modellierung, von neuronalen Netzen, Signalverarbeitung, usw. ist nur möglich, wenn die entsprechenden Anwendungen mit modernen und fortschrittlichen Methoden der parallelen Programmierung implementiert werden. Oftmals ist sogar die Fähigkeit der Anwendung zur guten Skalierung (d.h. zur effizienten Nutzung einer großen Menge von CPU-Kernen) oder zur Nutzung von Beschleunigerhardware wie z.B. Grafikkarten/GPUs eine Voraussetzung, um einen Zugang zu und entsprechende Rechenzeit auf großen HPC-Systemen genehmigt zu bekommen.

Die Verbesserung bestehender Algorithmen in den Simulationscodes durch fortschrittliche Parallelisierungstechniken kann zu erheblichen Leistungsverbesserungen führen; Ergebnisse können so schneller generiert werden. Oder es besteht auch die Möglichkeit zur Energieeinsparung, in dem geeignete zeitintensive Rechenroutinen des Simulationsprogramms von CPUs mit einem relativ hohen Energiebedarf auf GPUs mit einem niedrigeren Energiebedarf (pro Rechenoperation) verlagert werden.

Im Seminar werden ausgewählte Themen zu moderne Techniken der parallelen Programmierung vorgestellt und diskutiert. Stichworte sind MPI, OpenMP, CUDA, OpenCL und OpenACC. Es werden auch Werkzeuge zur Analyse der Effizienz, Skalierbarkeit und des Zeitverbrauchs von parallelen Anwendungen adressiert. Themen aus dem Bereich der parallelen Dateisysteme und der Hochgeschwindigkeits-Übertragungstechnologien runden das Themenspektrum ab.


Voraussichtliche Themen...

Performance-Analyse und Optimierung von Simulationscodes:

  • Grundlagen der parallelen Code-Optimierung z.B. mittels Alinea MAP / Scalasca / Intel Trace Analyzer und Collector
  • Performance-Analyse von seriellen und parallelen Programmen

Parallele Programmierung auf Shared Memory Systemen mit oder ohne Hardware Beschleunigern (grafischen/mathematischen Co-Prozessoren):

  • PGAS -multi-core hybrid Programmiermodelle
  • Task-based parallelism mit Intel Threading Building Blocks
  • OpenMP 4.0 - neuer Standard zur mehrfädigen Programmierung von CPUs & GPUs
  • Parallelisierung rekursiver Programme mit Hilfe des OpenMP Task-Konzepts
  • Parallel programming with Java Multithreading
  • OpenACC - der neue Standard für heterogene Parallelprogrammierung
  • Vergleich der GPU Beschleunigerkarten zur Hochdurchsatz-Bildverarbeitung

Parallel Programmierung für Systeme mit verteilte Speicher:

  • Internes Scheduling von paralleler Prozessen mit Hilfe von MPI
  • Parallele Datei-Manipulation und Zugriff über MPI-I/O
  • Dynamisches Prozess-Management mit MPI zur Erzeugung von zusätzlichen Tasks
  • Einseitige Kommunikation mit MPI – Grenzen und Evaluation

Parallele Programmierung mittels parallele File Systeme, Netzwerke und Tools:

  • InfiniBandnetzwerken für Parallelrechner
  • Programmierung mit Parallel I/O Systeme - Datenformats (HDF5, netCDF)
  • High-performance parallel File Systeme (GPFS, Lustre, HPSS)

Numerische Bibliotheken und API für Parallel Solving:

  • Programmierung und Ausführung paralleler Anwendungen mit MATLAB
  • Parallel Programmierung mit linear Algebra Pakete (ScaLAPACK, PETSc)