490 likes | 680 Views
Matrixmultiplikation. im Rahmen des Seminars „Parallele und Verteilte Programmierung“ von Lutz Kramer. Beispiel. A x B = C. 2. Beispiel. 1 x 8 = 8. A x B = C. 2. Beispiel. 1 x 8 = 8 + 3 x 3 = 9. A x B = C. 2. Beispiel. 1 x 8 = 8 + 3 x 3 = 9 + -4 x 0 = 0.
E N D
Matrixmultiplikation im Rahmen des Seminars „Parallele und Verteilte Programmierung“ von Lutz Kramer
Beispiel A x B = C 2
Beispiel 1 x 8 = 8 A x B = C 2
Beispiel 1 x 8 = 8 + 3 x 3 = 9 A x B = C 2
Beispiel 1 x 8 = 8 + 3 x 3 = 9 + -4 x 0 = 0 A x B = C 2
Beispiel 1 x 8 = 8 + 3 x 3 = 9 + -4 x 0 = 0 + -2 x 1 = -2 A x B = C 2
Beispiel 1 x 8 = 8 + 3 x 3 = 9 + -4 x 0 = 0 + -2 x 1 = -2 = 15 A x B = C 2
Agenda • Theoretische Grundlagen • Sequentielle Algorithmen • Intuitiver Algorithmus • Strassen-Algorithmus • Parallele Algorithmen • Schleifenparallelisierung • Cannon‘s Algorithmus • Vergleich der Algorithmen • Kritische Würdigung und Ausblick 3
Agenda • Theoretische Grundlagen • Sequentielle Algorithmen • Intuitiver Algorithmus • Strassen-Algorithmus • Parallele Algorithmen • Schleifenparallelisierung • Cannon‘s Algorithmus • Vergleich der Algorithmen • Kritische Würdigung und Ausblick 3
Theoretische Grundlagen • Matrix mit n Zeilen und m Spalten -> Ordnung (n,m) • Kennzeichnung Großbuchstabe (z.B. A) und Größe n x m • Quadratische Matrizen haben Ordnung (n,n) bzw. Größe n x n • Es gilt: cij = Σaik * bkj für alle k x = 4
Agenda • Theoretische Grundlagen • Sequentielle Algorithmen • Intuitiver Algorithmus • Strassen-Algorithmus • Parallele Algorithmen • Schleifenparallelisierung • Cannon‘s Algorithmus • Vergleich der Algorithmen • Kritische Würdigung und Ausblick 5
Sequentielle Algorithmen- Intuitiver Algorithmus - • Intuitive, erste Lösung • Lösung über 3 Schleifen • Laufzeit: Θ(n3), für A(n x n) und B(n x n) • Laufzeit für nicht quadratische MatrizenΘ(l * n * m) 6
Sequentielle Algorithmen- Strassen-Algorithmus - • Zerlegung der Matrix A in Submatrizen A11, A12, A21, A22 • Gleiches Vorgehen bei Matrix B • Berechnung von Zwischenmatrizen P1 bis P7 • Berechnung von Teilergebnismatrizen C11, C12, C21, C22 aus P1 bis P7 • Zusammensetzen der Endmatrix C 7
Sequentielle Algorithmen- Strassen-Algorithmus - Zwischenmatrizen: P1 = (A11 + A22) x (B11 + B22) P2 = (A21 + A22) x B11 P3 = A11 x (B12 - B22) P4 = A22 x (B21 - B11) P5 = (A11 + A12) x B22 P6 = (A21 - A11) x (B11 + B12) P7 = (A12 - A22) x (B21 + B22) 8
Sequentielle Algorithmen- Strassen-Algorithmus - Blöcke der Zielmatrix: C11 = P1 + P4 - P5 + P7 C12 = P3 + P5 C21 = P2 + P4 C22 = P1 + P3 – P2 + P6 9
Sequentielle Algorithmen- Strassen-Algorithmus - • Veröffentlicht im Jahr 1968 • Bisher schnellster bekannter Algorithmus • Laufzeit von ca. Ω(n2,81) bei quadratischen Matrizen 10
Agenda • Theoretische Grundlagen • Sequentielle Algorithmen • Intuitiver Algorithmus • Strassen-Algorithmus • Parallele Algorithmen • Generelle Annahmen • Schleifenparallelisierung • Cannon‘s Algorithmus • Vergleich der Algorithmen • Kritische Würdigung und Ausblick 11
Parallele Algorithmen- Generelle Annahmen - • p verschiede Prozesse • Auf unterschiedlichen Prozessoren • Quadratische Matrizen der Ordnung (n,n) • n ist ein Vielfache von√p • Für das Beispiel gilt: n = 4 und p = 4 12
Parallele Algorithmen- Schleifenparallelisierung - • Multiplikation eines (n / p) x (n / p) Blocks aus A mit einem (n / p) x n Block aus B • Anzahl der Iterationen ist p • Zeit für Multiplikation und Addition • Zeit für gesamte Berechnung für einzelnen Prozess: *(n / p) * (n / p) * n * p = * n3 / p • Neben Berechnungszeit noch Kommunikationszeit 13
Parallele Algorithmen- Schleifenparallelisierung - Kommunikationszeit • Latenzzeit • Übertragung von (n / p) x n aus Matrix B • Transaktionszeit • Zeit pro Kommunikationsvorgang: + (( n / p ) * n ) / 14
Parallele Algorithmen- Schleifenparallelisierung - Kommunikationszeit • Latenzzeit • Übertragung von (n / p) x n aus Matrix B • Transaktionszeit • Zeit pro Kommunikationsvorgang: + (( n / p ) * n ) / Bearbeitungszeit • Berechnungszeit + Zeit p. Kommunikationsvorgang * Anzahl Vorgänge • Anzahl der Vorgänge p • Gesamtbearbeitungszeit: * n3 / p+ p * + n2 / • Berechnungszeit:Θ(n3),Kommunikationszeit:Θ(n2) 14
Parallele Algorithmen- Cannon‘s Algorithmus - • Aufteilung in Submatrizen, ähnlich denen von Strassen • Submatrizen haben Ordnung (b,b) mit b = n / √p • Pro Block (Submatrix) aus C ein Prozess • Blöcke von A werde nach Links, Blöcke von B nach Rechts weitergegeben • Dabei Multiplikation und Aufsummierung • Problem: Anfangsaufteilung 15
Parallele Algorithmen- Cannon‘s Algorithmus - Berechnungszeit • Multiplikation von ( n / √p ) x ( n / √p ) Elemente aus Matrix A mit ( n / √p ) x ( n / √p ) aus Matrix B pro Iteration • Anzahl der Iterationen √p • Zeit für Multiplikation und Addition • Gesamte Berechnungszeit pro Prozess: * ( n / √p )3* √p = * n3 / p 17
Parallele Algorithmen- Cannon‘s Algorithmus - Berechnungszeit • Multiplikation von ( n / √p ) x ( n / √p ) Elemente aus Matrix A mit ( n / √p ) x ( n / √p ) aus Matrix B pro Iteration • Anzahl der Iterationen √p • Zeit für Multiplikation und Addition • Gesamte Berechnungszeit pro Prozess: * ( n / √p )3* √p = * n3 / p Anfangs-Aufteilungszeit • Zeit zur Übertragung eines Matrixelements 1 / • Zeit für Anfangs-Aufteilung 2 * ( + n2 / ( p * )) 17
Parallele Algorithmen- Cannon‘s Algorithmus - Kommunikationszeit • Empfang und Versand eines Blockes von A und B bei jeder der √p Iterationen • Benötigte Zeit: √p * 2 * ( + n2 / ( p * )) 18
Parallele Algorithmen- Cannon‘s Algorithmus - Kommunikationszeit • Empfang und Versand eines Blockes von A und B bei jeder der √p Iterationen • Benötigte Zeit: √p * 2 * ( + n2 / ( p * )) Bearbeitungszeit • Anfangszeit + Berechnungszeit + Kommunikationszeit • Gesamtbearbeitungszeit * n3 / p + 2 * ( √p + 1 ) * ( + n2 / ( p * )) 18
Agenda • Theoretische Grundlagen • Sequentielle Algorithmen • Intuitiver Algorithmus • Strassen-Algorithmus • Parallele Algorithmen • Schleifenparallelisierung • Cannon‘s Algorithmus • Vergleich der Algorithmen • Kritische Würdigung und Ausblick 19
Sequentielle Algorithmen Intuitiver Algorithmus • Prinzip: 3 Schleifen • Leicht zu implementieren • Verständlich • Laufzeit: Θ(n3) • Vergleichszeit für andere Algorithmen • Auch in rekursiver Variante Möglich, dadurch aber keine andere Laufzeit Strassen-Algorithmus • Veröffentlicht: 1968 • Prinzip: Aufteilung in Submatrizen und geschickte Addition, Subtraktion und Multiplikation • Laufzeit: Ω(n2,81) • Algorithmus mit der schnellsten bekannten Berechnungszeit • Für Ein-Prozessor-Rechner bisher ideal 20
Sequentielle Algorithmen Intuitiver Algorithmus • Prinzip: 3 Schleifen • Leicht zu implementieren • Verständlich • Laufzeit: Θ(n3) • Vergleichszeit für andere Algorithmen • Auch in rekursiver Variante Möglich, dadurch aber keine andere Laufzeit Strassen-Algorithmus • Veröffentlicht: 1968 • Prinzip: Aufteilung in Submatrizen und geschickte Addition, Subtraktion und Multiplikation • Laufzeit: Ω(n2,81) • Algorithmus mit der schnellsten bekannten Berechnungszeit • Für Ein-Prozessor-Rechner bisher ideal 20
Parallele Algorithmen Schleifenparallelisierung • Prinzip: Multiplikation eines (n / p) x (n / p) Blocks mit einem (n / p) x n Block pro Iteration • Anzahl Iterationen p • Berechnungszeit Θ(n3) * n3 / p • Kommunikationszeit Θ(n2) p * + n2 / Cannon‘s Algorithmus • Prinzip: Multiplikation eines (n / √ p) x (n / √ p) Blocks mit einem (n / √ p) x (n / √ p) Block pro Iteration • Anzahl Iterationen √p • Berechnungszeit Θ(n3) * n3 / p • Kommunikationszeit Θ(n2) 2 * ( √p + 1 ) * ( + n2 / ( p * )) 21
Parallele Algorithmen p * + n2 / > 2 * ( √p + 1 ) * ( + n2 / ( p * )) 22
Parallele Algorithmen p * + n2 / > 2 * ( √p + 1 ) * ( + n2 / ( p * )) p * > 2 * ( √p + 1 ) * p > 2 * ( √p + 1 ) 22
Parallele Algorithmen p * + n2 / > 2 * ( √p + 1 ) * ( + n2 / ( p * )) p * > 2 * ( √p + 1 ) * p > 2 * ( √p + 1 ) n2 / > 2 * ( √p + 1 ) * n2 / ( p * )) 22
Parallele Algorithmen p * + n2 / > 2 * ( √p + 1 ) * ( + n2 / ( p * )) p * > 2 * ( √p + 1 ) * p > 2 * ( √p + 1 ) n2 / > 2 * ( √p + 1 ) * n2 / ( p * )) Gilt, sofern p > 2 * √3 + 4 ≈ 7,46410 und > 0 und > 0 ist. Damit ist Cannon‘s Algorithmus ab 8 parallelen Prozessens besser. 22
Parallele Algorithmen Schleifenparallelisierung • Prinzip: Multiplikation eines (n / p) x (n / p) Blocks mit einem (n / p) x n Block pro Iteration • Anzahl Iterationen p • Berechnungszeit Θ(n3) * n3 / p2 • Kommunikationszeit Θ(n2) p * + n2 / Cannon‘s Algorithmus • Prinzip: Multiplikation eines (n / √ p) x (n / √ p) Blocks mit einem (n / √ p) x (n / √ p) Block pro Iteration • Anzahl Iterationen √p • Berechnungszeit Θ(n3) * n3 / p • Kommunikationszeit Θ(n2) 2 * ( √p + 1 ) * ( + n2 / ( p * )) 23
Sequentielle vs. Parallele Algorithmen Strassen-Algorithmus • Aufteilungsprinzip • Schnellste Berechnungszeit • Keine Kommunikationszeit benötigt Cannon‘s Algorithmus • Aufteilungsprinzip • Verbesserung der Bearbeitungs-zeit durch Aufteilung der Berechnungszeit • Kommunikation kann parallel zur Berechnung erfolgen, sofern genug Speicher vorhanden 24
Sequentielle vs. Parallele Algorithmen Strassen-Algorithmus • Aufteilungsprinzip • Schnellste Berechnungszeit • Keine Kommunikationszeit benötigt Cannon‘s Algorithmus • Aufteilungsprinzip • Verbesserung der Bearbeitungs-zeit durch Aufteilung der Berechnungszeit • Kommunikation kann parallel zur Berechnung erfolgen, sofern genug Speicher vorhanden Bearbeitungszeit bei Cannon‘s Algorithmus < Berechnungszeit beim Strassen-Algorithmus 24
Sequentielle vs. Parallele Algorithmen Strassen-Algorithmus • Aufteilungsprinzip • Schnellste Berechnungszeit • Keine Kommunikationszeit benötigt Cannon‘s Algorithmus • Aufteilungsprinzip • Verbesserung der Bearbeitungs-zeit durch Aufteilung der Berechnungszeit • Kommunikation kann parallel zur Berechnung erfolgen, sofern genug Speicher vorhanden Bearbeitungszeit bei Cannon‘s Algorithmus < Berechnungszeit beim Strassen-Algorithmus 24
Agenda • Theoretische Grundlagen • Sequentielle Algorithmen • Intuitiver Algorithmus • Strassen-Algorithmus • Parallele Algorithmen • Schleifenparallelisierung • Cannon‘s Algorithmus • Vergleich der Algorithmen • Kritische Würdigung und Ausblick 25
Zusammenfassung Ziel • Überblick über Algorithmen der Matrixmultiplikation • Vergleich sequentieller und paralleler Algorithmen 26
Zusammenfassung Ziel Vorgehen • Überblick über Algorithmen der Matrixmultiplikation • Vergleich sequentieller und paralleler Algorithmen • Vorstellung von zwei sequentiellen Algorithmen: Intuitiv und Strassen • Vorstellung von zwei parallelen Algorithmen: Schleifen-parallelisierung und Cannon 26
Zusammenfassung Ziel Vorgehen • Überblick über Algorithmen der Matrixmultiplikation • Vergleich sequentieller und paralleler Algorithmen • Vorstellung von zwei sequentiellen Algorithmen: Intuitiv und Strassen • Vorstellung von zwei parallelen Algorithmen: Schleifen-parallelisierung und Cannon Ergebnis • Bei Paralleler Verarbeitung: Cannon, sofern mehr als acht parallele Prozesse vorhanden sind • Ohne Parallele Verarbeitung: Strassen • ABER: „Bester“ Algorithmus für die Multiplikation von Matrizen ist noch immer nicht gefunden worden. (Sedgewick, S. 604) 26