Kommunikation und Parallele Prozesse - Cheatsheet.pdf

Kommunikation und Parallele Prozesse - Cheatsheet
Kommunikation und Parallele Prozesse - Cheatsheet Definition und Bedeutung von Parallelität Definition: Gleichzeitige Ausführung mehrerer Berechnungen, um die Effizienz zu steigern. Details: Erhöht die Rechenleistung und reduziert die Ausführungszeit. Wird durch Multithreading und Mehrprozessorsysteme erreicht. Synchronisationsmechanismen notwendig, um Race Conditions zu vermeiden. Wichtige Modell...

© StudySmarter 2024, all rights reserved.

Kommunikation und Parallele Prozesse - Cheatsheet

Definition und Bedeutung von Parallelität

Definition:

Gleichzeitige Ausführung mehrerer Berechnungen, um die Effizienz zu steigern.

Details:

  • Erhöht die Rechenleistung und reduziert die Ausführungszeit.
  • Wird durch Multithreading und Mehrprozessorsysteme erreicht.
  • Synchronisationsmechanismen notwendig, um Race Conditions zu vermeiden.
  • Wichtige Modelle: PRAM, CSP (Communicating Sequential Processes).
  • Fordert spezielle Programmiertechniken und Algorithmen.
  • Wichtig in der Kommunikation zwischen parallelen Prozessen: Nachrichtenpassing und gemeinsame Speicher.

Konzepte der Nebenläufigkeit und Synchronisation

Definition:

Konzepte der Nebenläufigkeit und Synchronisation zielen darauf ab, parallele Prozesse sicher und effizient zu koordinieren.

Details:

  • Nebenläufigkeit: Gleichzeitige Ausführung mehrerer Prozesse.
  • Synchronisation: Steuerung der Ausführungsreihenfolge und des Datenzugriffs.
  • Wichtige Mechanismen: Semaphore, Monitore, Mutex, Ereignisvariablen.
  • Race Conditions: Problematik bei unsynchronisiertem Zugriff auf gemeinsame Ressourcen.
  • Deadlocks: Zustand, bei dem Prozesse ewig aufeinander warten.
  • Wichtige Algorithmen: Petersons Algorithmus, Dekkers Algorithmus.

Nachrichtenübermittlung vs. Shared Memory

Definition:

Nachrichtenübermittlung und Shared Memory sind Methoden zur Kommunikation und Synchronisation in parallelen Prozessen.

Details:

  • Nachrichtenübermittlung: Daten werden explizit zwischen Prozessen gesendet und empfangen.
  • Shared Memory: Prozesse greifen auf gemeinsame Speicherbereiche zu.
  • Nachrichtenübermittlung: Gut für verteilte Systeme.
  • Shared Memory: Effizient für eng gekoppeltes Multiprocessing.
  • Nachrichtenübermittlung: \texttt{send()}, \texttt{recv()}
  • Shared Memory: \texttt{shmget()}, \texttt{shmat()}, \texttt{shmdt()}
  • Nachrichtenübermittlung: Synchronisation durch Kanal-/Queue-Operationen.
  • Shared Memory: Synchronisation durch Sperren (Locks).

MPI (Message Passing Interface)

Definition:

MPI (Message Passing Interface) ist ein Standard für die parallele Programmierung, der Prozesskommunikation durch Nachrichtenübermittlung in verteilten und parallelen Systemen ermöglicht.

Details:

  • Kommunikation: Punkt-zu-Punkt und kollektive Kommunikation
  • Richtlinien: MPI_Standard definiert Funktionen, Datentypen und Kommunikationsprotokolle
  • Implementierungen: MPICH, OpenMPI
  • Syntax: z.B. MPI_Send, MPI_Recv
  • Performance: Beeinflusst durch Nachrichtengröße und Netzwerkarchitektur

CUDA und OpenCL als Programmiermodelle

Definition:

CUDA und OpenCL sind Programmiermodelle für parallele Berechnungen, besonders für GPGPU (General Purpose Computing on Graphics Processing Units).

Details:

  • CUDA: Entwickelt von NVIDIA, ermöglicht direkten Zugriff auf die GPU und ihre Speicherarchitektur.
  • OpenCL: Offener Standard von Khronos Group, unterstützt heterogene Plattformen (CPUs, GPUs, FPGAs).
  • Speichermodell: Beide verwenden hierarchische Speichermodell für verschiedene Speicherarten (z.B. global, lokal).
  • API Funktionen: CUDA nutzt spezifische API-Funktionen (z.B. cudaMalloc, cudaMemcpy), OpenCL verwendet plattformunabhängige APIs (z.B. clCreateBuffer, clEnqueueNDRangeKernel).
  • Einbindung: CUDA erfordert CUDA-kompatible NVIDIA GPUs, OpenCL kann auf einer Vielzahl von Hardware laufen.
  • Entwicklerwerkzeuge: CUDA besitzt proprietäre Tools wie nvcc, OpenCL setzt auf verschiedene Treiber und Entwicklungsumgebungen.
    • Werkzeuge zur Leistungsanalyse (z.B. Perf, HPCToolkit)

      Definition:

      Werkzeuge zur Leistungsanalyse helfen, die Effizienz und Leistung von Software zu messen und zu optimieren.

      Details:

      • Perf: Linux-Profiling-Tool, zeichnet Performance-Daten wie CPU-Auslastung und Speicherzugriffe auf
      • HPCToolkit: Profiler für parallele Programme, analysiert Performance und Bottlenecks in umfangreichen Codes
      • Verwendung: Identifikation von Hotspots, Leistungsmessung, Optimierungspotentiale erkennen
      • Datenformer: verschiedene Metriken wie Laufzeit, Speichernutzung, CPU-Zyklen
      • Ausgabe: Berichte, Grafiken zur Visualisierung von Lastverteilungen und Engpässen

      Redundanzmethoden (z.B. Checkpoints, Replication)

      Definition:

      Redundanzmethoden erhöhen die Zuverlässigkeit und Verfügbarkeit von Systemen, indem sie zusätzliche Ressourcen oder Mechanismen einführen, um Ausfälle zu vermeiden oder deren Auswirkungen zu minimieren.

      Details:

      • Checkpoints: Speichern den Zustand eines Systems zu bestimmten Zeitpunkten, um bei einem Fehler zu einem früheren, konsistenten Zustand zurückzukehren.
      • \textit{Checkpoint-Intervalle:} Regelmäßige Intervalle, nach denen der Zustand gespeichert wird.
      • \textit{Overhead:} Zusätzliche Rechen- und Speicherressourcen sind erforderlich, um Zustandsinformationen zu speichern.
      • Replikation: Erstellen von Kopien von Daten oder Prozessen, um bei einem Ausfall nahtlos auf eine andere Kopie umzuschalten.
      • \textit{Aktiv-Aktiv vs. Aktiv-Passiv:} Bei Aktiv-Aktiv-Replication sind alle Repliken gleichzeitig aktiv, bei Aktiv-Passiv ist nur eine aktiv, die anderen stehen als Backup bereit.
      • Kombination: Oft werden Checkpoints und Replikation kombiniert, um eine höhere Ausfallsicherheit zu erreichen.

      Techniken für zuverlässige Kommunikation

      Definition:

      Methoden und Protokolle zur Gewährleistung einer korrekten und sicheren Datenübertragung zwischen parallelen Prozessen.

      Details:

      • Fehlerkorrektur: Prüfsummen, Hamming-Code
      • Wiederholungsprotokolle: ARQ (Automatic Repeat reQuest)
      • Korrelationsverfahren: Multiversionsverfahren, Majority Voting
      • Persistenzprotokolle: Logging, Journaling
      • Sicherheitsmaßnahmen: Authentifizierung, Verschlüsselung
      • Kommunikationsmodelle: Client-Server, Peer-to-Peer
      • Telegrammformate und Protokollstandards: TCP/IP, UDP
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