High-Performance Computing (HPC): Skript und Übungen
In diesem Repository befinden sich die Übungen für die Vorlesung High-Performance Computing (HPC) an der HFT Stuttgart von Sebastian Speiser. Die Vorlesung wird von einem Skript begleitet, das die Übungen verlinkt: Skript.
$$ Ablauf der Vorlesung (WS2021/2022) - WORK IN PROGRESS
Woche | Einheit | Inhalt | Hausaufgabe | |
---|---|---|---|---|
1 | 1 | Einführung
|
|
|
2 | 2 | High-Performance: Ansätze und Grenzen - I Skript "High-Performance: Ansatz 1: Schnellere Prozessoren" mit Übungen: |
Python lernen/auffrischen, z.B. Skript "Data Analytics" Kapitel "Python Grundlagen" und "NumPy". YouTube: Jupyter Notebook | |
3 | 3 | High-Performance: Ansätze und Grenzen - II Skript "High-Performance: Ansatz 2, Ansatz 3, Ganz anders" mit Übungen: |
- | |
3/4 | 4 | Shared Memory mit OpenMP Skript "Shared Memory mit OpenMP" mit Übungen: |
- | |
5 | 5 | Daten Skript "Daten" mit Übungen: |
- | |
5/6 | 6 | Parallele Algorithmen Skript "Parallele Algorithmen" mit Übungen: |
- | |
7 | 7 | Distributed Memory mit MPI Skript "Parallele Algorithmen" mit Übung: |
- | |
8/9 | 8 | GPU Skript "Massiv parallele Prozessoren: GPUs" mit Übungen und Beispielen: |
- | |
10 | 9 | Dataparallelismus mit NumPy und Tensorflow |
- | |
11 | Puffer / Projektwerkstatt | TBD | - | |
12 | Projektpräsentationen | TBD | - | |
13 | - | Projektpräsentationen | - |
Projektarbeit
Ziel
Zeigen, dass Sie ...
- ... die Konzepte aus der Vorlesung High Performance Computing auf praktische Fragestellungen anwenden können
- ... die Beispiele aus den Übungen für weitergehende Problemstellungen anpassen, kombinieren und/oder erweitern können
Dazu sollen Sie ein Programm erstellen. Der erwartete Arbeitsumfang beträgt mindestens 25 Stunden pro Person.
Umfang
Ihr Programm soll mehreren Technologien (z.B. OpenMP, MPI und GPU) umgesetzt werden. Dazu ein Vergleich der Performance und Herausforderungen beim Programmieren. Wie viele Technologien sinnvoll sind, hängt von der Schwierigkeit ab, z.B.
- Wie unterschiedlich sind die Technologien - eine konzeptuelle Leistung soll ersichtsichlich sein. Gegenbeispiel: Syntax-Konvertierung von OpenMP in Java-Fork-Join-Framework
Es kann auch ausreichend sein eine einzelne Anwendung in einer einzelnen Technologie umzusetzen, wenn hier eine entsprechende Leistung nachgewiesen werden kann, z.B. durch:
- Schwierige Übersetzung des Anwendungsproblems in entsprechendes paralleles Programmiermodell. Eine optimale Umsetztung der Graustufenkonvertierung mit SIMD-Intrinsics ist ggfs. schon ausreichend
- Darstellung und Bewertung sinnvoller Zwischenschritte, z.B. Baseline zu Cache Optimierung zu SIMD zu Multithreaded, ...
- Feintuning für eine Plattform, um tatsächliche hohe Performance zu erreichen statt nur ein Konzept umzusetzen. Z.B. dokumentierte Experimente, um die optimalen Blockgrößen bei Matrix-Multiplikation festzulegen, um die Cache-Level eines Prozessors auszunutzen
- Nutzung von und Vergleich mit nicht in der Vorlesung behandelten Technologie/Konzept.
- Sehr hohe Skalierung der Anwendung, die zusätzliche Herausforderungen mit sich bringt. Z.B. Verteilung auf mehrere Rechner notwendig
Beispielanwendungen
- Game of Life
- Sharks and Fish (WATOR)
- Bildverarbeitung
- Matrix-Multiplikation
- Neuronale Netze
- Heat Equation oder Fire Simulation
- N-Body Simulation
- Billiardbälle mit Kollisionen
- Traffic Simulation
- Circuit Simulation
- Fraktale/Mandelbrot
- (Radix-)Sort verteilt
Abgabe bis 11.01.2023 EOD (23:59 Uhr)
- Projektbericht (Seitenangaben als Richtwerte):
- Motivation (0,5 Seiten)
- Definition Problemstellung (0,5 - 1 Seite)
- Lösungsansatz (1 Seite)
- Implementierung inklusive Schwierigkeiten (1-2 Seiten)
- Bewertung des Ansatzes und der performance-limitierenden Faktoren (1-2 Seiten)
- Erkentnisse, Fazit, nächste Schritte (0,5 - 1 Seite)
- Source Code (Link zu Repository)
- Optional: Tätigkeitsnachweis (Datum, Uhrzeit, Dauer, Tätigkeit) - hilft bei der Bewertung des Aufwands für die Problemstellung
Demonstration (30 Minuten)
- Vorstellung (20 Minuten)
- Fragen zu Vortrag und Verständnisfragen zu anderen Inhalten der Vorlesung (10 Minuten)