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 http://n.ethz.ch/~klauserc/FS10/PP/

2 Übersicht 1. Nachbesprechung der Übung 5

3 1. NACHBESPRECHUNG ÜBUNG 5

4 Korrekt, oder? int z1 = (int) Math.ceiling(x); //x is int long z2 = (long) Math.ceiling(y); //y is long

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

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

7 Partitionierung der Ausgabe Thread 0 for (i=0; i<N/2; i++) { for (j=0; j<N; j++) { for (k=0; k<N; k++) { c[i][j] += a[i][k]*b[k][j]; } Thread 1 for (i=N/2; i<N; i++) { for (j=0; j<N; j++) { for (k=0; k<N; k++) { c[i][j] += a[i][k]*b[k][j]; }

8 Source Code

9 Partitionierung der Eingabe Thread 0 for (i=0; i<N; i++) { for (j=0; j<N; j++) { synchronized (lock[i][j]) { for (k=0; k<N/2; k++) { c[i][j] += a[i][k]*b[k][j]; } Thread 1 for (i=0; i<N; i++) { for (j=0; j<N; j++) { synchronized (lock[i][j]) { for (k=N/2; k<N; k++) { c[i][j] += a[i][k]*b[k][j]; }

10 Overhead Über eine komplette Zeile locken. Wettstreit um einzelne Zeile in Wirklichkeit gering Nur wenig langsamer als erste Lösung ( wenige %)

11 Partitionierung de Eingabe (Lock über einzelne Elemente) Thread 0 for (i=0; i<N; i++) { for (j=0; j<N; j++) { for (k=0; k<N/2; k++) { synchronized (lock[i][j]) { c[i][j] += a[i][k]*b[k][j]; } Thread 1 ditto Riesiger Overhead ! Etwa 3 x langsamer als Lock über ganze Zeilen

12 FRAGEN?


Herunterladen ppt "Parallel Programming Parallel Matrix Multiplication"

Ähnliche Präsentationen


Google-Anzeigen