390 likes | 582 Views
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
E N D
ParalleleProgrammierung undParalleleAlgorithmen:Matrix-Vektor-Multiplikation
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
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
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
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
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)
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
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
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
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
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
Parallele Algorithmen: Zeilenweise Dekomposition Implementierung (1/2) Implementierung nach Quinn(2003): • Hauptschritte:
Parallele Algorithmen: Zeilenweise Dekomposition Implementierung (2/2) • Blockvektor replizieren: 1) Gemischte xfer Arrays erzeugen 2) All-gather-Kommunikation
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
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!
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
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
Parallele Algorithmen: Spaltenweise Dekomposition Implementierung (1/2) Implementierung nach Quinn(2003): • Hauptschritte:
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
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
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!
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
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
Parallele Algorithmen: Blockweise Dekomposition Implementierung (1/2) Implementierung nach Quinn(2003): • Hauptschritte:
Parallele Algorithmen: Blockweise Dekomposition Implementierung (2/2) • Vektor umverteilen (für quadratisches p):
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
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!
Parallele Algorithmen: Vergleichsüberblick • Analysevergleich der drei Algorithmen: • Serieller Algorithmus: Θ(n2) • Blockweise Dekomposition liefert besten Algorithmus
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
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
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
Benchmarking-Vergleich • Mögliche Erklärungen: • Anzahl Prozessoren für neue Hardware nicht groß genug • Messfehler
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
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)
Fragen & Diskussion • Hauptquelle: • Michael J. Quinn: Parallel Programming in C with MPI and OpenMP, McGraw Hill Higher Education, 2003.
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!
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!
Backup: Blockweise Dekomposition Analyse • Gesamtkomplexität: • Isoeffizienzfunktion: • Overhead: Kommunikationskomplexität je Prozessor mit , • Skalierbarkeitsfunktion: besser skalierbar!