Vorlesung „Hochleistungs-Ein-/Ausgabe“

Beschreibung

Hochleistungsrechnen ist eine wichtige Technik der Informatik, mit deren Hilfe in den Natur- und Ingenieurwissenschaften neue Erkenntnisse gewonnen werden. Insbesondere die durch das Hochleistungsrechnen ermöglichte computergestützte Simulation wird neben der Theorie und dem Experiment zum dritten Standbein vieler Wissenschaften. Neue Einsichten z. B. im Bereich der Klimaforschung, der Bioinformatik, der Teilchenphysik und des Automobilbaus werden durch Simulationen computerbasierter Modelle gewonnen und sind ohne Hochleistungsrechnen schon seit vielen Jahren nicht mehr möglich.

Ein zunehmend wichtiger Aspekt ist dabei die Ein-/Ausgabe von Daten, die einen signifikanten Einfluss auf die Gesamtleistung der Anwendungen haben kann. Die unterschiedlichen Entwicklungsgeschwindigkeiten der Prozessoren auf der einen Seite und der Speicherhardware auf der anderen Seite führen zu einem Ungleichgewicht der Leistungsfähigkeit dieser Komponenten. Gepaart mit den immer größer werdenden Datenmengen (Big Data) ist es notwendig sich intensiv mit der Hochleistungs-Ein-/Ausgabe zu beschäftigen um künftigen Anforderungen gerecht werden zu können.

In der Vorlesung werden die Grundlagen der Ein-/Ausgabe im Hochleistungsrechnen gelehrt; die Übungen dienen der praktischen Anwendung und Umsetzung der erworbenen Kenntnisse.

Im Rahmen der Vorlesung wird der komplette Ein-/Ausgabe-Stack betrachtet: Speichergeräte und -netze (Festplatten, Solid-State-Laufwerke, Storage Area Networks etc.), lokale und verteile Dateisysteme (im Kernel und auf Anwendungsebene, neuartige Konzepte wie Snapshots und Deduplizierung) und die darauf aufsetzenden E/A-Schnittstellen (POSIX, MPI-IO, NetCDF, ADIOS). Zusätzlich werden Gründe und Lösungsansätze für Leistungsprobleme diskutiert und alternative Ansätze für die Ein-/Ausgabe (wie z.B. Cloud-Schnittstellen) vorgestellt. Beispiele und Probleme werden im Kontext realer wissenschaftlicher Anwendungen aus dem Bereich der Erdsystemforschung motiviert.

Zielgruppe

Die Vorlesung eignet sich für Studierende der Informatik und Bioinformatik im Masterstudiengang.

Empfohlene Vorkenntnisse:

  • Praktische Kenntnis einer Programmiersprache und die Fähigkeit, einfache Programme zu erstellen
  • Kenntnis der Grundmechanismen von Betriebssystemen
  • Grundkenntnisse des Hochleistungsrechnens

Lernziel

Die Teilnehmer werden in die Lage versetzt, die Ein-/Ausgabe paralleler Programme mit verschiedenen Programmierkonzepten umzusetzen und im Ablauf zu optimieren. Außerdem werden die internen Abläufe von Speicher- und Dateisystemen vermittelt und in den Übungen praktisch umgesetzt.

Daten der Veranstaltung

Zeit Freitag 12–14 Uhr
Übung Freitag 14–16 Uhr
Ort DKRZ, Raum 034
Mailingliste HEA-17

Dozenten

Zeitplan und Materialien

Themenplan

  • 07.04. Speichergeräte und -verbünde Folien
  • 21.04. Dateisysteme Folien
  • 28.04. Moderne Dateisysteme
  • 05.05. Parallele verteilte Dateisysteme
  • 12.05. OrangeFS
  • 19.05. MPI-IO (Vortragende: Anna Fuchs)
  • 26.05. Bibliotheken
  • 02.06. Optimierungen
  • 16.06. Leistungsanalyse
  • 23.06. Grid, Cloud und Peer to Peer
  • 30.06. Datenreduktion
  • 07.07. Zukünftige Entwicklungen
  • 14.07. Aktuelle Forschungsprojekte und Nachbesprechung

Übungen

    • Abgabe: 19.04., 08:00
  • 21.04. E/A-Werkzeuge (Übung in Raum 023) Übungsblatt 2 Materialien
    • Abgabe: 26.04, 08:00
  • 28.04. FUSE-Dateisystem
  • 05.05. Memory-FUSE-Dateisystem
  • 12.05. Design eines persistenten Dateisystems
  • 19.05. Implementierung eines persistenten Dateisystems
  • 23.06. Nicht-zusammenhängende und kollektive E/A
  • 30.06. OrangeFS und Darshan
  • 07.07. Kompression

Literatur

  • High Performance Parallel I/O (Prabhat, Quincey Koziol); October 23, 2014 by Chapman and Hall/CRC; ISBN: 9781466582347
  • Understanding the Linux Kernel (Daniel P. Bovet, Marco Cesati)
  • Professional Linux Kernel Architecture (Wolfgang Maurer)