• Keine Ergebnisse gefunden

Hinweise zur Zeitmessung

N/A
N/A
Protected

Academic year: 2021

Aktie "Hinweise zur Zeitmessung"

Copied!
3
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

IWR, Universit¨at Heidelberg Wintersemester 2013/14

Aufgabenblatt 2 31. Oktober 2013

Ubungen zur Vorlesung¨

Paralleles H¨ochstleistungsrechnen Dr. S. Lang

Abgabe: 7. November 2013 in der ¨Ubung

Ubung 3¨ C++-Einf¨uhrung: Debugging (5 Punkte)

Das folgende Programm soll alle nat¨urlichen Zahlen von gegebenena∈Rbis b∈Rsummieren:

1 # i n c l u d e < i o s t r e a m >

2

3 // s u m s all n a t u r a l n u m b e r s in [ a , b ]

4 int sum (int a , int b )

5 {

6 int r e s u l t ;

7 for (int i = a ; i <= b ; i ++)

8 {

9 int r e s u l t = r e s u l t + i ;

10 }

11

12 r e t u r n 0 ;

13 }

14

15 int m a i n ()

16 {

17 std :: c o u t < < sum (1 , 10) < < std :: e n d l ;

18 r e t u r n 0 ;

19 }

Obwohl das Programm syntaktisch korrekt ist, berechnet es ein falsches Ergebnis. Finden Sie die Fehler und korrigieren Sie diese, ohne das Programm logisch zu ver¨andern. Tipp: Falls Sie das Programm am Rechner in einer Dateidebug.ccausprobieren wollen, gibt Ihnen der C++-Compiler mit der Option -WallHinweise zu fehlerhaftem Code. In der Kommandozeile ¨ubersetzen:g++ -Wall debug.cc.

Ubung 4¨ Messen von MFLOPS (15 Punkte)

In dieser ¨Ubung wollen wir f¨ur zwei numerische Anwendungen ausprobieren, wieviele Rechenope- rationen pro Sekunde auf den Poolrechnern m¨oglich sind. Dazu wollen wir folgende mathematische Operationen implementieren:

1. Matrix-Multiplikation.

Es seien zwei Matrizen A, B ∈Rn×n gegeben. Dann ist das Matrixprodukt C =AB wiederum eine MatrixC∈Rn×n mit den Eintr¨agen:

cij =

n

X

k=1

aikbkj.

2. Gauß-Seidel 2d.

Es sei ein Gebiet indDimensionen definiert ¨uber Ωdn=n

(i0, . . . , id−1)∈Zd | ∀0≤k < d,0≤ik< no .

In 2Dw¨are dies zum Beispiel ein Netz mitn2 Punkten. Wir wollen ein Gitter mit ¨aquidistanten Punkten w¨ahlen, d. h. Ω = [0, n−1]2. Auf diesem Gitter sei eine Gitterfunktionenum : Ω2n→R gegeben. F¨ur diese definiert die Iterationsvorschrift

um+1(i, j) = 1 4

n

um+1(i−1, j) +um+1(i, j−1) +um(i, j+ 1) +um(i+ 1, j)o

(i, j)∈[0, n−1]2 die sogenannte Gauss-Seidel-Iteration.

(2)

Teilaufgabe (a) (5 Punkte) Implementieren Sie die Matrix-Multiplikation in der Programmiersprache C/C++ und verwenden Sie f¨ur die Matrizen eine beliebige Datenstruktur ihrer Wahl (z. B. eindimensionale oder zweidimensio- nale Felder oder std::vector). Bestimmen Sie die Anzahl der Fließkomma-Operationen und ermit- teln Sie daraus und aus der gemessenen Laufzeit die Geschwindigkeit des Programms in

”Millionen Fließkomma-Operationen pro Sekunde“.

Zur Zeitmessung k¨onnen Sie die Funktionen aus timer.h verwenden. Den Header finden Sie auf der Vorlesungs-Homepage, Hinweise zur Verwendung am Ende des ¨Ubungsblattes. Achten Sie darauf, daß Sie die Problemgr¨oßenso groß w¨ahlen, daß die Zeitmessung nicht durch Zeitmessfehler verf¨alscht wird, im Pool etwa n ≥ 1000. Initialisieren Sie die Felder mit sinnvollen Daten (nicht 0.0), z. B.

u(i, j) =i+j.

Ubersetzen Sie das Programm mit maximaler Optimierungsstufe. F¨¨ ur den GNU C/C++Compiler ist etwa-O3 -funroll-loopsempfehlenswert.

Stellen Sie alle Ergebnisse in graphischer Form, MFLOPS ¨uber Problemgr¨oße n dar. Diskutieren Sie die Form der Kurven, insbesondere warum die MFLOP-Rate wann absinkt. Zur graphischen Dar- stellung eignet sich das auch im Pool installierte Programm gnuplot.

Teilaufgabe (b) (5 Punkte)

Wiederholen Sie die Untersuchungen aus Teilaufgabe (b) f¨ur das Gauss-Seidel-Verfahren.

Teilaufgabe (c) (5 Punkte)

F¨uhren Sie f¨ur die Matrix-Multiplikation eine bessere Cache-Nutzung durch Kachelung ein, wie in der Vorlesung besprochen, und ermitteln Sie die Beschleunigung f¨ur verschiedene Kachelgr¨oßen.

Hinweise zur Zeitmessung

Die verschiedenen Zeiten

Bei der Zeitmessung am Computer ergibt sich das Problem, dass die Zeit, die ein Programm ben¨otigt, von der Auslastung des Systems abh¨angt. Sind viele Prozesse t¨atig, bekommt der einzelne nur wenig Zeit und l¨auft dementsprechend lange. Die Prozessorzeit gibt hingegen an, wieviele Prozessorsekunden das Programm verbraucht hat. Die Uhr tickt, solange das Pogramm l¨auft, wenn das Betriebssystem das Programm warten l¨aßt, steht sie.

timer.h

In der Headerdateitimer.hsind einige Hilfsfunktionen implementiert, die die verbrauchte Prozessor- zeit auslesen. Sie stellt drei Befehle zur Verf¨ugung:

• void reset_timer(struct timeval* timer): Z¨ahler zur¨ucksetzen/initialisieren.

• double get_timer(struct timeval timer): verbrauchte Sekunden auslesen.

• void print_timer(struct timeval timer): verbrauchte Sekunden ausgeben.

Beispiel

1 # i n c l u d e " t i m e r . h " // H e a d e r f i l e zur Z e i m e s s u n g

2

3 int m a i n ()

4 {

5 s t r u c t t i m e v a l t i m e r ; // V a r i a b l e zur Z e i t m e s s u n g

6 r e s e t _ t i m e r (& t i m e r ) ; // Z a e h l e r z u r u e c k s e t z e n / i n i t i a l i s i e r e n

7 ... // Was tun und Z e i t v e r b r a u c h e n

8 p r i n t _ t i m e r ( t i m e r ) ; // Z a e h l e r a u s g e b e n

(3)

9 }

Mehr ¨uber die Interna der Zeitmessung kann in der manpage zugetrusage (2)weitere Informationen nachgelesen werden.

Referenzen

ÄHNLICHE DOKUMENTE

Zu diesem Zweck müssen die Dateien zunächst heruntergeladen, auf dem Rechner gespeichert und dann mit einem entsprechenden Programm geöffnet werden

• Für Fragen, Hinweise und Ergänzungen sowie für die Unterstützung zur Erstellung von weiteren Arbeitshilfen für bestimmte verkehrlichen Situationen steht die Unfallkasse NRW

Gebietsspezische Hinweise f Hinweise f Hinweise f Hinweise füüüür das r das r das FFH r das FFH FFH----Gebiet FFH Gebiet Gebiet „„„„Mittlerer Schwarzwald bei Hornberg

Wenn Sie im Rahmen Ihres Studiums im Bereich „Pädagogik und Bildung“ Texte verfassen, sind Sie aufge- fordert zu zeigen, dass Sie ein pädagogisch relevantes

Die Pfade, unter denen diese Bilder und Dokumente gespeichert werden, scheinen nach dem Import in einer Meldung von GRAMPS auf. Man kann die Speicherorte der Bilder und

Mit dem Antrag wird die Ausstellung einer Verbrauchsteuerbescheinigung für kleine unabhängige Erzeuger alkoholischer Getränke (Verbrauchsteuerbescheinigung) beantragt gemäß

Durch das PROMOS-Programm werden Studierende gefördert, die sich durch sehr gute Leistungen im Studium, aber ebenso durch extra-curriculares Engagement oder ein

Das HMRC hatte bereits Anfang Februar in einer Guidance darauf hingewiesen, dass Vergütungsanträge für 2018 bis 17:00 Uhr am 29.03.2019 über das britische Portal