PHPC Parallel and High Performance Computing – Erstklausur 2025
(Dies ist ein Gedankenprotokoll, das den Klausurinhalt versucht detailliert wiederzugeben.)
Aufgabe 1: Computational Intensity
-
Beschreibung:
Definieren Sie den Begriff der Computational Intensity.
Ein mögliches mathematisches Beispiel wäre: -
Shared Memory Prints:
- Geben Sie Beispiele, in denen verschiedene Threads ihre Ausgaben (Prints) erzeugen.
- Erklären Sie, in welcher Reihenfolge die einzelnen Threads (z. B. Thread 1, Thread 2, …) ihre Ausgaben produzieren.
- Diskutieren Sie, wie die Reihenfolge der Prints durch Synchronisation oder Scheduling beeinflusst wird.
Aufgabe 2: Cache Misses
-
Erklärung:
Beschreiben Sie, was Cache Misses sind, und warum sie auftreten. -
Arten von Cache Misses:
Nennen und erklären Sie die unterschiedlichen Typen, z. B.:- Compulsory Misses (Kaltstarts)
- Capacity Misses
- Conflict Misses
Aufgabe 3: False Sharing
-
Definition:
Erklären Sie den Begriff False Sharing. -
Behebung:
Beschreiben Sie Ansätze, um False Sharing zu beheben, beispielsweise durch Padding oder Neuordnung der Daten. -
Unterschied zu True Sharing:
Diskutieren Sie den Unterschied zu True Sharing, bei dem mehrere Threads absichtlich auf dieselben Daten zugreifen, um Kommunikation zu ermöglichen.
Aufgabe 4: OpenMP
-
Kursinhalt:
Erläutern Sie die Grundlagen von OpenMP, wie sie im Kurs behandelt wurden. -
Print Statements in verschiedenen Bereichen:
- Erklären Sie, wie viele Print-Ausgaben in Parallelbereichen und in kritischen Abschnitten (Critical Sections) ausgegeben werden.
- Untersuchen Sie, wie der Einsatz von Critical Sections die Ausgabe-Reihenfolge beeinflusst.
-
Shared Attributes:
Beschreiben Sie, ob und wie Variablen als first private, mapped, private, shared usw. deklariert wurden.
Erklären Sie deren Bedeutung und Auswirkungen auf die Parallelität.
Aufgabe 5: Numer
-
Befehl und Output:
Erklären Sie den Befehl:und interpretieren Sie den dazugehörigen Output im Hinblick auf die verwendete Hardware.
Aufgabe 6: Code-Optimierung (Array-Multiplikation)
-
Gegebener Code:
Ein Beispiel könnte eine Matrixmultiplikation sein, bei der für jedes Element gilt: -
Optimierung:
Erklären Sie, wie Sie den Code „speed-uppen“ können, z. B. durch:- Schleifenoptimierung
- Parallelisierung
- Nutzung von SIMD-Instruktionen oder anderen Hardware-Optimierungen
Aufgabe 7: Scaling Study
-
Graphen Zuordnung:
-
Graph 1: Eine nahezu horizontale Linie (parallel zur X-Achse), die Strong Scaling darstellt.
Beispielhaftes Skalierungsmaß: -
Graph 2: Ein Graph, der von oben links nach unten rechts verläuft und Weak Scaling repräsentiert.
-
-
Abweichungen vom Ideal:
Erklären Sie, warum der Graph vom idealen Skalierungsverhalten abweicht und welche Faktoren (z. B. Overhead, Kommunikationskosten) dazu führen.
Aufgabe 8: MPI
- Korrektheit der MPI-Codeabschnitte:
- Analysieren Sie, ob die gegebenen MPI-Codeabschnitte korrekt implementiert sind.
- Diskutieren Sie, ob es zu Deadlocks kommen kann, und begründen Sie Ihre Antwort.
- Kommunikation in MPI:
- Erklären Sie den Unterschied zwischen Blocking und Non-Blocking Kommunikation.
- Beschreiben Sie, welche Funktion MPI Tags haben, um Nachrichten zu identifizieren.
- Erklären Sie die allgemeinen Kommunikationsmechanismen in MPI.
- Erläutern Sie, was MPI Window Objects sind und welche Rolle sie in der Kommunikation (z. B. in RMA, Remote Memory Access) spielen.
Aufgabe 9: HPC Netzwerk-Kommunikation
-
Netzwerktechnologien:
Nennen Sie die zwei wesentlichen Netzwerk-Kommunikationstechnologien, die in HPC eingesetzt werden. -
Latency in HPC Networks:
-
Definieren Sie den Begriff Latency:
-
Erklären Sie, in welchen Anwendungen die Latenz ein kritischer Leistungsindikator ist.
-
-
Praxisbeispiel:
Entwickeln Sie ein Programmkonzept, das die Inter-Node Latency misst.
Aufgabe 10: Historische Verbesserung der Latenz
- Diskussion:
Diskutieren Sie die historischen Verbesserungen der Latenz in Bezug auf:- Computational to Bandwidth
- Floating
Erklären Sie, wie sich diese Verbesserungen auf moderne HPC-Systeme ausgewirkt haben.
Aufgabe 11: Surface-to-Volume Ratio in HPC Systems
-
Definition:
Erklären Sie das Surface-to-Volume Ratio, welches z. B. wie folgt definiert werden kann: -
Bedeutung:
Diskutieren Sie, warum dieses Verhältnis ein wichtiger Leistungsindikator für die Performance von HPC-Systemen ist, insbesondere in Bezug auf Kommunikations- und Speicherzugriffsmuster.
Aufgabe 12: Graph Petitioning (Graph Partitioning)
-
Definition:
Erklären Sie, was unter Graph Petitioning (im Kontext von Graph Partitioning) zu verstehen ist. -
Bedeutung:
Diskutieren Sie, welche Rolle dieses Konzept bei der Optimierung von HPC-Anwendungen spielt, z. B. beim Ausbalancieren der Last in parallelen Berechnungen.
Aufgabe 13: Vektoraddition in UPC
-
Gegebene Situation:
Eine Vektoraddition wird durchgeführt, bei der gilt:Das heißt, für jedes Element:
-
UPC “for all” Schleife:
Es gibt zwei Varianten der Schleife:
Eine Version verwendet den Ausdrucki
als viertes Argument, die anderei + 1
.
Ein typischer Loop könnte so aussehen:
for (i = 0; i < N; i++; <Vierte Ausdruck>)
{
C[i] = A[i] + B[i];
}
- Aufgabenstellung:
- Erklären Sie die Rolle des vierten Ausdrucks in der UPC “for all” Schleife.
- Diskutieren Sie, welche Performance-Unterschiede sich aus der Verwendung von
i
gegenüberi + 1
als viertes Argument ergeben. - Erörtern Sie die Implikationen, die dieser vierte Parameter für die Iterationsaufteilung und Datenverteilung hat.
- Diskutieren Sie, welche Performance-Unterschiede sich aus der Verwendung von
- Erklären Sie die Rolle des vierten Ausdrucks in der UPC “for all” Schleife.