Timers
From ScorecWiki
(Difference between revisions)
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
- 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