parallel programming 0024 matrix multiplication spring semester 2010
TRANSCRIPT
![Page 1: Parallel Programming 0024 Matrix Multiplication Spring Semester 2010](https://reader036.vdocuments.site/reader036/viewer/2022062404/55204d7149795902118c3b3f/html5/thumbnails/1.jpg)
Parallel ProgrammingParallel Programming00240024
Matrix MultiplicationMatrix Multiplication
Spring Semester 2010Spring Semester 2010
![Page 2: Parallel Programming 0024 Matrix Multiplication Spring Semester 2010](https://reader036.vdocuments.site/reader036/viewer/2022062404/55204d7149795902118c3b3f/html5/thumbnails/2.jpg)
2
Gesucht
Übungen von- Akousz- Loluca- Lruosch- Predalis- Tobiasho- Zuestm
Webseite:http://www.lantersoft.ch/de/parallelprog/parallelprog.php
![Page 3: Parallel Programming 0024 Matrix Multiplication Spring Semester 2010](https://reader036.vdocuments.site/reader036/viewer/2022062404/55204d7149795902118c3b3f/html5/thumbnails/3.jpg)
3
Parallel matrix multiplication
• Data partitioning based on
• Output matrix C
• Input matrix A and input matrix B
![Page 4: Parallel Programming 0024 Matrix Multiplication Spring Semester 2010](https://reader036.vdocuments.site/reader036/viewer/2022062404/55204d7149795902118c3b3f/html5/thumbnails/4.jpg)
4
Output partitioning (2 threads)
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]; } } }
![Page 5: Parallel Programming 0024 Matrix Multiplication Spring Semester 2010](https://reader036.vdocuments.site/reader036/viewer/2022062404/55204d7149795902118c3b3f/html5/thumbnails/5.jpg)
5
Input partitioning• 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];
} } } }
![Page 6: Parallel Programming 0024 Matrix Multiplication Spring Semester 2010](https://reader036.vdocuments.site/reader036/viewer/2022062404/55204d7149795902118c3b3f/html5/thumbnails/6.jpg)
Overhead ?
A complete row is locked.
Actual lock contention will be moderate to low.
In practice the slow-down (resp to 1st solution) is moderate ( few %)
![Page 7: Parallel Programming 0024 Matrix Multiplication Spring Semester 2010](https://reader036.vdocuments.site/reader036/viewer/2022062404/55204d7149795902118c3b3f/html5/thumbnails/7.jpg)
7
Input partitioning, fine grain locking• 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 dto
• Significant overhead
• About 3 x slower than coarse-grain locking
![Page 8: Parallel Programming 0024 Matrix Multiplication Spring Semester 2010](https://reader036.vdocuments.site/reader036/viewer/2022062404/55204d7149795902118c3b3f/html5/thumbnails/8.jpg)
![Page 9: Parallel Programming 0024 Matrix Multiplication Spring Semester 2010](https://reader036.vdocuments.site/reader036/viewer/2022062404/55204d7149795902118c3b3f/html5/thumbnails/9.jpg)
init(String[] args)
main()init()
main(String[] args)
Eine Java Applikation startet in der Methode
![Page 10: Parallel Programming 0024 Matrix Multiplication Spring Semester 2010](https://reader036.vdocuments.site/reader036/viewer/2022062404/55204d7149795902118c3b3f/html5/thumbnails/10.jpg)
init(String[] args)
main()init()
main(String[] args)
Eine Java Applikation startet in der Methode
![Page 11: Parallel Programming 0024 Matrix Multiplication Spring Semester 2010](https://reader036.vdocuments.site/reader036/viewer/2022062404/55204d7149795902118c3b3f/html5/thumbnails/11.jpg)
t.start()
t.main()t.run()
t.init()
Um einen Thread t parallel zu starten muss welche Methode
aufgerufen werden?
![Page 12: Parallel Programming 0024 Matrix Multiplication Spring Semester 2010](https://reader036.vdocuments.site/reader036/viewer/2022062404/55204d7149795902118c3b3f/html5/thumbnails/12.jpg)
t.start()
t.main()t.run()
t.init()
Um einen Thread t parallel zu starten muss welche Methode
aufgerufen werden?
![Page 13: Parallel Programming 0024 Matrix Multiplication Spring Semester 2010](https://reader036.vdocuments.site/reader036/viewer/2022062404/55204d7149795902118c3b3f/html5/thumbnails/13.jpg)
throw Eiffel();
throw Throwable();throw null;
throw new Object();
Welcher Ausdruck ist in einem throw-Statement erlaubt?
![Page 14: Parallel Programming 0024 Matrix Multiplication Spring Semester 2010](https://reader036.vdocuments.site/reader036/viewer/2022062404/55204d7149795902118c3b3f/html5/thumbnails/14.jpg)
throw Eiffel();
throw Throwable();throw null;
throw new Object();
Welcher Ausdruck ist in einem throw-Statement erlaubt?
![Page 15: Parallel Programming 0024 Matrix Multiplication Spring Semester 2010](https://reader036.vdocuments.site/reader036/viewer/2022062404/55204d7149795902118c3b3f/html5/thumbnails/15.jpg)
BLOCKED
RUNNABLENEW
WAITING
In welchem State ist ein neuer Thread t nach dem Aufruf
t.run()?
![Page 16: Parallel Programming 0024 Matrix Multiplication Spring Semester 2010](https://reader036.vdocuments.site/reader036/viewer/2022062404/55204d7149795902118c3b3f/html5/thumbnails/16.jpg)
BLOCKED
RUNNABLENEW
WAITING
In welchem State ist ein neuer Thread t nach dem Aufruf
t.run()?
![Page 17: Parallel Programming 0024 Matrix Multiplication Spring Semester 2010](https://reader036.vdocuments.site/reader036/viewer/2022062404/55204d7149795902118c3b3f/html5/thumbnails/17.jpg)
Was droht, wenn in einem System notify(), statt
notifyAll() aufgerufen wird?
Starvation
LivelockDeadlock
Race Condition
![Page 18: Parallel Programming 0024 Matrix Multiplication Spring Semester 2010](https://reader036.vdocuments.site/reader036/viewer/2022062404/55204d7149795902118c3b3f/html5/thumbnails/18.jpg)
Was droht, wenn in einem System notify(), statt
notifyAll() aufgerufen wird?
Starvation
LivelockDeadlock
Race Condition
![Page 19: Parallel Programming 0024 Matrix Multiplication Spring Semester 2010](https://reader036.vdocuments.site/reader036/viewer/2022062404/55204d7149795902118c3b3f/html5/thumbnails/19.jpg)
NullPointerException
InterruptedExceptionRuntimeException
IllegalThreadState-Exception
Welche dieser Exceptions ist eine Checked Exception?
![Page 20: Parallel Programming 0024 Matrix Multiplication Spring Semester 2010](https://reader036.vdocuments.site/reader036/viewer/2022062404/55204d7149795902118c3b3f/html5/thumbnails/20.jpg)
NullPointerException
InterruptedExceptionRuntimeException
IllegalThreadState-Exception
Welche dieser Exceptions ist eine Checked Exception?
![Page 21: Parallel Programming 0024 Matrix Multiplication Spring Semester 2010](https://reader036.vdocuments.site/reader036/viewer/2022062404/55204d7149795902118c3b3f/html5/thumbnails/21.jpg)
Nur, wenn sie in einer abstrakt.
Klasse liegt
NeinJa
Nur, wenn sie in einer statischen
Klasse liegt
Kann die main() Methode überschrieben werden?
![Page 22: Parallel Programming 0024 Matrix Multiplication Spring Semester 2010](https://reader036.vdocuments.site/reader036/viewer/2022062404/55204d7149795902118c3b3f/html5/thumbnails/22.jpg)
Nur, wenn sie in einer abstrakt.
Klasse liegt
NeinJa
Nur, wenn sie in einer statischen
Klasse liegt
Kann die main() Methode überschrieben werden?
![Page 23: Parallel Programming 0024 Matrix Multiplication Spring Semester 2010](https://reader036.vdocuments.site/reader036/viewer/2022062404/55204d7149795902118c3b3f/html5/thumbnails/23.jpg)
Volatile Variabeln können von Threads
gecached werden
I.d.R. sollte eher Runnable impl.,
statt Thread erweitert werden
Eine innere Klasse kann von ihrer
äusseren Klasse erben
Java ist auch eine Insel
Welche der folgenden Aussagen ist falsch?
![Page 24: Parallel Programming 0024 Matrix Multiplication Spring Semester 2010](https://reader036.vdocuments.site/reader036/viewer/2022062404/55204d7149795902118c3b3f/html5/thumbnails/24.jpg)
Volatile Variabeln können von Threads
gecached werden
I.d.R. sollte eher Runnable impl.,
statt Thread erweitert werden
Eine innere Klasse kann von ihrer
äusseren Klasse erben
Java ist auch eine Insel
Welche der folgenden Aussagen ist falsch?
![Page 25: Parallel Programming 0024 Matrix Multiplication Spring Semester 2010](https://reader036.vdocuments.site/reader036/viewer/2022062404/55204d7149795902118c3b3f/html5/thumbnails/25.jpg)
Alle non-static Methoden der Klasse werden
gesperrt
Alle Methoden mit synchronized im
Kopf werden gesperrt
Alle Methoden der Klasse werden
gesperrt
Alle non-static Methoden mit
synchronized im Kopf werden
gesperrt
Was bewirkt synchronized(this) { ... }?
![Page 26: Parallel Programming 0024 Matrix Multiplication Spring Semester 2010](https://reader036.vdocuments.site/reader036/viewer/2022062404/55204d7149795902118c3b3f/html5/thumbnails/26.jpg)
Alle non-static Methoden der Klasse werden
gesperrt
Alle Methoden mit synchronized im
Kopf werden gesperrt
Alle Methoden der Klasse werden
gesperrt
Alle non-static Methoden mit
synchronized im Kopf werden
gesperrt
Was bewirkt synchronized(this) { ... }?
![Page 27: Parallel Programming 0024 Matrix Multiplication Spring Semester 2010](https://reader036.vdocuments.site/reader036/viewer/2022062404/55204d7149795902118c3b3f/html5/thumbnails/27.jpg)
34
Wie viele Klassen Arten gibt es?
(private, public, protected, abstract, final, static, ...)
[ohne strictfp]
???
![Page 28: Parallel Programming 0024 Matrix Multiplication Spring Semester 2010](https://reader036.vdocuments.site/reader036/viewer/2022062404/55204d7149795902118c3b3f/html5/thumbnails/28.jpg)
34
Wie viele Klassen Arten gibt es?
(private, public, protected, abstract, final, static, ...)
[ohne strictfp]