
nächster Kurslauf
30. Oktober 2023
KURSINFORMATIONEN
MPI ist ein Kommunikationsprotokoll für paralleles Programmieren, das auf Nachrichtenaustausch zwischen einzelnen Prozessen basiert. Diese Prozesse können auf Systemen mit verteiltem Speicher, die mehrfache Knoten besitzen, ausgeführt werden. Dies macht MPI skalierbar auf Systemen, die größer als nur einzelne Computer sind. MPI bietet eine Reihe von Tools, mit denen der Strom von Informationen zwischen einzelnen Prozessen aufrechterhalten werden kann. Dies ermöglicht die Ausführung eines parallelen Programms, das auf mehrere kleinere Teile verteilt werden kann. Im Zuge der notwendigen Kommunikation entsteht dabei immer Overhead, der normalerweise die Skalierbarkeit eines parallelen Programms einschränkt. Ein richtig optimiertes Programm eröffnet allerdings die Möglichkeit, MPI auf einem verteilten Speichersystem (z.B. Cluster oder Supercomputer) mit zufriedenstellender Effizienz zu nutzen, dabei können tausende oder zehntausende Knoten eingesetzt werden.
- Rechenknoten
- MPI Übersicht
- Prozessmodell und Programmiersprachbindungen
- Nachrichten und Punkt-zu-Punkt-Kommunikation
- Nicht blockierende Kommunikation
- Das neue Fortran-Modul mpi_f08
- Kollektive Kommunikation
- Fehlerbehandlung
- Gruppen & Kommunikatoren, Umgebung-Management
- Virtuelle Topologien
- Einseitige Kommunikation
- Geteilter Speicher Einseitige Kommunikation
- Abgeleitete Datentypen
- Parallele Datei I/O
- MPI und Threads
- Probe, Persistent Requests, Cancel
- Erstellung und Verwaltung von Prozessen
- Weitere Features von MPI
- Best Practice
- Partitionierung und Lastbalance
- Skalierbarkeit
- Andere Parallele Programmiermodelle
- 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 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 verstehen das Konzept von verteiltem Speicher und sind in der Lage, parallele Programme für verschiedene Zielarchitekturen zu erstellen.
- Sie kennen die wesentlichen Routinen von Message Passing Interface. Sie sind in der Lage, einen Übergang von seriellem Code zu MPI zu organisieren.
- Sie können identifizieren, welche Abschnitte eines einfachen Codes mit MPI parallelisiert werden können und können anschließend selbständig die entsprechenden MPI-Befehle zum Aufbau von Kommunikation und Datenaustausch hinzufügen.
- Sie kennen erfolgreiche Verfahren, um Fehler zu suchen und können diese in einfachen Softwarelösungen einsetzen.
- Sie wissen, wie eine erfolgreiche Fehlersuche und Optimierung der Programme erfolgt.
- Sie haben ein gutes Verständnis der Grenzen von MPI und können einschätzen, in welchen Fällen andere Libraries wichtig werden.
- Sie verstehen das Konzept von verteiltem Speicher und sind in der Lage, parallele Programme für verschiedene Zielarchitekturen zu erstellen.
- Sie kennen die wesentlichen Routinen von Message Passing Interface. Sie sind in der Lage, einen Übergang von seriellem Code zu MPI zu organisieren.
- Sie können identifizieren, welche Abschnitte eines einfachen Codes mit MPI parallelisiert werden können und können anschließend selbständig die entsprechenden MPI-Befehle zum Aufbau von Kommunikation und Datenaustausch hinzufügen.
- Sie kennen erfolgreiche Verfahren, um Fehler zu suchen und können diese in einfachen Softwarelösungen einsetzen.
- Sie wissen, wie eine erfolgreiche Fehlersuche und Optimierung der Programme erfolgt.
- Sie haben ein gutes Verständnis der Grenzen von MPI und können einschätzen, in welchen Fällen andere Libraries wichtig werden.
- Sie verstehen den grundsätzlichen Aufbau eines parallelen Filesystems.
- Sie lernen verschiedene I/O-Strategien kennen, verstehen die Vor- und Nachteile der I/O-Strategien und Sie sind in der Lage, eine für Ihre Problemstellung geeignete I/O-Strategie auszuwählen.
- Sie sind in der Lage, die Performance der I/O Ihrer Applikationen zu bewerten und Sie können die I/O-Performance Ihrer Applikation mithilfe verschiedener Einstellungen/Parameter des parallelen Filesystems optimieren.

Dr. Ralf 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
AKTIONSPREIS
für Unternehmen, Selbstständige, Gewerbetreibende und Privatpersonen
Regulär
2.600 € 1 1.949 € 1,5
Early-Bird
1.949 € 1,2 1.449 € 1,2,5
Jetzt buchen
AKTIONSPREIS
für Öffentliche Einrichtungen (Wissenschaftliche Mitarbeiter)
Regulär
1.949 € 1,3 1.449 € 1,3,5
Early-Bird
1.449 € 1,2,3 1.249 € 1,2,3,5
Jetzt buchen
Preis
für Studierende
Regulär
149 € 1,4
Early-Bird
99 € 1,2,4
Jetzt buchen
Preis
für unbetreutes Lernen am selbstgewähltem Termin
Unternehmen, Selbstständige, Gewerbebetreibende und Privatpersonen
999 € 1
Öffentlicher Dienst (Wissenschaftlicher Mitarbeiter)
875 € 1,3
Studierende
99 € 1,4
Jetzt buchen
1 Preis gilt pro Person. Die Leistungen sind nach § 4 Nr. 22 a UstG von der Umsatzsteuer befreit.
2 Entspricht dem regulären Preis mit einem "Early-Bird-Rabatt", gültig bei einer Anmeldung bis zum 23.10.2022.
3 Preis für MitarbeiterInnen von öffentlichen Einrichtungen.
4 Für Studierende in Vollzeit ohne Master-/ Diplomabschluss, vorlegen einer Immatrikulationsbescheinigung erforderlich.
5 Zeitlich begrenzter Aktionspreis für das Jahr 2022.
- 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 50 Stunden bei wochenweise freier Zeiteinteilung sowie feste Termine für virtuelle Seminare (abends) und Prüfung (tagsüber). Die Dauer erstreckt sich über 5 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.
Sie benötigen Zertifikate in den vorgegebenen Modulen:
