Anzeige:
Ergebnis 1 bis 4 von 4

Thema: [C/C++] & [MPI] -> Zeiten so genau wie moeglich messen !

  1. #1
    Registrierter Benutzer Avatar von Raute50
    Registriert seit
    08.01.2005
    Ort
    GÖttingen
    Beiträge
    39

    [C/C++] & [MPI] -> Zeiten so genau wie moeglich messen !

    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

  2. #2
    Registrierter Benutzer Avatar von jeebee
    Registriert seit
    01.01.2005
    Ort
    Bern || Zürich
    Beiträge
    540
    anstatt vor-/nachher date aufzurufen, kannst du auch einfach das Programm mit
    Code:
    time programm
    starten. Dann erhältst du nach dem Ausführen real, user und sys Laufzeiten.
    my very own 128 bit integer
    C4 D3 B8 A8 9E A0 C6 EC 7D EC A8 15 28 D1 92 58
    more information

  3. #3
    Registrierter Benutzer Avatar von BLUESCREEN3D
    Registriert seit
    08.11.2002
    Beiträge
    665
    Benutzer- und Systemzeit kannst du innerhalb des Programmes über getrusage() rausfinden.

  4. #4
    Registrierter Benutzer
    Registriert seit
    07.05.2007
    Beiträge
    656
    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:
    Code:
    man time
    man 2 times
    Jan

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •