Timers

From ScorecWiki

(Difference between revisions)
Jump to: navigation, search
Revision as of 15:03, 7 August 2011
Cwsmith (Talk | contribs)

← Previous diff
Revision as of 15:04, 7 August 2011
Cwsmith (Talk | contribs)
(C/C++)
Next diff →
Line 22: Line 22:
2- MPI_WTime() 2- MPI_WTime()
* May offer a high resolution than 1 second. * May offer a high resolution than 1 second.
- +** MPI_WTick() - query to determine resolution.
-3- MPI_WTick()+
-* can be queried to determine resolution. +
4- getTimeOfDay() and friends (sys/time.h) 4- getTimeOfDay() and friends (sys/time.h)

Revision as of 15:04, 7 August 2011

This page serves as a gateway for information related to computing the elapsed time between two positions in your software.

C/C++

1- cycle counting (rdtsc cycle counter) - source code

  • precise
  • cpu frequency required
    • get the cpu frequency in MHz with
   cat /proc/cpuinfo | grep -i "cpu MHZ" -m 1 | awk '{print $4}'

example code

   #define CPUFREQ <INSERT FREQUENCY IN Hz HERE> 
   unsigned long long start_time = 0;
   unsigned long long finish_time = 0;
   unsigned long long total_time = 0;
   start_time = rdtsc();
   //do stuff
   finish_time = rdtsc();
   total_time = finish_time - start_time;  
   printf ("It took %.8lf seconds.\n", total_time / CPUFREQ );
  • low cost and high resolution

2- MPI_WTime()

  • May offer a high resolution than 1 second.
    • MPI_WTick() - query to determine resolution.

4- getTimeOfDay() and friends (sys/time.h)

  • portable
  • not always precise or accurate
  • may be relatively expensive on IBM BG (compared to cycle counting)

5- time.h/ctime.h functions (Reference : http://www.cppreference.com/wiki/c/date/start )

  • Have a higher resolution than 1 second
  • clock function returns elapsed CPU cycles
  • Needs cpu frequency which may be inaccurate on POSIX compilers
Personal tools