Zum Inhalt springen
Unabhängige und kostenfreie Beratung vereinbaren: » Termin

Paralleles Programmieren mit OpenMP

Paralleles_Programmieren_SCA.jpg

Erfahren Sie mehr über das Modul

 

Mit OpenMP lassen sich Programme für Shared-Memory-Architekturen erstellen. Ziel ist es, seriellen Quellcode mit ausgewählten OpenMP-Direktiven zu parallelisieren, um die Ausführung des Codes zu beschleunigen. In diesem Kurs lernen Sie mit OpenMP Teile eines Programms zu parallelisieren. Hierzu setzen Sie verschiedene Direktiven ein. Die so adressierten Teile werden auf mehrere Threads verteilt, die auf mehreren Kernen gerechnet werden. Neben dem initialen Thread ("Master") stehen weitere Threads zur Verfügung, die zusammen ein „Team“ formen. OpenMP erlaubt es Ihnen, sich auf die rechenintensiven Teile eines Programms zu konzentrieren. Die umgebenden Bereiche können weitgehend unverändert bestehen bleiben. OpenMP gilt daher als einfachste Methode der Parallelisierung, der Parallelisierungsaufwand hält sich vergleichsweise in Grenzen. Dieses Modul dient der Ausbildung in Computational Science und darüber hinaus dem Austausch der Teilnehmer untereinander. (Inhaltliches Niveau: 70% für Anfänger,30% für Fortgeschrittene)

Inhaltliche Themenbereiche

 

  • 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

Zu erlangende Kompetenzen

 

  • 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.
  • Melden Sie sich noch heute an. 

    Bis zum 7. Juni gibt es noch einen Early-Bird-Rabatt von 20%!

    Alle weitere Informationen finden Sie hier.

 

Dr.-Ing. Andreas Wierse

Nutzen Sie Ihren Wettbewerbsvorteil durch den Einsatz von Simulation und Höchstleistungsrechnen sowie Big und Smart Data. Ich freue mich auf den Dialog mit Ihnen.

Dr.-Ing. Andreas Wierse

[Geschäftsführer]