Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Agenda Einleitung Algorithmen für quadratische Matrizen und quadratische Prozessor Grids Algorithmen für nicht quadratische Matrizen und nicht quadratische.

Ähnliche Präsentationen


Präsentation zum Thema: "Agenda Einleitung Algorithmen für quadratische Matrizen und quadratische Prozessor Grids Algorithmen für nicht quadratische Matrizen und nicht quadratische."—  Präsentation transkript:

0 Parallele Algorithmen zur Matrix Multiplikation
Seminar Parallele Programmierung und Parallele Algorithmen

1 Agenda Einleitung Algorithmen für quadratische Matrizen und quadratische Prozessor Grids Algorithmen für nicht quadratische Matrizen und nicht quadratische Prozessor Grids Fazit und Ausblick Ist jemand dabei, der nicht weiß, wie die Matrix Multiplikation funktioniert?

2 Agenda Einleitung Algorithmen für quadratische Matrizen und quadratische Prozessor Grids Algorithmen für nicht quadratische Matrizen und nicht quadratische Prozessor Grids Fazit und Ausblick

3 Einleitung + + + Multiplikation Spalten(A) == Zeilen(B)

4 Θ(n³) Einleitung Laufzeit o n m
public static int[][] MatrixMult (int[][]a, int[][]b) { int m = a.length; //A is a m x n matrix int n = b.length; //B is a n x o matrix int o = b[0].length; //Result is a m x o matrix int[][] c = new int[m][o]; //Calculation for (int i = 0; i < m; i++) { for (int j = 0; j < o; j++) { c[i][j] = 0; //Initialize c_i,j for (int k = 0; k < n; k++) { c[i][j] += a[i][k]*b[k][j]; } return c; Laufzeit Θ(n³) 1. Schleife: Zeilen von c (und a) 2. Schleife: Spalten von c (und b) 3. Schleife: Element von c ausrechnen N³ -> Parallelisieren macht Sinn

5 Einleitung Block-orientierter Algorithmus Laufzeit: Θ(n³) A0,0 A0,1 A1,1 A1,0 B0,0 B0,1 B1,1 B1,0 Problem lässt sich zerlegen

6 Einleitung Architektur Verteilter Speicher Kommunikation
Gleichzeitiges Senden und Empfangen möglich Kein paralleles Senden an mehrere Empfänger und Empfangen von mehreren Sendern Einfach bei shared memorey

7 Einleitung Algorithmen von Cannon und Fox Algorithmus von Li
Block-orientierte Algorithmen Prozessoren als 2D-Grid organisiert (muss quadratisch sein) Matrizen müssen quadratisch sein Algorithmus von Li Variante von Cannons Algorithmus für nicht quadratische Matrizen und Prozessor-Grids MM3, MM4, MM5 Varianten vom Algorithmus von Fox für nicht quadratische Matrizen und Prozessor-Grids

8 Agenda Einleitung Algorithmen für quadratische Matrizen und quadratische Prozessor Grids Algorithmen für nicht quadratische Matrizen und nicht quadratische Prozessor Grids Fazit und Ausblick Ist jemand dabei, der nicht weiß, wie die Matrix Multiplikation funktioniert?

9 Algorithmus von Cannon
Matrizen A und B werden auf Prozesse aufgeteilt Entsprechender Teil von C wird initialisiert Problem: Nur Prozesse entlang der Hauptdiagonalen halten passende Teilmatrizen (Ai,k, Bk,j) Deshalb: Umordnung Ai,j : i Spalten nach links Bi,j : j Zeilen nach oben Grafiken erklären

10 Algorithmus von Cannon
Iteration (Anzahl der Prozess-Zeilen) Alle Prozesse führen eine (sequentielle) Matrix Multiplikation aus Kommunikationsschritt Prozess sendet Block von A nach links und empfängt Block von A von rechts Prozess sendet Block von B nach oben und empfängt Block von B von unten Umordnung wird rückgängig gemacht A, B, C stationär

11 Algorithmus von Cannon - Komplexität
Größe des Prozess Grid: p × p Größe der Matrizen: n × n Zeitaufwand für Multiplikation von 2 Elementen + Addition zum Ergebnis: χ Zeit zum Aufbau einer Kommunikation: λ Zeit zum Übertragen eines Matrix-Elements: 1 / β Beta = elemente pro zeit

12 Algorithmus von Cannon - Komplexität
Berechnungen pro Iteration Berechnungen Gesamt Übertragung einer Submatrix Kommunikation Gesamt Kommunikation gesamt In jedem Schritt müssen 2 submatrizen übertragen wergen (a,b) Alignment am anfang und am ende

13 Algorithmus von Fox Matrizen A und B werden auf Prozesse aufgeteilt
Entsprechender Teil von C wird initialisiert Keine Umordnung erforderlich Submatrizen von A werden entlang der Prozessreihe per Broadcast übertragen Wie funktioniert ein Broadcast? - Minimal aufspannender Baum -> log_2 (p) Schritte -> teurer als einfaches verschieben

14 Algorithmus von Fox Iteration (Anzahl der Prozess-Zeilen)
Alle Prozesse führen eine (sequentielle) Matrix Multiplikation aus Kommunikationsschritt Prozess sendet Block von B nach oben und empfängt Block von B von unten Pro Zeile wird ein Block von A per Broadcast entlang der Zeile übertragen (entfällt in der letzten Iteration) Zeilen vs. Spaltenversion -> hier Zeilenversion

15 Algorithmus von Fox- Komplexität
Berechnungen Gesamt (wie bei Algorithmus von Cannon) Übertragung einer Submatrix von B Broadcast einer Submatrix von A Kommunikation Gesamt

16 Laufzeitvergleich: Algorithmen von Cannon und Fox
Algorithmus von Cannon ist schneller wenn:

17 Agenda Einleitung Algorithmen für quadratische Matrizen und quadratische Prozessor Grids Algorithmen für nicht quadratische Matrizen und nicht quadratische Prozessor Grids Fazit und Ausblick Ist jemand dabei, der nicht weiß, wie die Matrix Multiplikation funktioniert?

18 Algorithmus von Li (C stationär)
Umordnung besteht aus 2 Phasen Blöcke werden verschoben Zeilen/Spalten werden verschoben Für jede Prozess-Zeile Spaltenindex der ersten Spalte von A soll Zeilenindex der ersten Zeile von B entsprechen Für jede Prozess-Spalte Zeilenindex der ersten Zeile von B soll Spaltenindex der ersten Spalte von A entsprechen Grafiken erklären

19 Algorithmus von Li (C stationär)
Umordnung besteht aus 2 Phasen Blöcke werden verschoben Zeilen/Spalten werden verschoben Für jede Prozess-Zeile Spaltenindex der ersten Spalte von A soll Zeilenindex der ersten Zeile von B entsprechen Für jede Prozess-Spalte Zeilenindex der ersten Zeile von B soll Spaltenindex der ersten Spalte von A entsprechen

20 Algorithmus von Li (C stationär)
Umordnung besteht aus 2 Phasen Blöcke werden verschoben Zeilen/Spalten werden verschoben Für jede Prozess-Zeile Spaltenindex der ersten Spalte von A soll Zeilenindex der ersten Zeile von B entsprechen Für jede Prozess-Spalte Zeilenindex der ersten Zeile von B soll Spaltenindex der ersten Spalte von A entsprechen

21 Algorithmus von Li (C stationär)
Iteration (bis dieser Zustand wieder erreicht wird) Alle Prozesse führen eine (sequentielle) Matrix Multiplikation aus (soweit möglich) Kommunikationsschritt Prozess sendet Block von A nach links und empfängt Block von A von rechts (wenn alle Elemente von A benutzt) Prozess sendet Block von B nach oben und empfängt Block von B von unten (wenn alle Elemente von B benutzt) Umordnung wird rückgängig gemacht

22 Algorithmus von Li (C stationär)
Iteration (bis dieser Zustand wieder erreicht wird) Alle Prozesse führen eine (sequentielle) Matrix Multiplikation aus (soweit möglich) Kommunikationsschritt Prozess sendet Block von A nach links und empfängt Block von A von rechts (wenn alle Elemente von A benutzt) Prozess sendet Block von B nach oben und empfängt Block von B von unten (wenn alle Elemente von B benutzt) Umordnung wird rückgängig gemacht A, B, C, stationär

23 Algorithmus von Li - Komplexität
Größe des Prozess Grid: p × q Größe der Matrizen: A: m × n B: n × o C: m × o Zeitaufwand für Multiplikation von 2 Elementen + Addition zum Ergebnis: χ Zeit zum Aufbau einer Kommunikation: λ Zeit zum Übertragen eines Matrix-Elements: 1 / β o n m

24 Algorithmus von Li- Komplexität
Berechnungen Gesamt Übertragung einer Submatrix von A Umordnungsschritt Kommunikation Gesamt Umordnungsschritt: 2 -> zwei Phasen (Obere Grenze) P Zeilen, q Spalten

25 MM3 – Zeilen-Version 1. Schritt: Für jede Prozess-Zeile
Spalte wird gesucht, deren Spaltenindex dem Zeilenindex der ersten Zeile von B entspricht Der Teil der Submatrix ab dieser Spalte wird per Broadcast entlang der Zeile übertragen Die nicht benutzten Elemente der Submatrizen werden im letzten Schritt übertragen und verwendet

26 MM3 – Zeilen-Version Iteration (bis dieser Zustand wieder erreicht wird) Alle Prozesse führen eine (sequentielle) Matrix Multiplikation aus (soweit möglich) Kommunikationsschritt Nächster Prozess sendet Block von A per Broadcast (wenn alle Elemente von A in dieser Zeile benutzt) Prozess sendet Block von B nach oben und empfängt Block von B von unten (wenn alle Elemente von B benutzt)

27 MM3 – Zeilen-Version Iteration (bis dieser Zustand wieder erreicht wird) Alle Prozesse führen eine (sequentielle) Matrix Multiplikation aus (soweit möglich) Kommunikationsschritt Nächster Prozess sendet Block von A per Broadcast (wenn alle Elemente von A in dieser Zeile benutzt) Prozess sendet Block von B nach oben und empfängt Block von B von unten (wenn alle Elemente von B benutzt)

28 MM3 - Komplexität Berechnungen Gesamt
Erster + letzter Broadcast-Schritt Kommunikation Gesamt

29 MM3 Nachteile von MM3 Schlechte Verteilung der Last Zusätzlicher Broadcast Schritt MM4 behebt diese Probleme durch einen Umordnungsschritt

30 MM4 – Zeilen-Version 1. Schritt: Für jede Prozess-Zeile
Spalte wird gesucht, deren Spaltenindex dem Zeilenindex der ersten Zeile von B entspricht Die Spalten von A werden nach links verschoben, sodass diese Spalte die erste in ihrem Block ist Pro Zeile wird ein Block von A per Broadcast entlang der Zeile übertragen

31 MM4 – Zeilen-Version 1. Schritt: Für jede Prozess-Zeile
Spalte wird gesucht, deren Spaltenindex dem Zeilenindex der ersten Zeile von B entspricht Die Spalten von A werden nach links verschoben, sodass diese Spalte die erste in ihrem Block ist Pro Zeile wird ein Block von A per Broadcast entlang der Zeile übertragen

32 MM4 – Zeilen-Version Iteration (bis dieser Zustand wieder erreicht wird) Alle Prozesse führen eine (sequentielle) Matrix Multiplikation aus (soweit möglich) Kommunikationsschritt Nächster Prozess sendet Block von A per Broadcast (wenn alle Elemente von A in dieser Zeile benutzt) Prozess sendet Block von B nach oben und empfängt Block von B von unten (wenn alle Elemente von B benutzt) Umordnung wird rückgängig genacht

33 MM4 - Komplexität Berechnungen Gesamt Umordnungsschritt
Kommunikation Gesamt P zeilen Q spalten

34 Anmerkungen Keiner der vorgestellten Algorithmen ist für alle Fälle optimal Algorithmus von Li: Matrix mit den meisten Elementen sollte stationär sein Vorteile auf großen Prozessor Grids MM3, MM4, MM5 Zeilen-Version hat Vorteile, wenn die Blockgröße von A klein ist, oder die Anzahl der Prozess-Spalten gering ist

35 Agenda Einleitung Algorithmen für quadratische Matrizen und quadratische Prozessor Grids Algorithmen für nicht quadratische Matrizen und nicht quadratische Prozessor Grids Fazit und Ausblick Ist jemand dabei, der nicht weiß, wie die Matrix Multiplikation funktioniert?

36 Fazit und Ausblick Matrix Multiplikation ist gut parallelisierbar
Kein Algorithmus ist für alle Fälle optimal Für jeden Fall kann der optimale Algorithmus gewählt werden Vorgestellte Algorithmen sind nur ein kleiner Ausschnitt Weitere Varianten der Algorithmen von Cannon und Fox Broadcast-Broadcast Algorithmus Algorithmen auf Hypercubes

37 Literatur John Gunnels, Calvin Lin, Grog Morrow, Robert van de Geijn: Analysis of a Class of Parallel Matrix Multiplication Algorithms, Proc. Int’l Parallel Processing Symp., 1998. Jin Li: A Poly: Algorithm for Parallel Dense Matrix Multiplication on Two-Dimensional Process Grid Topologies, Mississippi, 1996. Michael J. Quinn: Parallel Programming with C with MPI and OpenMP, Boston, Mass., McGraw-Hill, 2004.

38 ? Fragen

39 MM5 Also hier: Spaltenversion
Bei MM3 und MM4 können Zeilen- und Spaltenversion unabhängig von der Form der Matrix oder des Prozess Grids benutzt werden Bei MM5 Zeilenversion nur, wenn q ≤ p Spaltenversion nur, wenn p ≤ q Also hier: Spaltenversion

40 MM5 Iteration (bis dieser Zustand wieder erreicht wird)
Pro Prozess-Spalte Alle Zeilen von B, die für Berechnungen verwendet werden können, werden per Broadcast entlang der Spalte übertragen (evtl. mehrere Schritte) Alle Prozesse führen eine (sequentielle) Matrix Multiplikation aus Prozess sendet Block von A nach links und empfängt Block von A von rechts

41 MM5 - Komplexität Berechnungen Gesamt
Anzahl der Broadcast Schritte pro Iteration schlecht vorauszusagen Falls q mod p = 0 (Spalten Version), reicht immer 1 Broadcast Schritt Dann: Kommunikation Gesamt


Herunterladen ppt "Agenda Einleitung Algorithmen für quadratische Matrizen und quadratische Prozessor Grids Algorithmen für nicht quadratische Matrizen und nicht quadratische."

Ähnliche Präsentationen


Google-Anzeigen