PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C/C++] & [MPI] -> Zeiten so genau wie moeglich messen !



Raute50
23-08-2007, 09:54
Salut!

Schreibe gerade an einem C++ Programm und einer parallelisierten Version davon und habe die Aufgabe bekommen, die Zeiten so genau wie moeglich zu messen.
Mir wurden dabei folgende Begriffe an den Kopf geschmissen : Systemzeit, Benutzerzeit und Realzeit,
Sequentiel :
Momentan nutze ich die Funktion clock() aus der timer.h, speichere das Ergebnis in einer Variable elapsed und gebe das Ergebnis in Format elapsed/CLOCKS_PER_SEC aus.
c++.com liefert mir folgende Angabe zu clock():
Returns the number of clock ticks elapsed since the program was launched.

Parallel :
Hier nehme ich die Zeit per MPI_Wtime() und messe ab Anfang bis der letzte Prozessor nicht mehr arbeitet.
Ein MPI-Manual liefert mir:
Returns an elapsed time on the calling processor

Diese Zeitmessung ist fuer meinen Prof jedoch nicht genau genug!

Das Programm war mal ein LiDIA Programm und dort gab es die Funktionen real_time(), user_time() und sys_time().


Meine Frage nun hierzu:
Was ist der genaue Unterschied der Zeiten und wie kann ich sie unter C++ bzw. MPI genau messen ?!
Mir wuerde zunaechst auch erst mal reichen, die Zeiten unter C++ praezise zu messen um zu erahnen, wie viele Prozzessoren ich fuer meine parallele Version benoetige!

Meine momentan Zwischenloesung ist, dass ich beim sequentiellen Programm vor und nach dem Aufruf date aufrufe und die Differenz nehme.
Ziemlich unschoen !!!


In diesem Sinne .... bin ich auf jegliche Reaktion gespannt !!!


'50

jeebee
23-08-2007, 12:16
anstatt vor-/nachher date aufzurufen, kannst du auch einfach das Programm mit
time programm starten. Dann erhältst du nach dem Ausführen real, user und sys Laufzeiten.

BLUESCREEN3D
23-08-2007, 15:40
Benutzer- und Systemzeit kannst du innerhalb des Programmes über getrusage() rausfinden.

jan61
25-08-2007, 10:51
Moin,

sys meint die Zeit, die das Programm im Kernel-Mode war, user die Zeit, die das Programm im User-Mode war. Nähere Infos gibt es hier:
man time
man 2 timesJan