Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Parallele Algorithmen zur Matrix Multiplikation Matthias Dohm Parallele Algorithmen zur Matrix Multiplikation Seminar Parallele Programmierung und Parallele.

Ähnliche Präsentationen


Präsentation zum Thema: "Parallele Algorithmen zur Matrix Multiplikation Matthias Dohm Parallele Algorithmen zur Matrix Multiplikation Seminar Parallele Programmierung und Parallele."—  Präsentation transkript:

1 Parallele Algorithmen zur Matrix Multiplikation Matthias Dohm Parallele Algorithmen zur Matrix Multiplikation Seminar Parallele Programmierung und Parallele Algorithmen

2 1 Parallele Algorithmen zur Matrix Multiplikation 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 2 Parallele Algorithmen zur Matrix Multiplikation 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

4 3 Parallele Algorithmen zur Matrix Multiplikation Einleitung Multiplikation + + +

5 4 Parallele Algorithmen zur Matrix Multiplikation Einleitung 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; } Θ (n³) Laufzeit m n o

6 5 Parallele Algorithmen zur Matrix Multiplikation Block-orientierter Algorithmus Laufzeit: Θ (n³) Einleitung A 0,0 A 0,1 A 1,1 A 1,0 B 0,0 B 0,1 B 1,1 B 1,0

7 6 Parallele Algorithmen zur Matrix Multiplikation Einleitung Architektur Verteilter Speicher Kommunikation Gleichzeitiges Senden und Empfangen möglich Kein paralleles Senden an mehrere Empfänger und Empfangen von mehreren Sendern

8 7 Parallele Algorithmen zur Matrix Multiplikation Einleitung Algorithmen von Cannon und Fox 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 MM 3, MM 4, MM 5 Varianten vom Algorithmus von Fox für nicht quadratische Matrizen und Prozessor-Grids

9 8 Parallele Algorithmen zur Matrix Multiplikation 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

10 9 Parallele Algorithmen zur Matrix Multiplikation 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 (A i,k, B k,j ) Deshalb: Umordnung A i,j : i Spalten nach links B i,j : j Zeilen nach oben

11 10 Parallele Algorithmen zur Matrix Multiplikation 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

12 11 Parallele Algorithmen zur Matrix Multiplikation 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 / β

13 12 Parallele Algorithmen zur Matrix Multiplikation Algorithmus von Cannon - Komplexität Berechnungen pro Iteration Berechnungen Gesamt Übertragung einer Submatrix Kommunikation Gesamt

14 13 Parallele Algorithmen zur Matrix Multiplikation 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

15 14 Parallele Algorithmen zur Matrix Multiplikation 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)

16 15 Parallele Algorithmen zur Matrix Multiplikation Algorithmus von Fox- Komplexität Berechnungen Gesamt (wie bei Algorithmus von Cannon) Übertragung einer Submatrix von B Broadcast einer Submatrix von A Kommunikation Gesamt

17 16 Parallele Algorithmen zur Matrix Multiplikation Laufzeitvergleich: Algorithmen von Cannon und Fox Algorithmus von Cannon ist schneller wenn:

18 17 Parallele Algorithmen zur Matrix Multiplikation 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

19 18 Parallele Algorithmen zur Matrix Multiplikation 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 19 Parallele Algorithmen zur Matrix Multiplikation 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 20 Parallele Algorithmen zur Matrix Multiplikation 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

22 21 Parallele Algorithmen zur Matrix Multiplikation 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

23 22 Parallele Algorithmen zur Matrix Multiplikation 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

24 23 Parallele Algorithmen zur Matrix Multiplikation 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 / β m n o

25 24 Parallele Algorithmen zur Matrix Multiplikation Algorithmus von Li- Komplexität Berechnungen Gesamt Übertragung einer Submatrix von A Umordnungsschritt Kommunikation Gesamt

26 25 Parallele Algorithmen zur Matrix Multiplikation MM 3 – 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

27 26 Parallele Algorithmen zur Matrix Multiplikation MM 3 – 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 27 Parallele Algorithmen zur Matrix Multiplikation MM 3 – 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)

29 28 Parallele Algorithmen zur Matrix Multiplikation MM 3 - Komplexität Berechnungen Gesamt Erster + letzter Broadcast-Schritt Kommunikation Gesamt

30 29 Parallele Algorithmen zur Matrix Multiplikation MM 3 Nachteile von MM 3 Schlechte Verteilung der Last Zusätzlicher Broadcast Schritt MM 4 behebt diese Probleme durch einen Umordnungsschritt

31 30 Parallele Algorithmen zur Matrix Multiplikation MM 4 – 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 31 Parallele Algorithmen zur Matrix Multiplikation MM 4 – 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

33 32 Parallele Algorithmen zur Matrix Multiplikation MM 4 – 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

34 33 Parallele Algorithmen zur Matrix Multiplikation MM 4 - Komplexität Berechnungen Gesamt Umordnungsschritt Kommunikation Gesamt

35 34 Parallele Algorithmen zur Matrix Multiplikation 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 MM 3, MM 4, MM 5 Zeilen-Version hat Vorteile, wenn die Blockgröße von A klein ist, oder die Anzahl der Prozess-Spalten gering ist

36 35 Parallele Algorithmen zur Matrix Multiplikation 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

37 36 Parallele Algorithmen zur Matrix Multiplikation 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

38 37 Parallele Algorithmen zur Matrix Multiplikation 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., Jin Li: A Poly: Algorithm for Parallel Dense Matrix Multiplication on Two-Dimensional Process Grid Topologies, Mississippi, Michael J. Quinn: Parallel Programming with C with MPI and OpenMP, Boston, Mass., McGraw-Hill, 2004.

39 38 Parallele Algorithmen zur Matrix Multiplikation Fragen

40 39 Parallele Algorithmen zur Matrix Multiplikation MM 5 Bei MM 3 und MM 4 können Zeilen- und Spaltenversion unabhängig von der Form der Matrix oder des Prozess Grids benutzt werden Bei MM 5 Zeilenversion nur, wenn q ≤ p Spaltenversion nur, wenn p ≤ q Also hier: Spaltenversion

41 40 Parallele Algorithmen zur Matrix Multiplikation MM 5 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

42 41 Parallele Algorithmen zur Matrix Multiplikation MM 5 - 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 "Parallele Algorithmen zur Matrix Multiplikation Matthias Dohm Parallele Algorithmen zur Matrix Multiplikation Seminar Parallele Programmierung und Parallele."

Ähnliche Präsentationen


Google-Anzeigen