Advanced Topics in Parallel Programming

  • Typ: Seminar (S)
  • Semester: SS 2016
  • Zeit: 25.04.2016
    15:45 - 17:15 wöchentlich
    Gebäude 20.21, Raum 314


    02.05.2016
    15:45 - 17:15 wöchentlich
    Gebäude 20.21, Raum 314

    09.05.2016
    15:45 - 17:15 wöchentlich
    Gebäude 20.21, Raum 314

    23.05.2016
    15:45 - 17:15 wöchentlich
    Gebäude 20.21, Raum 314

    30.05.2016
    15:45 - 17:15 wöchentlich
    Gebäude 20.21, Raum 314

    06.06.2016
    15:45 - 17:15 wöchentlich
    Gebäude 20.21, Raum 314

    13.06.2016
    15:45 - 17:15 wöchentlich
    Gebäude 20.21, Raum 314

    20.06.2016
    15:45 - 17:15 wöchentlich
    Gebäude 20.21, Raum 314

    27.06.2016
    15:45 - 17:15 wöchentlich
    Gebäude 20.21, Raum 314

    04.07.2016
    15:45 - 17:15 wöchentlich
    Gebäude 20.21, Raum 314

    11.07.2016
    15:45 - 17:15 wöchentlich
    Gebäude 20.21, Raum 314

    18.07.2016
    15:45 - 17:15 wöchentlich
    Gebäude 20.21, Raum 314


  • Dozent: Prof. Dr. Achim Streit
    Elizaveta Dorofeeva
  • LVNr.: 2400023
Bemerkungen

Unter Informatik Seminar 1, 2 oder 3 verbuchen.

Die vorab Anmeldung durch ILIAS ist nicht verpflichtend und unverbindlich, aber wünschenswert, damit vorzeitig ausreichende Themen und Themenbetreuer organisiert werden können.

Anmeldung zum Seminar und Themenverteilung wird während ersten Termin am 25.04 Mo, 15:45 - 17:15, Gebäude 20.21, Raum 314 stattfinden. Falls mehrere Studenten für gleiche Thema sich interessieren, werden wir per Zufallsgenerator verteilen.

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.

Folgende Themen können ausgewählt werden.

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

  • Parallel Programmierung und Optimierung mit Intel Xeon Phi Co-Prozessoren
  • SIMD Programmierung: Intrinsics oder Framework?
  • Aufgabenbezogene Parallelismus mit Intel Threading Building Blocks (auf Englisch)
  • Parallel Programmierung mit Java Multithreading
  • Vergleich der GPU Beschleunigerkarten zur Hochdurchsatz-Bildverarbeitung
  • Effiziente Matrixmultiplikation auf massiv parallelen Architekturen

Parallele Programmierung für Systeme mit verteiltem Speicher:

  • Parallele Datei-Manipulation und Zugriff über MPI-I/O (auf Englisch)
  • Einseitige Kommunikation mit MPI (auf Englisch)

Hybrid Parallele Programmierung Modellen:

  • Hybrid Modellen auf Systemen mit SMP-knoten (auf Englisch)
  • Programmierung Modellen auf GPU-Clusters (auf Englisch)

Performance-Analyse und Optimierung von Simulationscodes:

  • Performance-Analysen Werkzeuge für Parallel-Anwendungen (auf Englisch)

Parallele Programmierung mittels parallele File Systeme, Netzwerke und Tools:

  • Infinibandnetzwerke für Parallelrechner

Numerische Bibliotheken und API für Parallel Lösung:

  • Parallel Programmierung mit linear Algebra Pakete
Ziel

Studierende erarbeiten, verstehen und analysieren ausgewählte, aktuelle Methoden und Technologien im Themenbereich des Parallelen Rechnen. Studierende lernen ihre Arbeiten gegenüber anderen Studierenden vorzutragen und sich in einer anschließenden Diskussionsrunde mit Fragen zu ihrem Thema auseinander zu setzen.