====== Vorlesung „Hochleistungsrechnen“ ====== ===== Daten der Veranstaltung ===== // Die Veranstaltung findet in Präsenz statt. // Die gesamte Kommunikation findet über die Mailingliste statt. Schauen Sie im Mailinglistenarchiv nach, falls Sie die Mail mit den Zugangsdaten verpasst haben. || Vorlesung || Dienstag, 12–14 Uhr, Donnerstag, 12–14 Uhr || || Übung || Dienstag 14–16 Uhr, Dienstag 16–18 Uhr|| || Ort || DKRZ Raum 034|| || Tutorium || entfällt|| || Mailingliste || [[https://wr.informatik.uni-hamburg.de/listinfo/hr-2324|HR-2324]] || ==== Übungen ==== * 17.10.23 Ablauf und Einführung Linux-Cluster {{ :teaching:wintersemester_2023_2024:hr-2324_blatt-00.pdf |Aufgabenblatt 00}} {{ :teaching:wintersemester_2023_2024:hr-2324_blatt-01.pdf |Aufgabenblatt 01}} {{ :teaching:wintersemester_2023_2024:hr-2324_uebung-01_material.tar.gz |Material}} * Abgabe: 21.10.23, 23:59 * Organisatorisches: {{ :teaching:wintersemester_2023_2024:hr-2324_orga.pdf |Folien}} * 24.10.23 Debugging {{ :teaching:wintersemester_2023_2024:hr-2324_blatt-02.pdf |Aufgabenblatt 02}} {{ :teaching:wintersemester_2023_2024:hr-2324_uebung-02_material.tar.gz |Material}} * Abgabe: 28.10.23, 23:59 * 31.10.23 **KEIN Präsenztermin** -- Leistungsoptimierung sequentieller Anwendungen {{ :teaching:wintersemester_2023_2024:hr-2324_blat-03.pdf |Aufgabenblatt 03}} {{ :teaching:wintersemester_2023_2024:hr-2324_uebung-03_material.tar.gz |Material}} * Abgabe: 04.11.23, 23:59 * 07.11.23 Besprechung Debugging + Leistungsanalyse, Threads {{ :teaching:wintersemester_2023_2024:hr-2324_blatt-04.pdf |Aufgabenblatt 04}} {{ :teaching:wintersemester_2023_2024:hr-2324-uebung-04_material.tar.gz |Material}} * Abgabe: 21.11.23, 23:59 * 14.11.23 **KEIN Präsenztermin** -- OpenMP {{ :teaching:wintersemester_2023_2024:hr-2324_blatt-05.pdf |Aufgabenblatt 05}} {{ :teaching:wintersemester_2023_2024:hr-2324_uebung-05_material.tar.gz |Material}} * Abgabe: 21.11.23, 23:59 * Zusätzliche Informationen: [[https://www.openmp.org/wp-content/uploads/OpenMPRef-5.0-111802-web.pdf|OpenMP Cheat Sheet]] * 21.11.23 **KEIN Präsenztermin**, frei * 28.11.23 Besprechung Threads, Einführung MPI {{ :teaching:wintersemester_2023_2024:hr-2324_blatt-06.pdf |Aufgabenblatt 06}} {{ :teaching:wintersemester_2023_2024:hr-2324-06-material.tar.gz |Material}} * Abgabe: 02.12.23, 23:59 * Zusätzliche Informationen [[https://www.mpi-forum.org/docs/mpi-4.0/mpi40-report.pdf|MPI Specification 4.0]] * 05.12.23 PDE-Parallelisierungsschema (Jacobi) {{ :teaching:wintersemester_2023_2024:hr-2324_blatt-07.pdf |Aufgabenblatt 07}} {{ :teaching:wintersemester_2023_2024:hr-2324-uebung-07_material.tar.gz |Material}} * Abgabe: 09.12.23, 23:59 * 12.12.23 PDE-Parallelisierung (Jacobi) {{ :teaching:wintersemester_2023_2024:hr-2324-blatt-08.pdf |Aufgabenblatt 08}} {{ :teaching:wintersemester_2023_2024:hr-2324-uebung-08_material.tar.gz |Material}} * Abgabe: 16.12.23, 23:59 * 19.12.23 PDE-Parallelisierungsschema (GS) {{ :teaching:wintersemester_2023_2024:hr-2324_blatt-09.pdf |Aufgabenblatt 09}} * Abgabe: 23.12.23, 23:59 * 09.01.24 PDE-Parallelisierung (GS) {{ :teaching:wintersemester_2023_2024:hr-2324_blatt-10.pdf |Aufgabenblatt 10}} {{ :teaching:wintersemester_2023_2024:hr-2324-uebung-08_material.tar.gz |Material}} * Abgabe: 17.01.24, 23:59 * 16.01.24 Zwischenbesprechung (GS) (freiwillige Teilnahme) * Abgabe: 17.01.24, 23:59 * 23.01.24 PDE-Auswertung und PDE-Spurdatenanalyse {{ :teaching:wintersemester_2023_2024:hr-2324-blatt-11.pdf |Aufgabenblatt 11}} {{ :teaching:wintersemester_2023_2024:hr-2122-uebungsblatt-11-material.tar.gz |Material}} * Abgabe: 27.01.24, 23:59 * 30.01.24 Besprechung PDE-Analyse, Klausur-Fragerunde ===== Zeitplan und Materialien ===== Die in der Vorlesung dargestellten Konzepte und Mechanismen des Hochleistungsrechnens werden jeweils inhaltlich abgeschlossen in einer Vorlesungsstunde präsentiert. Einen genauen und verbindlichen Zeitplan finden Sie beim Themenplan. Die Vorlesung und Übungen finden in Präsenz statt. Die Folien werden fortlaufend aktualisiert (Stand 22.01.24): [[https://cloud.wr.informatik.uni-hamburg.de/s/XXT7kod6maeBTBk|Folien]] [[https://cloud.wr.informatik.uni-hamburg.de/s/JKjY4FyyeNc5Qaj| Folien (mit Notizen)]] ==== Themenplan ==== //Kursiv markierte Themen sind nicht klausurrelevant. Änderungen vorbehalten.// Stand 12.10.23 * 17.10 //Einleitung// * 19.10. Leistungsoptimierung sequentieller Anwendungen * 24.10. Hardware-Architekturen * 26.10. Parallele Programmierung * 31.10. frei * 02.11. Betriebssystemaspekte * 07.11. Programmierung mit POSIX-Threads * 09.11. Programmierung mit OpenMP -- Anna Fuchs * 14.11. //Maschinelles Lernen// -- Christopher Kadow, DKRZ * 16.11. //Wissenschaftliche Visualisierung// -- Michael Böttinger, DKRZ * 21.11. Hochleistungsrechnen in der Klimaforschung * 23.11. Programmiermodell Nachrichtenaustausch -- Jannek Squar * 28.11. Werkzeugarchitekturen * 30.11. Fehlersuche * 05.12. Vernetzungskonzepte * 07.12. Leistungsanalyse -- Anna Fuchs * 12.12. //Mathematische Bibliotheken// -- Philipp Neumann, HSU * 14.12. Leistungsoptimierung und Reproduzierbarkeit * 19.12. Kosten-Nutzen-Analyse * 21.12. //Historische Betrachtungen// * 09.01. //Rechnerbeschaffung// * 11.01. //Rechnerraumführung// * 16.01. Hochleistungs-Eingabe/Ausgabe * 18.01. Parallele Eingabe/Ausgabe * 23.01. Die TOP500-Liste * 25.01. Hybride Programmierung -- Panos Adamidis, DKRZ * 30.01. //Zukünftige Entwicklungen// * 01.02. //Nachbesprechung// Vorläufige Termine für Klausuren: 16.02.24 19.03.24 ===== Dozenten ===== * [[People:Thomas Ludwig]] * [[People:Jannek Squar]] (Ansprechpartner Übungen) * [[People:Anna Fuchs]] (Ansprechpartner Übungen) ===== 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 mit computerbasierten Modellen gewonnen und sind ohne Hochleistungsrechnen schon seit vielen Jahren nicht mehr möglich. Gleichzeitig verändern sich die Rechnerarchitekturen in Arbeitsplatzrechnern: Durch den Einsatz von Mehrkern-Prozessoren finden wir auch hier Strukturen von Hochleistungsrechnern und die Programmierer müssen hierauf eingehen, wenn sie den Prozessor effizient nutzen wollen. Die Vorlesung bietet einen Einstieg in die Konzepte des Hochleistungsrechnens und vermittelt grundlegende Kenntnisse, um mit diesen Systemen zu arbeiten. Die Vorlesung ist inhatlich in mehrere Themenblöcke gegliedert, die aufeinander aufbauen, bei entsprechenden Vorkenntnissen aber auch einzeln gehört werden können. Im ersten Block werden Fragen der Hardware- und Software-Architektur der Systeme erläutert. Hierzu gehören auch die Vernetzung der Rechnerknoten und die E/A-Systeme. Anhand der TOP500-Liste wird die Leistungsentwicklung der vergangenen Jahre dargestellt. Der zweite Block befaßt sich mit der Programmierung der Systeme. Nach einer allgemeinen Einführung werden die Programmierparadigmen des Nachrichtenaustausches und der Nutzung gemeinsamer Speicherbereiche eingeführt. Auch moderen Ansätze, die von Experten genutzt werden, sollen in der Vorlesung präsentiert werden. Im dritten Block befassen wir uns mit der Frage, wie wir das implementierte Programm auf dem Hochleistungsrechner effizient zum Laufen bekommen. Hierzu gehört zunächst die Frage, wie wir Fehler im Programm entfernen. Danach befassen wir uns mit der Leistungsanalyse und der Leistungsoptimierung dieser Programme. Im vierten Abschnitt werden als Ausblick verschiedene Einzelaspekte des modernen Hochleistungsrechnens diskutiert werden. Die Reihenfolge der Virträge in der Vorlesung verzahnt die Inhalt dieser Themenblöcke, um einen reibungslosen Übungsbetrieb zu gewährleisten. Zu übende Inhlte werden rechtzeitig in der Vorlesung behandelt. ===== Zielgruppe ===== Die Vorlesung eignet sich für Studierende der Informatik in den höheren Semestern des Bachelor, für alle Studierenden mit Nebenfach Informatik sowie Doktoranden in den Natur- und Ingenieurwissenschaften, die Hochleistungsrechnen als Werkzeug verwenden. **Voraussetzungen:** Notwendige Voraussetzung für die Vorlesung: * Praktische Kenntnis einer Programmiersprache und die Fähigkeit, einfache Programme zu erstellen Erwünschte Vorkenntnisse: * Kenntnis der Grundmechanismen von Betriebssystemen * Grundkenntnisse in Rechnerarchitektur ===== Lernziel ===== Die Teilnehmer werden in die Lage versetzt, parallele Programme mit verschiedenen Programmierkonzepten zu erstellen, zur Ausführung zu bringen und im Ablauf zu optimieren. Konzepte paralleler Rechnerarchitekturen werden gelehrt. Die Teilnehmer können die gewonnenen Kenntnisse auch auf modernen Arbeitsplatzrechnern mit Mehrkern-Prozessoren zur Programmierung einsetzen.