KURSINFORMATIONEN

  • Was ist HPC? Hardware und Herausforderungen
  • Rechenknoten
  • Paralleles Denken
  • Parallelisierbarkeit von Software, Berechnungen und Anforderungen
  • Einführung in OpenMP
  • Programmier- und Ausführungsmodell
    • Parallele Regionen: Team von Threads
    • Syntax
    • Datenumgebung
    • Umgebungsvariablen
    • Runtime Library Routinen
  • Worksharing Direktiven
    • Welcher Thread führt welches Statement oder welche Operation aus?
    • Tasks
    • Synchronisationskonstrukte, z. B. kritische Regionen
    • Nesting und Binding
  • Datenumgebung und kombinierte Konstrukte
    • Private und Shared Variablen, Reduction Clause
    • Kombinierte parallele Worksharing Direktiven
  • Zusammenfassung der OpenMP-API
  • OpenMP Pitfalls & Optimierungsprobleme
  • Sie können Aufbau und Funktionsweise einer Singlecore-CPU beschreiben und wissen, was Multicore- von Singlecore-Prozessoren unterscheidet.
  • Sie wissen, was Pipelining und superskalare Prozessorkerne kennzeichnet.
  • Sie können beschreiben, warum ein Rechenknoten durch sein Shared Memory gekennzeichnet ist.
  • Sie verstehen, dass ein Rechenknoten aus einer Multicore-CPU (Single Socket) oder auch zwei Multicore-CPUs (Dual Socket) bestehen kann und sind in der Lage die Unterschiede zu erläutern.
  • Sie können die Bedeutung von Peak Performance, Sustained Performance, Latenz und Bandbreite erklären.
  • Sie können erläutern, nach welchen Prinzipien ein Cache funktioniert, was Cache-Kohärenz ausmacht und welche Merkmale eine NUMA-Architektur aufweist.
  • Sie können den Unterschied zwischen Shared- und Distributed-Memory erläutern.
  • Sie kennen die Grundprinzipien der parallelen Ausführung und sind in der Lage, Algorithmen parallel zu strukturieren.
  • Sie verstehen, welche Kriterien für die Parallelität notwendig sind und welche Aspekte das parallele Ausführen verhindern.
  • Sie erlernen die Grundlagen, um Flaschenhälse zu identifizieren und prinzipiell zu vermeiden.
  • Sie können zwischen Task- und Datenparallelität unterscheiden und wissen, wann welche Form wie angewandt werden kann.
  • Sie wissen, wie Soft- und Hardwarearchitekturen voneinander abhängen und wie sich das auf die Parallelisierbarkeit von Software und Algorithmen auswirkt.
  • Sie wissen um die Heterogenität moderner Systeme und warum sie bei der Problemzerlegung berücksichtigt werden muss.
  • Sie verstehen den Zusammenhang zwischen intendiertem Ergebnis und notwendiger Rechenpräzision, bzw. Art der Aufgabenzerlegung.
  • Sie verstehen das Problem der Datenlokalität und dessen Einflüsse auf Algorithmusstruktur und Ausführungszeit.
  • Sie kennen Ian Foster’s PCAM-Modell.
  • Sie kennen die Basiskonstrukte von OpenMP für das parallele Programmieren auf Systemen mit gemeinsamen Speicher.
  • Sie kennen Schlüsselkonzepte wie Worksharing und Synchronisation.
  • Sie können aus ihrer Kenntnis Schlussfolgerungen ableiten, die es ihnen ermöglichen, seriellen Programmcode zur Benutzung eines gemeinsamen Speichers zu parallelisieren und auftretende Fehlerquellen zu identifizieren und zu eliminieren.
  • Sie haben ein gutes Verständnis der Grenzen von OpenMP und können einschätzen, in welchen Fällen andere Programmiermodelle wichtig werden.

 
Dr. Rolf Rabenseifner
High-Performance Computing Center Stuttgart (HLRS)
Head of Parallel Computing - Training & Application Services
Universität Stuttgart
Nobelstraße 19, 70569 Stuttgart

 

 
Dr.-Ing. Martin Bernreuther
High-Performance Computing Center Stuttgart (HLRS)
Parallel Computing - Training & Application Services
Universität Stuttgart
Nobelstraße 19, 70569 Stuttgart
 

 
Dipl.-Inf. Lutz Schubert
Senior Researcher, Lecturer and Head of Research at the IOMI
Universität Ulm
Albert-Einstein-Allee 43, 89081 Ulm

 
Bärbel Große-Wöhrmann
High-Performance Computing Center Stuttgart (HLRS)
Communications & Industrial Trainings
Universität Stuttgart
Nobelstraße 19, 70569 Stuttgart

 

  • Software-Entwickler
  • Software-Architekten
  • Informatiker
  • IT-Interessierte
  • Simulationsingenieure

Linux

Die Kursteilnehmer besitzen erweiterte Grundkenntnisse des freien Betriebssystems Linux und Kenntnisse in Linux-Anwendung. Der Hintergrund von Linux sowie die wichtigsten Konzepte und Werkzeuge von Linux wie die

  • Shell und Shell-Befehle (→sicherer Umgang mit der Kommandozeile),

  • Secure Shell,

  • den Umgang mit Dateien und Skripten,

  • die Struktur des Systems,

  • die Benutzer- und Rechteverwaltung und

  • das Erstellen von einfache Batch-Skripten mit einem Editor wie nano, vi oder emacs.

sollten bekannt sein. Eine Anleitung zur Arbeit auf dem Trainingscluster wird zur Verfügung gestellt.

Falls Sie bei sich in dieser Hinsicht noch Defizite feststellen, verweisen wir an dieser Stelle auf https://www.tuxcademy.org/product/lxes/

Programmierkenntnisse

  • Sie verfügen über solide Programmierkenntnisse in einer Programmiersprache (z.B. C, Fortran oder Python).

  • Sie können weitere Programmiersprachen und deren Konstrukte verstehen.

  • Sie sind in der Lage mit Compilern und Linker umzugehen.

  • Sie besitzen Kenntnisse über make-Files und können diese erstellen.

Grundlegendes Hardwareverständnis

Die Teilnehmer verstehen wie die Hardware eines klassischen Computers aufgebaut ist. Das beinhaltet vor allem das grundlegende Verständnis von

  • Prozessoren (CPU),

  • Arbeitsspeichern (RAM-Speicher) und

  • Verbindung zwischen diesen beiden Komponenten,

  • Netzwerktechnik,

  • Festplatten und

  • Rechenbeschleuniger.

  • Rechner mit ssh-Zugang zum Trainingscluster (mit ssh-Key).

    • Ggf. muss Software installiert werden. Dafür notwendige Rechte müssen vorhanden sein.

    • Netzverbindungen nach außen zu fremden Clustern müssen aufgebaut werden können.

  • Eine stabile Internetverbindung für das Bearbeiten der Lerninhalte und Übungen wird empfohlen.

  • Zugang zu Videokonferenz-Tool mit Kamera und Mikrofon (ein Headset wird aus Qualitätsgründen empfohlen).

Der Zeitaufwand pro Modul beträgt insgesamt 30 Stunden bei wochenweise freier Zeiteinteilung sowie feste Termine für virtuelle Seminare (abends) und Prüfung (tagsüber). Die Dauer erstreckt sich über 3 Wochen mit einem ungefähren wöchentlichen Aufwand von 10 Stunden.

Sie lernen in komfortabler und effektiver Onlinelehre und erwerben so HPC-Fähigkeiten auf höchstem Niveau. Ergänzt werden die Online-Phasen durch regelmäßige Online-Meetings im virtuellen Klassenraum. Bei freier Zeiteinteilung wenden die Teilnehmerinnen und Teilnehmer das Gelernte in Übungen auf dem Trainingscluster an. Die Fachexperten des HLRS, welche die Lerneinheiten entwickelt haben, stehen in wöchentlichen virtuellen Seminaren für Fragen zur Verfügung. Ein Forum ermöglicht den fachlichen Austausch der Teilnehmerinnen und Teilnehmer untereinander. Bei Wahl des unbetreuten Kurses entfallen die virtuellen Seminare!

Für die Teilnahme an dem Modul erhalten Sie vom Höchstleistungsrechenzentrum Stuttgart eine Teilnahmebestätigung. Wenn Sie zudem sämtlich Lerninhalte des Moduls bearbeitet, regelmäßig an den virtuellen Seminaren teilgenommen und die Lernaufgaben fachgerecht beantwortet haben, erhalten Sie eine qualifizierte Teilnahmebestätigung.

Sie erhalten ein Zertifikat, wenn Sie die Voraussetzungen für die qualifizierte Teilnahmebestätigung erfüllen und die Abschlussprüfung des Moduls bestehen. Mit der erfolgreichen Prüfung weisen Sie nach, dass Sie Kompetenzen erworben haben, das erlernte Wissen selbständig anzuwenden.

Haben Sie Fragen? Wir sind für Sie da.