parallele programmierung und parallele algorithmen : matrix- vektor - multiplikation

38
Parallele Matrix-Vektor-Multiplikation Annika Biermann Parallele Programmierung und Parallele Algorithmen: Matrix-Vektor-Multiplikation

Upload: justine-watson

Post on 01-Jan-2016

34 views

Category:

Documents


0 download

DESCRIPTION

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 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Parallele Programmierung  und Parallele Algorithmen : Matrix- Vektor - Multiplikation

Parallele Matrix-Vektor-Multiplikation

Annika Biermann

Parallele Programmierung undParallele Algorithmen:

Matrix-Vektor-Multiplikation

Page 2: Parallele Programmierung  und Parallele Algorithmen : Matrix- Vektor - Multiplikation

2

Parallele 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

Page 3: Parallele Programmierung  und Parallele Algorithmen : Matrix- Vektor - Multiplikation

3

Parallele Matrix-Vektor-Multiplikation

Motivation

Matrix-Vektor-Multiplikation:

Kernoperation in vielen Berechnungen

In unterschiedlichsten AnwendungsgebietenNaturwissenschaften, 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

Page 4: Parallele Programmierung  und Parallele Algorithmen : Matrix- Vektor - Multiplikation

4

Parallele 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

Page 5: Parallele Programmierung  und Parallele Algorithmen : Matrix- Vektor - Multiplikation

5

Parallele Matrix-Vektor-Multiplikation

Matrix-Vektor-Multiplikation: A ∙ x = y

Beispiel:

Ablauf: Folge von Skalarprodukten von Vektor x mit Zeilenvektoren von A

Grundlagen: Serielle Matrix-Vektor-Multiplikation (1/2)

m x n Matrix AVektor x

Vektor y

m

n

IN)nm, mit

IR y,IR x,IR(A mnnm

Page 6: Parallele Programmierung  und Parallele Algorithmen : Matrix- Vektor - Multiplikation

6

Parallele Matrix-Vektor-Multiplikation

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)

Page 7: Parallele Programmierung  und Parallele Algorithmen : Matrix- Vektor - Multiplikation

7

Parallele 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

Page 8: Parallele Programmierung  und Parallele Algorithmen : Matrix- Vektor - Multiplikation

8

Parallele Matrix-Vektor-Multiplikation

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

ZeilenweiseDekomposition

SpaltenweiseDekomposition

BlockweiseDekomposition

Page 9: Parallele Programmierung  und Parallele Algorithmen : Matrix- Vektor - Multiplikation

9

Parallele Matrix-Vektor-Multiplikation

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

pm

pm

pn

pn

p

n

p

m

p

n

p

m

Page 10: Parallele Programmierung  und Parallele Algorithmen : Matrix- Vektor - Multiplikation

10

Parallele 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

Page 11: Parallele Programmierung  und Parallele Algorithmen : Matrix- Vektor - Multiplikation

11

Parallele Matrix-Vektor-Multiplikation

Parallele Algorithmen: Zeilenweise Dekomposition

Jeder Prozess erhält:

Zusammenhängende Zeilen der Matrix A

Kopie des Vektors x

Hauptschritte des Algorithmus:

Algorithmus

1. Zeile von A

1. Zeile von A

1. Zeile von A

x

x

xy

y1

Prozess 1

Prozess 1

Prozess 1

1) Skalarprodukt-berechnung

2) All-gather-Kommunikation

Page 12: Parallele Programmierung  und Parallele Algorithmen : Matrix- Vektor - Multiplikation

12

Parallele Matrix-Vektor-Multiplikation

Parallele Algorithmen: Zeilenweise Dekomposition

Implementierung nach QUINN(2003):

Hauptschritte:

Implementierung (1/2)

Page 13: Parallele Programmierung  und Parallele Algorithmen : Matrix- Vektor - Multiplikation

13

Parallele Matrix-Vektor-Multiplikation

Blockvektor replizieren:

1) Gemischte xfer Arrays erzeugen

2) All-gather-Kommunikation

Parallele Algorithmen: Zeilenweise DekompositionImplementierung (2/2)

Page 14: Parallele Programmierung  und Parallele Algorithmen : Matrix- Vektor - Multiplikation

14

Parallele Matrix-Vektor-Multiplikation

Parallele Algorithmen: Zeilenweise Dekomposition

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

Analyse (1/2)

n p logΘ

IN x ,2 p x

p log2

pn

2 1i-

p

1)(pn

p

n 2

p log

1i

1-i2

Page 15: Parallele Programmierung  und Parallele Algorithmen : Matrix- Vektor - Multiplikation

15

Parallele Matrix-Vektor-Multiplikation

Berechnungskomplexität:

Je Prozess höchstens Zeilen

Je Zeile eine Skalarproduktberechnung mit Θ(n)

Gesamtkomplexität:

Algorithmus ist nicht sehr gut skalierbar!

Parallele Algorithmen: Zeilenweise DekompositionAnalyse (2/2)

n p log

pn

Θ2

pn

pn

Θ pn

nΘ2

Page 16: Parallele Programmierung  und Parallele Algorithmen : Matrix- Vektor - Multiplikation

16

Parallele 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

Page 17: Parallele Programmierung  und Parallele Algorithmen : Matrix- Vektor - Multiplikation

17

Parallele Matrix-Vektor-Multiplikation

Parallele Algorithmen: Spaltenweise DekompositionAlgorithmus

Jeder Prozess erhält:

Zusammenhängende Spalten der Matrix A

Zusammenhängende Elemente des Vektors x

Hauptschritte des Algorithmus:

Prozess 1

Prozess 1

Prozess 1

Prozess 1

1. Spalte von A

1. Spalte von A

1. Spalte von A

1. Spalte von A

x1

x1

x1

x1

Teilskalar-produkte

Summandenvon y1

y1

1) Teilskalarprodukt-berechnung

2) All-to-all-Austausch

3) Teil-ergebnissesummieren

Page 18: Parallele Programmierung  und Parallele Algorithmen : Matrix- Vektor - Multiplikation

18

Parallele Matrix-Vektor-Multiplikation

Parallele Algorithmen: Spaltenweise Dekomposition

Implementierung nach QUINN(2003):

Hauptschritte:

Implementierung (1/2)

Page 19: Parallele Programmierung  und Parallele Algorithmen : Matrix- Vektor - Multiplikation

19

Parallele Matrix-Vektor-Multiplikation

Parallele Algorithmen: Spaltenweise Dekomposition

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

Implementierung (2/2)

Page 20: Parallele Programmierung  und Parallele Algorithmen : Matrix- Vektor - Multiplikation

20

Parallele Matrix-Vektor-Multiplikation

Parallele Algorithmen: Spaltenweise Dekomposition

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 Prozess erhält nur die von ihm benötigten Elemente maximal n Elemente insgesamt

Analyse (1/2)

n) Θ(p

Page 21: Parallele Programmierung  und Parallele Algorithmen : Matrix- Vektor - Multiplikation

21

Parallele Matrix-Vektor-Multiplikation

Parallele Algorithmen: Spaltenweise DekompositionAnalyse (2/2)

p n

pn

Θ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!

pn

pn

Θ pn

nΘ2

Page 22: Parallele Programmierung  und Parallele Algorithmen : Matrix- Vektor - Multiplikation

22

Parallele 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

Page 23: Parallele Programmierung  und Parallele Algorithmen : Matrix- Vektor - Multiplikation

23

Parallele Matrix-Vektor-Multiplikation

Parallele Algorithmen: Blockweise DekompositionAlgorithmus

Jeder Prozess erhält:

Zusammenhängende Elementblöcke der Matrix A

Zusammenhängende Elemente des Vektors x

Hauptschritte des Algorithmus:

x A ai,jxi ai,j

xi

Teilskalarproduktergebnisse

y

1) Vektor x umver-teilen

2) Matrix-Vektor-Multiplikation

3) Summen-Reduzierung

Page 24: Parallele Programmierung  und Parallele Algorithmen : Matrix- Vektor - Multiplikation

24

Parallele Matrix-Vektor-Multiplikation

Parallele Algorithmen: Blockweise Dekomposition

Implementierung nach QUINN(2003):

Hauptschritte:

Implementierung (1/2)

Page 25: Parallele Programmierung  und Parallele Algorithmen : Matrix- Vektor - Multiplikation

25

Parallele Matrix-Vektor-Multiplikation

Parallele Algorithmen: Blockweise Dekomposition

Vektor umverteilen (für quadratisches p):

Implementierung (2/2)

Page 26: Parallele Programmierung  und Parallele Algorithmen : Matrix- Vektor - Multiplikation

26

Parallele Matrix-Vektor-Multiplikation

Parallele Algorithmen: Blockweise Dekomposition

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

Analyse (1/2)

p

n

p

n p logΘ

p

p log nΘ

Page 27: Parallele Programmierung  und Parallele Algorithmen : Matrix- Vektor - Multiplikation

27

Parallele Matrix-Vektor-Multiplikation

Berechnungskomplexität:

Je Prozess höchstens Matrixelemente

Je Element Multiplikation mit Vektorelement

Gesamtkomplexität:

Algorithmus ist besser skalierbar!

Parallele Algorithmen: Blockweise DekompositionAnalyse (2/2)

p

p log n

pn

Θ2

p

n

p

n

pn

Θ p

n

p

2

Page 28: Parallele Programmierung  und Parallele Algorithmen : Matrix- Vektor - Multiplikation

28

Parallele Matrix-Vektor-Multiplikation

Analysevergleich der drei Algorithmen:

Serieller Algorithmus: Θ(n2)

Blockweise Dekomposition liefert besten Algorithmus

Parallele Algorithmen: Vergleichsüberblick

Zeilenweise Spaltenweise Blockweise

Zeit-

komplexität

nicht gut skalierbar nicht gut skalierbar besser skalierbar

p

p log np

2

n p

pn

Θ2

np log

pn

Θ2

Page 29: Parallele Programmierung  und Parallele Algorithmen : Matrix- Vektor - Multiplikation

29

Parallele 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

Page 30: Parallele Programmierung  und Parallele Algorithmen : Matrix- Vektor - Multiplikation

30

Parallele Matrix-Vektor-Multiplikation

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:

0 1 2 3 4 5 6 7 8 9 101112131415160

2

4

6

8

10

12

14

16

Zeilenweise

Spaltenweise

Blockweise

Speedup

Prozessoren

Page 31: Parallele Programmierung  und Parallele Algorithmen : Matrix- Vektor - Multiplikation

31

Parallele Matrix-Vektor-Multiplikation

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:

0 1 2 3 4 5 6 7 8 9 101112131415160

2

4

6

8

10

12

14

16

ZeilenweiseSpaltenweiseBlockweise

Speedup

Prozessoren

Page 32: Parallele Programmierung  und Parallele Algorithmen : Matrix- Vektor - Multiplikation

32

Parallele Matrix-Vektor-Multiplikation

Benchmarking-Vergleich

Mögliche Erklärungen:Anzahl Prozessoren für neue Hardware nicht groß genug

Messfehler

QUINN(2003) Eigene Werte

Beste

Implementierung

Blockweise

Dekomposition

Zeilen- und blockweise

Dekomposition

Schlechteste

Implementierung

Zeilen- und spaltenweise

Dekomposition

Spaltenweise

Dekomposition

Page 33: Parallele Programmierung  und Parallele Algorithmen : Matrix- Vektor - Multiplikation

33

Parallele 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

Page 34: Parallele Programmierung  und Parallele Algorithmen : Matrix- Vektor - Multiplikation

34

Parallele Matrix-Vektor-Multiplikation

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)

Page 35: Parallele Programmierung  und Parallele Algorithmen : Matrix- Vektor - Multiplikation

35

Parallele Matrix-Vektor-Multiplikation

Fragen & Diskussion

Hauptquelle:

Michael J. Quinn: Parallel Programming in C with MPI and OpenMP, McGraw Hill Higher Education, 2003.

Page 36: Parallele Programmierung  und Parallele Algorithmen : Matrix- Vektor - Multiplikation

36

Parallele Matrix-Vektor-Multiplikation

Backup: Zeilenweise DekompositionAnalyse

n p log

pn

Θ2

Gesamtkomplexität:

Isoeffizienzfunktion:

Overhead: All-gather-KommunikationFür großes n: Eigentliche Kommunikationszeit übersteigt Latenzzeit

Kommunikationskomplexität vereinfacht: Θ(n)

mit , ,

Skalierbarkeitsfunktion:

Speicherauslastungsfunktion für n x n Matrix: M(n) = n2

pC n npC n2 Effizienz 1

Effizienz C

pSpeedup

Effizienz

us Algorithmparalleler Laufzeitus Algorithmserieller Laufzeit

Speedup

pC ppC

p

p)M(C 222

nicht sehr skalierbar!

Page 37: Parallele Programmierung  und Parallele Algorithmen : Matrix- Vektor - Multiplikation

37

Parallele Matrix-Vektor-Multiplikation

Backup: Spaltenweise DekompositionAnalyse

p n

pn

Θ2

Gesamtkomplexität:

Isoeffizienzfunktion:

Overhead: All-to-all-KommunikationFür großes n: Eigentliche Kommunikationszeit übersteigt Latenzzeit

Kommunikationskomplexität vereinfacht: Θ(n)

mit , ,

Skalierbarkeitsfunktion:

Gleiche Isoeffizienzfunktion wie bei zeilenweiser Dekomposition

Gleiche Skalierbarkeitsfunktion

pC n npC n2 Effizienz 1

Effizienz C

pSpeedup

Effizienz

us Algorithmparalleler Laufzeitus Algorithmserieller Laufzeit

Speedup

nicht sehr skalierbar!

Page 38: Parallele Programmierung  und Parallele Algorithmen : Matrix- Vektor - Multiplikation

38

Parallele Matrix-Vektor-Multiplikation

Backup: Blockweise DekompositionAnalyse

Gesamtkomplexität:

Isoeffizienzfunktion:

Overhead: Kommunikationskomplexität je Prozessor

mit ,

Skalierbarkeitsfunktion:

p log p C n p log p n C n22

2 Effizienz 1

Effizienz C

, p

Speedup Effizienz

us Algorithmparalleler Laufzeitus Algorithmserieller Laufzeit

Speedup

besser skalierbar!

p

p log n

pn

Θ2

p log p p p

p log n2

2

p log C p

p log p C

p

p) logpM(C 22

222

22