g 740665 Parallele Systeme - Cheatsheet.pdf

g 740665 Parallele Systeme - Cheatsheet
g 740665 Parallele Systeme - Cheatsheet Definition und Bedeutung paralleler Systeme Definition: Parallele Systeme nutzen mehrere Recheneinheiten gleichzeitig zur Lösung von Problemen. Optimieren die Leistungsfähigkeit und Effizienz bei der Verarbeitung großer Datenmengen und komplexer Berechnungen. Details: Skalierbar: Erhöhung der Anzahl an Prozessoren verbessert Leistungsfähigkeit Typen: Multi-P...

© StudySmarter 2024, all rights reserved.

g 740665 Parallele Systeme - Cheatsheet

Definition und Bedeutung paralleler Systeme

Definition:

Parallele Systeme nutzen mehrere Recheneinheiten gleichzeitig zur Lösung von Problemen. Optimieren die Leistungsfähigkeit und Effizienz bei der Verarbeitung großer Datenmengen und komplexer Berechnungen.

Details:

  • Skalierbar: Erhöhung der Anzahl an Prozessoren verbessert Leistungsfähigkeit
  • Typen: Multi-Prozessor, Multi-Core, verteilte Systeme
  • Kommunikationsmodelle: Shared Memory, Message Passing
  • Anwendungen: Wissenschaftliche Berechnungen, Big Data, KI
  • Bedeutung: Zeitersparnis, Kostenreduktion, Erhöhung der Rechenleistung
  • Herausforderungen: Synchronisation, Lastverteilung, Kommunikationslatenz

Shared Memory vs. Distributed Memory Architekturen

Definition:

Vergleich von Speicherarchitekturen in parallelen Systemen; bezieht sich auf die Art und Weise, wie Speicher von Prozessoren genutzt wird.

Details:

  • Shared Memory
    • Alle Prozessoren greifen auf denselben Speicher zu
    • Erfordert Mechanismen zur Synchronisation (z.B. Mutex, Semaphore)
    • Schneller Kommunikation, aber Skalierbarkeit limitiert
    • Gefahr von Race Conditions
  • Distributed Memory
    • Jeder Prozessor hat eigenen lokalen Speicher
    • Kommunikation über Nachrichtenaustausch (Message Passing; z.B. MPI)
    • Keine Notwendigkeit für globale Synchronisation
    • Bessere Skalierbarkeit, aber höhere Kommunikationskosten
    • Erfordert explizites Datenmanagement

Thread-Programmierung mit OpenMP

Definition:

Thread-Programmierung mit OpenMP ermöglicht es, Parallelisierung in C, C++ und Fortran durch Compiler-Direktiven zu realisieren.

Details:

  • Nutze #pragma omp parallel, um Threads zu erzeugen.
  • Schleifen lassen sich mit #pragma omp for parallelisieren.
  • Synchronisation mittels #pragma omp critical oder #pragma omp barrier.
  • Einfache Reduktionen mit #pragma omp reduction.
  • Speichermodel: shared vs private Variablen.
  • Setze num_threads(n), um die Anzahl der Threads zu bestimmen.

CUDA-Programmierung für GPUs

Definition:

CUDA ermöglicht dir die Programmierung von NVIDIA-GPUs für parallele Berechnungen.

Details:

  • Verwendet C/C++ mit CUDA-Erweiterungen.
  • Kernel-Funktionen werden auf der GPU ausgeführt.
  • Threads sind in Blöcken und Grids organisiert.
  • Speicherhierarchie: Register, Shared Memory, Global Memory.
  • Synchronisation: \_\_syncthreads() zur Thread-Synchronisation innerhalb eines Blocks.
  • Performance-Optimierung: Koaleszierter Speicherzugriff, Verwendung von Shared Memory.

Performance-Metriken und Messmethoden

Definition:

Quantitative Bewertung der Leistung paralleler Systeme.

Details:

  • Speedup (S): \[ S = \frac{T_1}{T_N} \]
  • Effizienz (E): \[ E = \frac{S}{N} = \frac{T_1}{N \times T_N} \]
  • Skalierbarkeit: Wie gut eine Erhöhung der Anzahl von Prozessoren die Leistung verbessert.
  • Auslastung: Prozentsatz der Zeit, in der die Prozessoren aktiv arbeiten.
  • Latenz: Verzögerung vor Ausführung einer Operation.
  • Durchsatz: Anzahl der verarbeiteten Operationen pro Zeiteinheit.
  • Lastverteilung: Gleichmäßigkeit der Arbeitsverteilung über alle Prozessoren.

Speicherhierarchie und Cache-Optimierung

Definition:

Optimierung läuft durch Minimierung der Zugriffszeiten auf verschiedene Speicherebenen.

Details:

  • Speicherhierarchie: Register, Cache (L1, L2, L3), Hauptspeicher, Sekundärspeicher
  • Cache-Hierarchie: Schnelligkeit und Größe variieren (L1 am schnellsten, kleinste Kapazität)
  • Cache-Kohärenz: Konsistenz mehrerer Caches sicherstellen
  • Cache-Lokalisierung: Data Locality verbessern - räumliche (Spatial Locality) und zeitliche (Temporal Locality)
  • Cache-Strategien: Direkt abbildender Cache, assoziativer Cache, set-assoziativer Cache
  • Cache-Optimierung: Loop Blocking, Prefetching, Data Layout Transformationen

Kommunikationsprotokolle und -techniken in verteilten Systemen

Definition:

Kommunikationsprotokolle und -techniken definieren, wie Daten zwischen Knoten in einem verteilten System ausgetauscht werden.

Details:

  • Protokolle: TCP/IP, UDP, HTTP, gRPC
  • Datenformate: JSON, XML, Protobuf
  • Synchrone Kommunikation: RPC (Remote Procedure Call)
  • Asynchrone Kommunikation: Message Queues (z.B. RabbitMQ, Kafka)
  • Fehlerbehandlung: Timeouts, Retries, Acknowledgements

Fehlertoleranz in verteilten Systemen

Definition:

Fehlertoleranz in verteilten Systemen bezieht sich auf die Fähigkeit eines Systems, seinen Betrieb korrekt fortzusetzen, auch wenn einzelne Komponenten ausfallen.

Details:

  • Redundanz: Mehrfache Ressourcen für dieselbe Aufgabe
  • Replikation: Kopien von Daten oder Prozessen auf unterschiedlichen Knoten
  • Erkennung und Wiederherstellung: Mechanismen zum Identifizieren und Beheben von Fehlern
  • Bereitstellung von Konsistenz: Sicherstellung, dass alle Knoten denselben Zustand teilen, z.B. durch Konsensalgorithmen wie Paxos oder Raft
  • Ausfallsicherheit: Fähigkeit des Systems, nach einem Fehlerzustand in einen sicheren Zustand überzugehen.
  • \textit{Mean Time Between Failures (MTBF)}: Durchschnittliche Zeit zwischen zwei aufeinanderfolgenden Fehlern
  • \textit{Mean Time To Recovery (MTTR)}: Durchschnittliche Zeit zur Wiederherstellung nach einem Fehler
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