MPI-OpenMP2025

Termine
• 15. – 18. September 2025

Ort
• Universität Bremen, Raum MZH5600

Inhalt
• Dieser Kurs bietet eine Einführung in die parallele Programmierung. Der Schwerpunkt liegt auf den parallelen Programmiermodellen MPI und OpenMP. Übungen sind ein wesentlicher Bestandteil des Workshops.

Dozenten
• Der Kurs wird von Dr. Hinnerk Stüben (Regionales Rechenzentrum der Universität Hamburg) und Dr. Lars Nerger (BremHLR und Alfred-Wegener-Institut Bremerhaven) geleitet.

Teilnahme
• Der Kurs steht allen interessierten Studierenden oder Mitarbeitenden des Alfred-Wegener-Instituts für Polar- und Meeresforschung, der Universität Bremen, der Hochschulen Bremen und Bremerhaven sowie angeschlossenen Institutionen offen. Außerdem sind Anmeldungen von NHR-Nutzenden möglich, die nicht in Bremen ansässig sind.

Voraussetzungen
• Gute Grundkenntnisse in Unix, C und/oder Fortran sind unerlässlich!

Kurssprache
• Der Kurs wird in Englisch gehalten.

Anmeldung
• Zur Anmeldung senden Sie bitte eine E-Mail an: bremhlr@uni-bremen.de
• Anmeldeschluss: 10. September 2025
Keine Teilnahmegebühr!

Praktische Übungen
• Für die praktischen Übungen werden die Teilnehmenden gebeten, eigene Notebooks mitzubringen. Diese sollten einen Compiler (z. B. gcc) und eine MPI-Bibliothek (z. B. OpenMPI) installiert haben, damit parallele Programme kompiliert und ausgeführt werden können. Unter Linux und MacOS stehen entsprechende Pakete zur Verfügung. Für Windows empfehlen wir die Installation über Cygwin (www.cygwin.com).

Informationen für Teilnehmende von außerhalb
• Hotels in der Nähe der Universität: „7 Things“, „Atlantic Hotel Universum Bremen“ und „Hotel Munte“.
• Die Universität ist vom Bremer Hauptbahnhof mit der Straßenbahnlinie 6 Richtung „Universität“ leicht erreichbar. Bitte steigen Sie an der Haltestelle „Bremen Universität/Zentralbereich“ aus.
• Der Workshop findet im Gebäude „Mehrzweckhochhaus (MZH)“ statt, das zentral auf dem Campus gelegen ist.


Vorläufiger Zeitplan

Montag, 10:00 – 16:30
• Überblick
• Thinking Parallel (I) – Rechnerarchitekturen und Programmiermodelle
• Laplace-Gleichung (I) – Ein realistisches Anwendungsbeispiel
• Rechner-Setup prüfen
• Programmierung – Ein paralleles „Hello World“-Programm
• MPI (I) – Grundfunktionen, Kommunikatoren, Nachrichten, Datentypen
• Programmierung – send und recv
• MPI (II)
– Punkt-zu-Punkt-Kommunikation (Send- und Empfangsmodi)
– Kollektive Kommunikation
• Programmierung – Ring I

Dienstag, 9:15 – 16:30
• Thinking Parallel (II)
– Charakterisierung von Parallelität
– Datenabhängigkeitsanalyse
• OpenMP (I) mit Übungen
– Konzepte
– Schleifen parallelisieren
• Laplace-Gleichung (II) – Implementierung mit OpenMP
• Programmierprojekt (II) – OpenMP-Teil
• OpenMP (II) mit Übungen
– Synchronisation
– Schleifenverteilung
– False Sharing

Mittwoch, 9:15 – 16:30
• MPI (III)
– Abgeleitete Datentypen
– Reduktionsoperationen
• Programmierung – Ring II
• Laplace-Gleichung (III) – Laplace-Beispiel mit MPI
• Thinking Parallel (III) – Performanceaspekte
• MPI (IV) – Virtuelle Topologien und Kommunikatorsplitting
• Programmierung – Fortgeschrittene Ring-Kommunikation
• MPI (V) – Einseitige Kommunikation
• MPI (VI) – Parallele Ein-/Ausgabe mit MPI-IO
• Programmierung – Parallele Ausgabe mit MPI-IO

Donnerstag, 9:15 – 16:30
• Fehler bei der Parallelprogrammierung
• Hybride Parallelisierung – Gemeinsame Nutzung von MPI und OpenMP
• Programmierung – Hybrides „Hello World“-Programm