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

Paralleles Programmieren mit MPI

Paralleles_Programmieren_mit_MPI.jpg

Erfahren Sie mehr über das Modul

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. Dieser Kurs bietet darüber hinaus die Möglichkeit zum intensiven Austausch mit den Dozenten sowie den anderen Kursteilnehmern.

 

Inhaltliche Themenbereiche

  • 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

Zu erlangende Kompetenzen

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

    Bis zum 26. September gibt es noch einen Early-Bird-Rabatt von 25%!

    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]