Parallele und Verteilte Programmierung - Fork-Join, Vektorisierung, Message Passing Flashcards

1
Q

Was ist das Fork-Join-Pattern?

A

Ein paralleles Programmiermodell, bei dem der Programmfluss in parallele Teile aufgespalten (Fork) und später wieder zusammengeführt wird (Join).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Was versteht man unter Task-Parallelismus im Fork-Join-Pattern?

A

Unabhängige Aufgaben (Tasks) können parallel von Threads ausgeführt werden, oft bestehen aber Abhängigkeiten zwischen den Aufgaben.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Was versteht man unter Daten-Parallelismus im Fork-Join-Pattern?

A

Schleifen werden parallelisiert, indem die Iterationen auf verschiedene Threads verteilt werden. Wichtig ist das Erkennen von Datenabhängigkeiten.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Was sind Barrieren (Barriers) im Fork-Join-Pattern?

A

Synchronisationspunkte, an denen Threads warten, bis alle anderen Threads denselben Punkt erreicht haben.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Was bedeutet Load Imbalance im Kontext von paralleler Programmierung?

A

Eine ungleichmäßige Verteilung der Aufgaben auf die Threads kann zu Lastimbalancen führen, was die Effizienz verringert.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Welche Frameworks unterstützen das Fork-Join-Pattern?

A

Frameworks wie OpenMP (C/C++/Fortran) oder Thread Pools, die Aufgaben effizient auf Threads verteilen, unterstützen das Fork-Join-Pattern.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Was ist Vektorisierung in der parallelen Programmierung?

A

Verwendung von Vektor- und Matrixnotation anstelle expliziter Schleifen, um parallele Operationen darzustellen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Was sind die Vorteile der Vektorisierung?

A

Einfacherer, übersichtlicherer Code; der Compiler optimiert automatisch die Berechnungen durch parallele Vektoroperationen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Was ist Autovektorisierung?

A

Der Compiler erkennt und optimiert Schleifen automatisch zu Vektoroperationen. Direkte Verwendung von SIMD-Einheiten ist oft effektiver.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Was ist Message Passing?

A

Das Message Passing Paradigma basiert auf den Operationen ‘send’ und ‘receive’, um Nachrichten zwischen Prozessen zu versenden.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Was ist der Unterschied zwischen synchronem und asynchronem Nachrichtenaustausch?

A

Synchron: Der Sender wartet, bis die Nachricht empfangen wird. Asynchron: Der Sender wartet nicht, was weniger Overhead verursacht.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Was ist ein Remote Procedure Call (RPC)?

A

Eine Funktion wird auf einem entfernten System ausgeführt, und das Ergebnis wird als Nachricht zurückgeschickt.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Was ist MPI (Message Passing Interface)?

A

Eine standardisierte API für den Nachrichtenaustausch in verteilten Systemen, häufig im High Performance Computing (HPC) verwendet.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Welche Arten der Synchronisation gibt es im Message Passing?

A

Totale Ordnung: Nachrichten werden in der Reihenfolge empfangen, in der sie gesendet wurden.

Teilweise Ordnung: Die Reihenfolge ist nicht immer garantiert.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Was ist ein Worker Pool?

A

Eine Verallgemeinerung des Thread-Pool-Konzepts, bei dem ‘Worker’ (Rechnerknoten, virtuelle Maschinen etc.) Aufgaben aus einer Warteschlange zugewiesen bekommen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly