Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Parallel Programming Parallel Matrix Multiplication

Ähnliche Präsentationen


Präsentation zum Thema: "Parallel Programming Parallel Matrix Multiplication"—  Präsentation transkript:

1 Parallel Programming Parallel Matrix Multiplication

2 Übersicht 1. Nachbesprechung der Übung 4 2. Übungsaufgaben zu Condition Queues und Thread. join () 3. K - Best Measurement 4. Vorbesprechung der Übung 5

3 1. NACHBESPRECHUNG ÜBUNG 4

4 Korrekt, oder? public synchronized int read() throws BufferEmptyException { if(isEmpty = true) { throw new BufferEmptyException(); } else { isEmpty = false; return data; } Vorsicht mit = und == if(condition) besser als if(condition == true) if(!condition) besser als if(condition == false)

5 Diskussion Ist die parallele Version schneller ? Wieviele Threads liefern die beste Performance ? Was ist der Einfluss von CPU - Modell / CPU - Taktfrequenz ?

6 Paralleles Mergesort ,95,2 5,2,1,9

7 Paralleles Mergesort 5,2,1,9 5,2 5 2,5 1,2,5, ,9 = start () = join () run () { … } fork - join

8 Source Code

9 2. CONDITION QUEUES & THREAD.JOIN()

10 Parallel Map Einagbe : Liste von Zahlen Eine Funktion Ausgabe : Liste von Zahlen Wir nehmen Fliesskommazahlen ( double ) und ( Math. sqrt ( x ))

11 Barrier Einzelne Threads dürfen erst forfahren wenn alle anderen an der selben Stelle angelangt sind Kann effizienter sein als fork - join. start () barrier () join ()

12 3. K-BEST MEASUREMENT

13 K-Best Measurement Aus n Messungen, nimmt man die k besten Werte. Wenn sie von einander mehr als ε relative Abweichung haben verwirft man die gesamte Messreihe Sonst nimmt man das Arithmetische Mittel der k besten Werte als Resultat. Wieso reicht eine einzelne Messung nicht ? Wieso reicht das arithmetische Mittel vieler Messungen nicht ? Wieso ist K - Best sinnvoll ?

14 4. VORBESPRECHUNG ÜBUNG 5 Parallel Matrix Multiplication

15 Matrix-Multiplikation Gegeben : Matrizen Gesucht : Matrixprodukt wobei Die Matrizen sind voll besetzt Dünn besetzte Matrizen haben viele Nullelemente. Nur die Nicht - Nullelemente werden gespeichert ( platzsparend aber kompliziert

16 Parallele Matrixmultiplikation Welche Operationen können parallel ausgeführt werden ? = x CAB

17 Matrixmultiplikation programmieren Random rand = new Random(); double[][] a = new double[n][n]; double[][] b = new double[n][n]; double[][] c = new double[n][n]; for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) { a[i][j] = rand.nextDouble(); b[i][j] = rand.nextDouble(); c[i][j] = 0.0; } for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) { for(int k = 0; k < n; k++) { c[i][j] += a[i][k]*b[k][j]; }

18 Parallele Matrixmultiplikation Aufteilung der Daten, basierend auf Eingabematrix A ? Eingabematrix B ? Ausgabematrix C ? Alle Threads können aus A und B lesen C zwischen den Threads aufteilen Vorteil : Kein synchronized nötig. = x CAB

19 Parallele Matrixmultiplikation Jeder Thread berechnet seinen Teil der Ausgabematrix C. Teile C auf in Spalten = x CAB T 1 T 2 T 3 T 4 … … Tn

20 Zwei Threads Thread #1: Spalten 0 bis n /2 Thread #2: Spalten n /2+1 bis n -1 = x CAB T 1 T 2

21 Zwei Threads Thread 1 for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) { for(k = 0; k < n/2; k++) { c[i][j] += a[i][k]*b[k][j]; } Thread 2 for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) { for(k = n/2+1; k < n; k++) { c[i][j] += a[i][k]*b[k][j]; }

22 Andere Aspekte Aufteilen in Spalten oder Zeilen ? = x CAB T 1 T 2 T 3 T 4 … … Tn

23 Reihenfolge der Schleifen ? for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) { for(int k = 0; k < n; k++) { c[i][j] += a[i][k]*b[k][j]; } Oder ? for(int k = 0; i < n; i++) { for(int i = 0; j < n; j++) { for(int j = 0; k < n; k++) { c[i][j] += a[i][k]*b[k][j]; } Oder ?

24 Performance-Messung n t … × 200 × ´ 000 n Matrixgrösse t Anzahl Threads Frage : Wieviele Threads sind optimal ?

25 FRAGEN?


Herunterladen ppt "Parallel Programming Parallel Matrix Multiplication"

Ähnliche Präsentationen


Google-Anzeigen