Matrixmultiplikation

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmen und Datenstrukturen
Advertisements

Lösung nichtlinearer Gleichungssysteme
Fast Fourier Transformation
Datenparallele Algorithmische Skelette in Muesli
Das Studium der Informatik
Rekursion: Rekurrenz: Algorithmen rufen sich selbst (rekursiv) auf.
Schnelle Matrizenoperationen von Christian Büttner
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
11. Matrizen. 11. Matrizen Eine mn-Matrix ist ein Raster aus mn Koeffizienten, die in m Zeilen und n Spalten angeordnet sind. = (aij)1  i  m, 1.
B-Bäume.
5. Sortier-Algorithmen Vorbemerkungen:
HEINZ NIXDORF INSTITUT Universität Paderborn Fachbereich Mathematik/Informatik 1 Algorithm. Grundlagen des Internets 24. Juni 2002 Christian Schindelhauer.
Standortfaktoren INTERN - Ausdrucksstark präsentieren.
Lösung von linearen Gleichungssystemen - Grundlagen
WIRTSCHAFTSINFORMATIK Westfälische Wilhelms-Universität Münster WIRTSCHAFTS INFORMATIK Seminar Software Agenten Agenten als Informationsfilter Referent.
Algorithmentheorie 04 –Hashing
WS Algorithmentheorie 05 - Treaps Prof. Dr. Th. Ottmann.
Dynamische Programmierung (2) Matrixkettenprodukt
WS Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
Geometrisches Divide and Conquer
Genetische Algorithmen
Seminar parallele Programmierung SS 2003
Rechneraufbau & Rechnerstrukturen, Folie 6.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 6.
OpenMP Präsentation im Rahmen des Seminars
Beispiele für Gleichungssysteme
Produktform der Inversen 1
Diskrete Mathematik I Vorlesung Arrays-
Institut für Kartographie und Geoinformation Diskrete Mathematik I Vorlesung Bäume-
Cranking Modell – Drehungen senkrecht zur Symmetrieachse Das Crankingmodell Drehungen senkrecht zur Symmetrieachse Thorsten Krautscheid
PG 520 Intelligence Service – gezielte Informationen aus dem Internet
Wir suchen ‘ mit m = m    ‘ c  ‘ mod 26
Matrix Multiplication on CUDA
Ralf KüstersDagstuhl 2008/11/30 2 Ralf KüstersDagstuhl 2008/11/30 3.
Rechneraufbau & Rechnerstrukturen, Folie 12.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 12.
Effiziente Algorithmen
Beispiel mit vier Personen und vier Sitzplätzen
Agenda Motivation Grundlagen der Matrix-Vektor-Multiplikation
Programmierung paralleler Algorithmen mit MPI
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Einführung in die Programmierung
Abschlussvortrag zur Studienarbeit
Chomp Enumerative Combinatoric Algorithms
Diskrete Mathematik II
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
Einführung in die Matrizenrechnung
Polynome und schnelle Fourier-Transformation
Algorithmus von Dijkstra. 0 Algorithmus von Dijkstra s Priority Queue PQ: Knoten, Priorität Weglänge Kandidatenmenge.
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Werkzeugmaschinen Einführung © Prof. Dr. H.-J. Weber 10.11
Auslegung eines Vorschubantriebes
Technische Informatik Reihungen – Felder - Arrays.
Algorithm Engineering „GPU Algorithmen“
Analyse von Ablaufdiagrammen
Ein Vortrag von Simon Bayer
UN - Behindertenrechtskonvention
Analyseprodukte numerischer Modelle
Externspeicher- Algorithmen:Teil 2
Präzise Vorhersage der Rechnerkapazität bei Mehrzweckdiensten Gruppe 5 Modellierungswoche Lambrecht 23. Juni bis 28. Juni 2002.
Der Erotik Kalender 2005.
Analyse der Laufzeit von Algorithmen
Lineare Algebra 11. Matrizen Eine m  n-Matrix ist ein Raster aus m  n Koeffizienten, die in m Zeilen und n Spalten angeordnet sind. = (a ij )
Lineare Algebra Softwareprojekt: Anwendung von Algorithmen Sebastian Kürten, Philipp Borgers SoSe 2010.
 Präsentation transkript:

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 Einführung über die Agenda geben weiterschalten 3

Agenda Theoretische Grundlagen Sequentielle Algorithmen Intuitiver Algorithmus Strassen-Algorithmus Parallele Algorithmen Schleifenparallelisierung Cannon‘s Algorithmus Vergleich der Algorithmen Kritische Würdigung und Ausblick Kurzen Einblick über die Theoretischen Grundlagen 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 Inhaltlich über Sequentielle Algorithmen, kurzer Ausblick auf das Kapitel 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 Inhaltliche Zusammenfassung der Sequentiellen Algorithmen Ausblick auf die Parallelen Algorithmen 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 Erklärung zur Formel!!!!!!!!!! 13

Parallele Algorithmen - Schleifenparallelisierung - Kommunikationszeit Latenzzeit  Übertragung von (n / p) x n aus Matrix B Transaktionszeit  Zeit pro Kommunikationsvorgang:  + (( n / p ) * n ) /  Latenzzeit = Zeit für die Vorbereitung der Übertragung (Nach Fremdwörterbuch auch Inkubationszeit) Transaktionszeit = Byte / Sekunde 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) Latenzzeit = Zeit für die Vorbereitung der Übertragung (Nach Fremdwörterbuch auch Inkubationszeit) Transaktionszeit = Byte / Sekunde 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 - 16

Parallele Algorithmen - Cannon‘s Algorithmus - 16

Parallele Algorithmen - Cannon‘s Algorithmus - 16

Parallele Algorithmen - Cannon‘s Algorithmus - 16

Parallele Algorithmen - Cannon‘s Algorithmus - 16

Parallele Algorithmen - Cannon‘s Algorithmus - 16

Parallele Algorithmen - Cannon‘s Algorithmus - 16

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 Laufzeit immer für quadratische Matrizen 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 Laufzeit immer für quadratische Matrizen 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 *  )) Kommunikationszeit bei Cannon‘s Algorithmus besteht aus Aufteilungszeit und Kommunikationszeit während der Berechnung 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 *  )) Kommunikationszeit bei Cannon‘s Algorithmus besteht aus Aufteilungszeit und Kommunikationszeit während der Berechnung 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 Überblick über Algorithmen der Matrixmultiplikation Ziel Überblick über Algorithmen der Matrixmultiplikation Vergleich sequentieller und paralleler Algorithmen 26

Zusammenfassung Überblick über Algorithmen der Matrixmultiplikation 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 Überblick über Algorithmen der Matrixmultiplikation 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

Quellen Freemann, L.; Philips, C.: Parallel numerical algorithms. Hofer, E.; Lunderstädt, R.: Numerische Methoden der Optimierung. Pacheco, P. S.: Parallel programming with MPI. Quinn, M. J.: Parallel computing: theory and practice. Quinn, M. J.: Prallel programming in C with MPI and OpenMP. Rauber, T.; Rünger, G.: Parallele Programmierung. Schwandt, H.: Parallele Numerik: eine Einführung. Sedgewick, R.: Algorithmen. Sydsæter, K.; Hammond, P.; Böker, F.: Mathematik für Wirtschafts-wissenschaftler. 27