Supercomputing Praktikum - Cheatsheet.pdf

Supercomputing Praktikum - Cheatsheet
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: \textt...

© StudySmarter 2024, all rights reserved.

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
Sign Up

Melde dich kostenlos an, um Zugriff auf das vollständige Dokument zu erhalten

Mit unserer kostenlosen Lernplattform erhältst du Zugang zu Millionen von Dokumenten, Karteikarten und Unterlagen.

Kostenloses Konto erstellen

Du hast bereits ein Konto? Anmelden