Supercomputing Praktikum - Cheatsheet
Message Passing Interface (MPI)
Definition:
Parallelisierungstool zur Kommunikation zwischen Prozessen bei verteiltem Rechnen
Details:
- Standard: MPI-1, MPI-2, MPI-3
- Beispiele für Funktionsaufrufe:
MPI_Init
, MPI_Comm_rank
, MPI_Send
, MPI_Recv
- Kommunikationsarten: Punkt-zu-Punkt, Kollektiv
- Daten im Bereich: \texttt{0} bis \texttt{size-1}
- MPI Datentypen: \texttt{MPI_INT}, \texttt{MPI_FLOAT}, \texttt{MPI_DOUBLE}
Load-Balancing Methoden
Definition:
Methoden zur gleichmäßigen Verteilung von Arbeitslasten auf mehrere Prozessoren oder Rechner, um Berechnungszeit zu minimieren und Ressourcenauslastung zu maximieren.
Details:
- Statisch: Verteilung erfolgt vor der Ausführung, basierend auf Vorwissen.
- Dynamisch: Verteilung erfolgt während der Ausführung, basierend auf Laufzeitinformationen.
- Partitionierung: Zerlegung des Problems in gleichgroße Teilprobleme.
- Scheduling: Zuweisung von Prozessen zu Prozessoren.
- Lastmigration: Prozessverlagerung von überlasteten zu unterlasteten Prozessoren.
- Formeln: - Load Imbalance: \[ L = \frac{T_{\text{max}} - T_{\text{avg}}}{T_{\text{avg}}} \] - Speedup: \[ S = \frac{T_{\text{serial}}}{T_{\text{parallel}}} \]
Performance-Analyse und -Optimierung
Definition:
Analyse der Performance von Supercomputer-Anwendungen und deren Optimierung zur Effizienzsteigerung.
Details:
- Flaschenhalsidentifikation: CPU, Speicher, Netzwerk
- Verwendung von Profiling-Tools: \texttt{gprof}, \texttt{perf}, \texttt{Vtune}
- Grundlegende Leistungsmetriken: FLOPs, Bandbreite, Latenz
- Code-Optimierungstechniken: Parallelisierung, Vektorisierung, Speicherzugriff
- Wichtige Kennzahlen: Speedup, Skalierbarkeit, Effizienz
Benchmarks und Benchmarking-Tools
Definition:
Methoden zur Leistungsmessung und -bewertung von Supercomputern.
Details:
- Verwende Benchmarks wie LINPACK, SPEC und HPCG zur Leistungsmessung.
- LINPACK: Misst die Leistungsfähigkeit für lineare Gleichungen.
- SPEC: Set von Benchmarks zur Bewertung verschiedener Aspekte der Computerleistung.
- HPCG: Misst die Performance bei Conjugate Gradient Berechnungen.
- Eine gute Benchmark-Abdeckung hilft bei der Auswahl und Optimierung von Supercomputern.
Multiskalenmodellierungen
Definition:
Multiskalenmodellierungen - Modellierung von Systemen auf mehreren Skalen, typischerweise zeitlich oder räumlich.
Details:
- Verwendet zur Simulation von komplexen physikalischen und biologischen Systemen.
- Kombination von Modellen unterschiedlicher Detailgenauigkeit und Skalen.
- Erfordert effiziente Algorithmen und parallele Rechnungen.
- Anwendungen u.a. in Materialwissenschaften, Strömungsmechanik und Biologie.
- Beispiel: Molekulardynamik (MD) auf atomarer Skala, gekoppelt mit Kontinuumsmodellen.
Cache-Optimierung
Definition:
Verbesserung der Nutzung des CPU-Caches zur Steigerung der Rechenleistung durch Minimierung von Cache-Misses
Details:
- Vermeide zufälligen Speicherzugriff
- Nutze räumliche und zeitliche Lokalität
- Strided Access minimieren
- Loop Blocking/Loop Tiling
- Pre-fetching
- Optimierung durch Datenstruktur
- Cache-Awareness und Cache-Oblivious Algorithmen
- Denke an Cache-Hierarchien
CUDA für GPU-Programmierung
Definition:
CUDA ermöglicht die parallele Programmierung auf NVIDIA GPUs zur Beschleunigung rechenintensiver Aufgaben.
Details:
- Eigene API von NVIDIA
- Ermöglicht direkte Nutzung der GPU für Datenverarbeitung
- Kernel-Funktionen werden parallel auf mehreren Threads ausgeführt
- Integration mit C, C++
- Speicherhierarchie: globaler Speicher, shared memory, registers
- CUDA-Toolkit enthält Compiler, Debugger, und Bibliotheken
- Wichtige Funktionen:
cudaMalloc
, cudaMemcpy
, cudaFree
- Erfordert spezifische Hardware: GPU mit CUDA-Unterstützung
Validation und Verifikation von Simulationen
Definition:
Überprüfung der Richtigkeit und Genauigkeit einer Simulation basierend auf vorher festgelegten Kriterien
Details:
- Verifikation: Prüfen, ob das Modell korrekt implementiert wurde
- Verifikation: Vergleich der Simulationsergebnisse mit analytischen Lösungen oder bekannten Ergebnissen
- Validierung: Bestätigung, dass das Modell die reale Welt korrekt abbildet
- Validierung: Vergleich der Simulationsergebnisse mit experimentellen Daten
- Beide Schritte essenziell für die Modellzuverlässigkeit
- Formalismus durch mathematische Modelle und statistische Tests
- Ein typisches Kriterium: konvergente Ergebnisse bei Verfeinerung des Netzes oder der Zeitschritte