1 / 38

Parallele Programmierung und Parallele Algorithmen : Matrix- Vektor - Multiplikation

Parallele Programmierung und Parallele Algorithmen : Matrix- Vektor - Multiplikation. Agenda. Motivation Grundlagen der Matrix-Vektor-Multiplikation Serieller Algorithmus Parallelisieren: Daten-Dekomposition Parallele Matrix-Vektor-Multiplikations-Algorithmen Zeilenweise Dekomposition

tavita
Download Presentation

Parallele Programmierung und Parallele Algorithmen : Matrix- Vektor - Multiplikation

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ParalleleProgrammierung undParalleleAlgorithmen:Matrix-Vektor-Multiplikation

  2. Agenda • Motivation • Grundlagen der Matrix-Vektor-Multiplikation • Serieller Algorithmus • Parallelisieren: Daten-Dekomposition • Parallele Matrix-Vektor-Multiplikations-Algorithmen • Zeilenweise Dekomposition • Spaltenweise Dekomposition • Blockweise Dekomposition • Benchmarking • Fazit

  3. Motivation • Matrix-Vektor-Multiplikation: • Kernoperation in vielen Berechnungen • In unterschiedlichsten Anwendungsgebieten • Naturwissenschaften, Wirtschaft, Computergrafik, …  Hohe Bedeutung & Häufigkeit • Parallele Datenverarbeitung: • Mehrkernprozessoren bereits im privaten Sektor etabliert  Gegenwart & Zukunft • Parallele Matrix-Vektor-Multiplikation • Höhere Leistung & Effizienz als serieller Ablauf

  4. Agenda • Motivation • Grundlagen der Matrix-Vektor-Multiplikation • Serieller Algorithmus • Parallelisieren: Daten-Dekomposition • Parallele Matrix-Vektor-Multiplikations-Algorithmen • Zeilenweise Dekomposition • Spaltenweise Dekomposition • Blockweise Dekomposition • Benchmarking • Fazit

  5. Grundlagen: Serielle Matrix-Vektor-Multiplikation (1/2) • Matrix-Vektor-Multiplikation: A ∙ x = y • Beispiel: • Ablauf: Folge von Skalarprodukten von Vektor x mit Zeilenvektoren von A Vektor x m x n Matrix A Vektor y m n

  6. Grundlagen: Serielle Matrix-Vektor-Multiplikation (2/2) • Zeitkomplexität: • Skalarprodukt von zwei Vektoren der Länge n: • n Multiplikationen • n-1 Additionen  Θ(n) • Serielle Matrix-Vektor-Multiplikation: • m Skalarprodukte  Θ(m·n), für m = n: Θ(n2)

  7. Agenda • Motivation • Grundlagen der Matrix-Vektor-Multiplikation • Serieller Algorithmus • Parallelisieren: Daten-Dekomposition • Parallele Matrix-Vektor-Multiplikations-Algorithmen • Zeilenweise Dekomposition • Spaltenweise Dekomposition • Blockweise Dekomposition • Benchmarking • Fazit

  8. Grundlagen: Daten-Dekomposition beim Parallelisieren (1/2) • Parallelisieren der Matrix-Vektor-Multiplikation  Dekomposition von m x n Matrix A (und Vektor x) auf p Prozesse • Beispiele für p = 4: • Bestimmt Anzahl benötigter Kommunikations- und Rechenoperationen  Schlüsselentscheidung Zeilenweise Dekomposition Spaltenweise Dekomposition Blockweise Dekomposition

  9. Grundlagen: Daten-Dekomposition beim Parallelisieren (2/2) • Möglichst ausgeglichene Dekomposition  hohe Leistung & Effizienz • Aufteilung von Matrix A in Teilstücke mit: • Zeilenweise: • oder benachbarten Zeilen • Spaltenweise: • oder benachbarten Spalten • Blockweise: • zwischen und großen Matrixblöcken

  10. Agenda • Motivation • Grundlagen der Matrix-Vektor-Multiplikation • Serieller Algorithmus • Parallelisieren: Daten-Dekomposition • Parallele Matrix-Vektor-Multiplikations-Algorithmen • Zeilenweise Dekomposition • Spaltenweise Dekomposition • Blockweise Dekomposition • Benchmarking • Fazit

  11. Parallele Algorithmen: Zeilenweise Dekomposition Algorithmus • Jeder Prozess erhält: • Zusammenhängende Zeilen der Matrix A • Kopie des Vektors x • Hauptschritte des Algorithmus: x 1) Skalarprodukt- berechnung 1. Zeile von A x 1. Zeile von A y1 Prozess 1 x 1. Zeile von A y Prozess 1 2) All-gather- Kommunikation Prozess 1

  12. Parallele Algorithmen: Zeilenweise Dekomposition Implementierung (1/2) Implementierung nach Quinn(2003): • Hauptschritte:

  13. Parallele Algorithmen: Zeilenweise Dekomposition Implementierung (2/2) • Blockvektor replizieren: 1) Gemischte xfer Arrays erzeugen 2) All-gather-Kommunikation

  14. Parallele Algorithmen: Zeilenweise Dekomposition Analyse (1/2) Zeitkomplexität (unter der Annahme m = n): • Kommunikationskomplexität: • All-gather-Kommunikation (in einem Hypercube-Netzwerk  ) • Jeder Prozess sendet Nachrichten (durch paarweisen Datenaustausch zwischen den Prozessen) • Elemente je Nachricht nehmen zu (in Schritt i: Elemente)  Elemente insgesamt 

  15. Parallele Algorithmen: Zeilenweise Dekomposition Analyse (2/2) • Berechnungskomplexität: • Je Prozess höchstens Zeilen • Je Zeile eine Skalarproduktberechnung mit Θ(n)  • Gesamtkomplexität: • Algorithmus ist nicht sehr gut skalierbar!

  16. Agenda • Motivation • Grundlagen der Matrix-Vektor-Multiplikation • Serieller Algorithmus • Parallelisieren: Daten-Dekomposition • Parallele Matrix-Vektor-Multiplikations-Algorithmen • Zeilenweise Dekomposition • Spaltenweise Dekomposition • Blockweise Dekomposition • Benchmarking • Fazit

  17. Parallele Algorithmen: Spaltenweise Dekomposition Algorithmus • Jeder Prozess erhält: • Zusammenhängende Spalten der Matrix A • Zusammenhängende Elemente des Vektors x • Hauptschritte des Algorithmus: 1) Teilskalarprodukt- berechnung 1. Spalte von A x1 Teilskalar- produkte 1. Spalte von A 2) All-to-all- Austausch Prozess 1 x1 Summanden von y1 1. Spalte von A Prozess 1 x1 1. Spalte von A y1 Prozess 1 x1 3) Teil- ergebnisse summieren Prozess 1

  18. Parallele Algorithmen: Spaltenweise Dekomposition Implementierung (1/2) Implementierung nach Quinn(2003): • Hauptschritte:

  19. Parallele Algorithmen: Spaltenweise Dekomposition Implementierung (2/2) • Teilskalarproduktergebnisse verteilen: 1) Gemischte xfer Arrays erzeugen ( Senden) 2) Gleichförmige xfer Arrays erzeugen ( Empfangen) • Wie gemischte xfer Arrays, aber mit gleichen Count Array-Einträgen 3) All-to-all-Kommunikation

  20. Parallele Algorithmen: Spaltenweise Dekomposition Analyse (1/2) Zeitkomplexität (unter der Annahme m = n): • Kommunikationskomplexität: • All-to-all-Kommunikation • Jeder Prozess sendet Nachricht an anderen Prozess  p –1 Nachrichten insgesamt • Jeder Prozesserhält nur die von ihm benötigten Elemente  maximal n Elemente insgesamt 

  21. Parallele Algorithmen: Spaltenweise Dekomposition Analyse (2/2) • Berechnungskomplexität: • Je Prozess höchstens Spalten mit je n Einträgen • Je Spalteneintrag Multiplikation mit Vektorelement  • Gesamtkomplexität: • Algorithmus ist nicht sehr gut skalierbar!

  22. Agenda • Motivation • Grundlagen der Matrix-Vektor-Multiplikation • Serieller Algorithmus • Parallelisieren: Daten-Dekomposition • Parallele Matrix-Vektor-Multiplikations-Algorithmen • Zeilenweise Dekomposition • Spaltenweise Dekomposition • Blockweise Dekomposition • Benchmarking • Fazit

  23. Parallele Algorithmen: Blockweise Dekomposition Algorithmus • Jeder Prozess erhält: • Zusammenhängende Elementblöcke der Matrix A • Zusammenhängende Elemente des Vektors x • Hauptschritte des Algorithmus: 1) Vektor x umver- teilen A x xi xi ai,j ai,j 2) Matrix-Vektor- Multiplikation Teilskalarproduktergebnisse y 3) Summen- Reduzierung

  24. Parallele Algorithmen: Blockweise Dekomposition Implementierung (1/2) Implementierung nach Quinn(2003): • Hauptschritte:

  25. Parallele Algorithmen: Blockweise Dekomposition Implementierung (2/2) • Vektor umverteilen (für quadratisches p):

  26. Parallele Algorithmen: Blockweise Dekomposition Analyse (1/2) Zeitkomplexität (unter den Annahmen m = n und p ist quadratisch): • Kommunikationskomplexität: • Vektor x umverteilen & Summen-Reduzierung: • Jeder Prozess der 1. Spalte sendet Vektorblock ( Elemente) an 1. Zeile-Prozess • Spaltenverteilung & Summen-Reduzierung: je 

  27. Parallele Algorithmen: Blockweise Dekomposition Analyse (2/2) • Berechnungskomplexität: • Je Prozess höchstens Matrixelemente • Je Element Multiplikation mit Vektorelement  • Gesamtkomplexität: • Algorithmus ist besser skalierbar!

  28. Parallele Algorithmen: Vergleichsüberblick • Analysevergleich der drei Algorithmen: • Serieller Algorithmus: Θ(n2) •  Blockweise Dekomposition liefert besten Algorithmus

  29. Agenda • Motivation • Grundlagen der Matrix-Vektor-Multiplikation • Serieller Algorithmus • Parallelisieren: Daten-Dekomposition • Parallele Matrix-Vektor-Multiplikations-Algorithmen • Zeilenweise Dekomposition • Spaltenweise Dekomposition • Blockweise Dekomposition • Benchmarking • Fazit

  30. Benchmarking-Werte nach Quinn(2003) • Benchmarking nach Quinn(2003): • Cluster mit 450 MHz Pentium II Prozessoren • 1.000 x 1.000 Matrix, 100 Durchläufe • Speedupergebnisse: Speedup Prozessoren

  31. Eigene Benchmarking-Werte • Eigenes Benchmarking: • Cluster mit Dual Quad Core Twin Servern mit je zwei 2,1 GHz Quad Core AMD Opteron CPUs • 10.000 x 10.000 Matrix, 50 Durchläufe • Speedupergebnisse: Speedup Prozessoren

  32. Benchmarking-Vergleich • Mögliche Erklärungen: • Anzahl Prozessoren für neue Hardware nicht groß genug • Messfehler

  33. Agenda • Motivation • Grundlagen der Matrix-Vektor-Multiplikation • Serieller Algorithmus • Parallelisieren: Daten-Dekomposition • Parallele Matrix-Vektor-Multiplikations-Algorithmen • Zeilenweise Dekomposition • Spaltenweise Dekomposition • Blockweise Dekomposition • Benchmarking • Fazit

  34. Zusammenfassung & Fazit • Matrix-Vektor-Multiplikation sehr verbreitet & wichtig • Parallelisieren  Daten-Dekomposition: • Zeilenweise Matrix-Dekomposition • Spaltenweise Matrix-Dekomposition • Blockweise Matrix-Dekomposition • Resultierende Algorithmen, deren Analyse & mgl. Implementierung • Benchmarking • Theorie: Blockweise Dekomposition liefert besten Algorithmus • Eigene Praxis: Zeilenweise Dekomposition ebenfalls sehr gut • Abgrenzung: • Parallele Matrix-Vektor-Multiplikation sehr einfach & elementar • Nur vollbesetzte Matrizen (ohne Sonderfall dünnbesetzte Matrizen)

  35. Fragen & Diskussion • Hauptquelle: • Michael J. Quinn: Parallel Programming in C with MPI and OpenMP, McGraw Hill Higher Education, 2003.

  36. Backup: Zeilenweise Dekomposition Analyse • Gesamtkomplexität: • Isoeffizienzfunktion: • Overhead: All-gather-Kommunikation • Für großes n: Eigentliche Kommunikationszeit übersteigt Latenzzeit  Kommunikationskomplexität vereinfacht: Θ(n)  mit , , • Skalierbarkeitsfunktion: • Speicherauslastungsfunktion für n x n Matrix: M(n) = n2   nicht sehr skalierbar!

  37. Backup: Spaltenweise Dekomposition Analyse • Gesamtkomplexität: • Isoeffizienzfunktion: • Overhead: All-to-all-Kommunikation • Für großes n: Eigentliche Kommunikationszeit übersteigt Latenzzeit  Kommunikationskomplexität vereinfacht: Θ(n)  mit , , • Skalierbarkeitsfunktion: • Gleiche Isoeffizienzfunktion wie bei zeilenweiser Dekomposition  Gleiche Skalierbarkeitsfunktion  nicht sehr skalierbar!

  38. Backup: Blockweise Dekomposition Analyse • Gesamtkomplexität: • Isoeffizienzfunktion: • Overhead: Kommunikationskomplexität je Prozessor   mit , • Skalierbarkeitsfunktion:  besser skalierbar!

More Related