Parallele und Verteilte Programmierung - Fork-Join, Vektorisierung, Message Passing Flashcards
Was ist das Fork-Join-Pattern?
Ein paralleles Programmiermodell, bei dem der Programmfluss in parallele Teile aufgespalten (Fork) und später wieder zusammengeführt wird (Join).
Was versteht man unter Task-Parallelismus im Fork-Join-Pattern?
Unabhängige Aufgaben (Tasks) können parallel von Threads ausgeführt werden, oft bestehen aber Abhängigkeiten zwischen den Aufgaben.
Was versteht man unter Daten-Parallelismus im Fork-Join-Pattern?
Schleifen werden parallelisiert, indem die Iterationen auf verschiedene Threads verteilt werden. Wichtig ist das Erkennen von Datenabhängigkeiten.
Was sind Barrieren (Barriers) im Fork-Join-Pattern?
Synchronisationspunkte, an denen Threads warten, bis alle anderen Threads denselben Punkt erreicht haben.
Was bedeutet Load Imbalance im Kontext von paralleler Programmierung?
Eine ungleichmäßige Verteilung der Aufgaben auf die Threads kann zu Lastimbalancen führen, was die Effizienz verringert.
Welche Frameworks unterstützen das Fork-Join-Pattern?
Frameworks wie OpenMP (C/C++/Fortran) oder Thread Pools, die Aufgaben effizient auf Threads verteilen, unterstützen das Fork-Join-Pattern.
Was ist Vektorisierung in der parallelen Programmierung?
Verwendung von Vektor- und Matrixnotation anstelle expliziter Schleifen, um parallele Operationen darzustellen.
Was sind die Vorteile der Vektorisierung?
Einfacherer, übersichtlicherer Code; der Compiler optimiert automatisch die Berechnungen durch parallele Vektoroperationen.
Was ist Autovektorisierung?
Der Compiler erkennt und optimiert Schleifen automatisch zu Vektoroperationen. Direkte Verwendung von SIMD-Einheiten ist oft effektiver.
Was ist Message Passing?
Das Message Passing Paradigma basiert auf den Operationen ‘send’ und ‘receive’, um Nachrichten zwischen Prozessen zu versenden.
Was ist der Unterschied zwischen synchronem und asynchronem Nachrichtenaustausch?
Synchron: Der Sender wartet, bis die Nachricht empfangen wird. Asynchron: Der Sender wartet nicht, was weniger Overhead verursacht.
Was ist ein Remote Procedure Call (RPC)?
Eine Funktion wird auf einem entfernten System ausgeführt, und das Ergebnis wird als Nachricht zurückgeschickt.
Was ist MPI (Message Passing Interface)?
Eine standardisierte API für den Nachrichtenaustausch in verteilten Systemen, häufig im High Performance Computing (HPC) verwendet.
Welche Arten der Synchronisation gibt es im Message Passing?
Totale Ordnung: Nachrichten werden in der Reihenfolge empfangen, in der sie gesendet wurden.
Teilweise Ordnung: Die Reihenfolge ist nicht immer garantiert.
Was ist ein Worker Pool?
Eine Verallgemeinerung des Thread-Pool-Konzepts, bei dem ‘Worker’ (Rechnerknoten, virtuelle Maschinen etc.) Aufgaben aus einer Warteschlange zugewiesen bekommen.