• Keine Ergebnisse gefunden

Hinweise zur Zeitmessung

N/A
N/A
Protected

Academic year: 2021

Aktie "Hinweise zur Zeitmessung"

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Universit¨at Heidelberg Wintersemester 2008/09

Aufgabenblatt 1 21. 10. 2008

Ubungen zur Vorlesung¨

“Paralleles H ¨ochstleisungsrechnen ”

Prof. Dr. P. Bastian, Ch. Engwer Besprechung am 04. 11. 2008 in der ¨Ubung

BUNG1 HIGHPERFORMANCECOMPUTING.

In dieser ¨Ubung wollen wir f ¨ur verschiedene numerische Anwendung (sogenannte “kernel”) auspro- bieren wieviele Rechenoperationen pro Sekunde heute m ¨oglich sind. Implementieren Sie folgende mathematische Operationen:

1. Matrixmultiplikation. Gegeben zwei MatrizenA, B∈Rn×ndann ist das MatrixproduktC =AB gegeben durch

ci,j =

n

X

k=1

ai,kbk.i .

2. Gauß-Seidel 2d. Es seidn=

(i0, . . . , id−1)∈Zd | ∀0≤k < d: 0≤ik< n . F ¨ur die Gitterfunk- tionenum : Ω2n→Rdefiniere die Iteration

um+1(i, j) = 1

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

(i, j)∈[1, n−1]2. 3. Gauß-Seidel 3d. F ¨ur die Gitterfunktionenum: Ω3n→Rdefiniere die Iteration

um+1(α) = 1 26

 X

β∈[0,1]d β6=(0,0,0)

um+1(α−β) +um(α+β)

α ∈[1, n−1]3.

Implementieren Sie diese Operationen in einer Programmiersprache ihrer Wahl mit einer Datenstruk- tur ihrer Wahl (z. B. mehrdimensionale Felder) und bestimmen Sie f ¨ur jede Operation die Anzahl der Fließkommaoperationen aus und ermitteln Sie die Geschwindigkeit des Programmes in “Millionen Fließkommaoperationen pro Sekunde”.

Zur Zeitmessung k ¨onnen Sie die Funktionen, welche in timer.hzur Verf ¨ugung gestellt werden, verwenden. Den header finden Sie auf der Vorlesungshomepage. Hinweise zur Verwendung finden Sie auf der n¨achsten Seite. Bei kleinemn sollten Sie f ¨ur eine genaue Zeitmessung jede Operation mehrmals hintereinander in einer Schleife ausf ¨uhren, um die Messfehler zu verringern.

Vergessen Sie nicht die Felder mit sinnvollen Daten (nicht 0.0) zu initialisieren, 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.

Verbessern Sie die Cachenutzung durch Kacheln und ermitteln Sie die Beschleunigung.

Stellen Sie die Ergebnisse in graphischer Form, d. h. MFLOPS ¨uber Problemgr ¨oße dar. Diskutieren Sie die Form der Kurven, insbesondere warum die MFLOP-Rate wann absinkt. Vergleichen Sie die Ergebnisse von Matrixmultiplikation und Gauß-Seidel-Iteration.

Bei der Gauß-Seidel-Iteration k ¨onnen Sie mit anderen Durchlaufreihenfolgen experimentieren. Z. B.

im 2d-Fall das Schachbrettmuster: Bearbeite zuerst alle Indizes miti+j gerade, dann die miti+j ungerade. Falls m ¨oglich, testen Sie ihre Programme auf verschiedenen Rechnern.

(2)

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 vile Prozesse t¨atig, bekommt der einzelne nur wenig Zeit und n¨auft dementsrechend lange.

Was konstant bleibt ist die sogenannt Prozessorzeit. Diese gibt an, viele Prozessorsekunden das Pro- gramm verbraucht hat. D. h. solange das Pogramm l¨auft tickt die Uhr weiter, wenn das Betriebssy- stem das Programm warten l¨aßt steht die Uhr.

timer.h

Um Ihnen die Arbeit zu erleichtern haben wir f ¨ur Sie eine Haederdatei mit Hilfsbefehlen um die verbrauchte Prozessorzeit auszulesen.

timer.hstellt Ihnen 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

/* Headerfile zur Zeimessung */

#include "timer.h"

int main() {

/* Variable zur Zeitmessung */

struct timeval timer;

/* Z¨ahler zur¨ucksetzen / initialisieren */

reset_timer(&timer);

// ... was tun und Zeit verbrauchen ...

/* Z¨ahler ausgeben */

print_timer(timer);

}

Alle die sich f ¨ur die Interna interessieren k ¨onnen in dem manpage zugetrusage (2)weitere In- formationen finden.

Referenzen

ÄHNLICHE DOKUMENTE

Beweisen Sie, dass die beiden Wahrscheinlichkeitsverteilungen auf bin¨ aren Suchb¨ aumen aus Folie

Zeigen Sie, dass die Menge der nat¨ urlichen Zahlen nicht in der reellen Arithmetik definierbar ist (ohne zu verwenden, dass Th( N , +, ·) unentscheidbar ist).

Schließlich zahlt Großfami- lie Wessenberg f¨ur drei Erwachsene, sieben Studenten und vier Kindern zusammen

(Eigenwerte, Eigenr¨ aume und lineares

• richtige L¨osungswegschritte nach einem Fehler bekommen trotzdem Punkte (sofern passend zur Aufgabe und durch Fehler nicht zu stark

Wie viele M¨oglichkeiten gibt es, 6 gelbe, 5 rote und 7 blaue B¨alle in 6 (unterscheidbare) Schachteln zu geben, sodass jede Schachtel genau 3

Tipp: Falls Sie das Programm am Rechner in einer Datei debug.cc ausprobieren wollen, gibt Ihnen der C++-Compiler mit der Option -Wall Hinweise zu fehlerhaftem Code1. In

(20 Punkte) Ein Astronaut in einem Raumschiff (Inertialsystem I) be- obachtet, wie sich eine Astronautin mit der Geschwindigkeit u in positiver x-Richtung bewegt, w¨ ahrend sich ihr