Parallel Lua: Map-Reduce Tutorial (Stefan Bosse) [6.2024] |
In dieser Übung findet eine erste Einführung in die Programmierung von parallelen Systemen nach dem Map & Reduce Modell statt.
# lvm myprog.lua
# lvm weblvm.lua
Service thread 2 started.
[2@1592562880] HTTP server (2) listening to http://0.0.0.0:4610
Monitor thread 4 started.
[4@1592562880] HTTP server (4) listening to http://0.0.0.0:4611
Es wird das AES.lua
Modul benötigt. Die Datei muss sich im gleichen Verzeichnis befinden wie weblvm-lua
.
Das lvm Modul parallel kann verwendet werden um selbstsynchronisierende parallele Datenverarbeitung von partitionierbaren Datensätzen nach dem Map & reduce (MaR) prinzip zu ermöglichen. Im Gegensatz zum CSP Modell gibt es keine explizite Interprozesskommunikation zwischen einzelnen parallel ausgeführten Berechnungsprozessen. Daher kann die MaR Architektur eher als Datenpfadparallelität verstanden werden.
Folgende Bedingungen müssen erfüllt sein:
Das lvm MaR Modul definiert eine parallele Berechnung als Sequenz von synchronisierten Operationen (horizontal Verabeitungskette). Dabei wird eine folgende Operation erst dann ausgeführt wenn die vorherige terminiert ist.
Es gibt folgende Operationen:
┌────┐
│ P0 │ (map)
└──┬─┘
A│
┌───────┬───────┼───────┬───────┐
A= {a1│ a2│ a3│ a4│ a5│ ...} ◀──┐
┌──┴─┐ ┌──┴─┐ ┌──┴─┐ ┌──┴─┐ ┌──┴─┐ │
│ P1 │ │ P2 │ │ P3 │ │ P4 │ │ P5 │ ... │
└──┬─┘ └──┬─┘ └──┬─┘ └──┬─┘ └──┬─┘ │
B= {b1│ b2│ b3│ b4│ b5│ ...} ────┘
└───────┴───────┼───────┴───────┘
B│
┌──┴─┐
│ P0 │ (reduce)
└──┬─┘
c│
▼
Result
A und B sind Vektoren oder Matrizen, und c ein reduzierter niderigdimensionalerer Wert.
Die Anzahl der Partitionen wird den Worker Prozessen angepasst.
Bei ungradzahliger Verteilung können die EIngabedatenpartitonen unterschiedlich groß sein.
▸
◼
|
✗
↻
≡
|
Frage. Welcher Speed-up wird für workers=1,2,3,4 erzielt?
Frage. Wieso ist das Ergebnis enttäuschend? Wo lieht hier das Problem bei der Parallelisierung (bzgl. Beschleunigung)? Hinweis: Betrachte die Rechenkomplexität (in Abhängigkeit des Startwertes x)
Frage. Wie könnte eine gleichmäßige(re) Auslastung der Prozesse ohne a-priori Kenntnis der Berechnung erfolgen?
Im folgenden Beispiel soll eine Matrixberechnung parallel mit MaR durchgefphrt werden die typisch in der Bildverrabeitung ist
Es wird das Modul AES.lua benötigt (Datei muss sich im gleichen Verzeichnis wie weblvm befinden).
▸
◼
|
✗
↻
≡
|
Frage. Welcher Speed-up wird für workers=1,2,3,4 erzielt?
Frage. Wieso ist das Ergebnis hier besser (im Vergleich zu Beispiel 1)?