Parallel Lua: Map-Reduce Tutorial (Stefan Bosse) [6.2024]

Parallel Lua: Map-Reduce Tutorial

In dieser Übung findet eine erste Einführung in die Programmierung von parallelen Systemen nach dem Map & Reduce Modell statt.

Vorbereitung und Verwendung

Es wird das AES.lua Modul benötigt. Die Datei muss sich im gleichen Verzeichnis befinden wie weblvm-lua.

Partitionierung

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:

  1. Ein Datensatz D kann in unabhängige Teilsätze {d}i zerlegen
  2. Es gibt eine Berechnungsfunktion f(x):xy die auf Fraktionen oder einzelne Elemente des Datensatzes angewendet werden kann
  3. Es gibt i.A. eine Kette von Berechnungsfunktionen f(g(h(...(x)))) : xy
  4. Die Teilberechnungen sind vertikal unabhängig, horizotntal strikt sequenziell.

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:

Prozessfluss

                     ┌────┐                            
                     │ 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                           

Bei ungradzahliger Verteilung können die EIngabedatenpartitonen unterschiedlich groß sein.

Beispiele

Einfaches Beispiel


Parallele Berechnung (1)

 ▸ 
 ◼ 
 ✗ 
 ↻ 
 ≡ 

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?

Verschlüsselung


MaR in der Verschlüsselung

 ▸ 
 ◼ 
 ✗ 
 ↻ 
 ≡ 

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)?



Hilfe



Einreichung (Assignment #2024-12331 )



Prüfen



Bewerten (Lehrer)




Created by the NoteBook Compiler Ver. 1.27.2 (c) Dr. Stefan Bosse (Sat Jun 29 2024 19:36:28 GMT+0200 (Central European Summer Time))