Timers
From ScorecWiki
(Difference between revisions)
Revision as of 13:33, 21 October 2010 Cwsmith (Talk | contribs) ← Previous diff |
Current revision Cwsmith (Talk | contribs) |
||
Line 1: | Line 1: | ||
This page serves as a gateway for information related to computing the elapsed time between two positions in your software. | This page serves as a gateway for information related to computing the elapsed time between two positions in your software. | ||
- | ==C/C++== | + | ==cycle counting (rdtsc cycle counter)== |
+ | * [http://www.mcs.anl.gov/~kazutomo/rdtsc.html source code] | ||
+ | * precise | ||
+ | * cpu frequency required | ||
+ | ** get the cpu frequency in MHz with <code> | ||
+ | cat /proc/cpuinfo | grep -i "cpu MHZ" -m 1 | awk '{print $4}'</code> | ||
+ | example code <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 );</code> | ||
+ | * low cost and high resolution | ||
- | 1- cycle counting (rdtsc cycle counter) - [http://www.mcs.anl.gov/~kazutomo/rdtsc.html source code] | + | ==MPI_WTime()== |
- | * precise (CS) | + | * May offer a high resolution than 1 second. |
- | * cpu frequency required | + | ** MPI_WTick() - query to determine resolution. |
- | * low cost and resolution (OS) | + | |
- | 2- MPI_WTime() | + | ==getTimeOfDay() and friends (sys/time.h)== |
- | * May offer a high resolution than 1 second.(CS) | + | * portable |
+ | * not always precise or accurate | ||
+ | * may be relatively expensive on IBM BG (compared to cycle counting) | ||
- | 3- MPI_WTick() | + | ==time.h/ctime.h functions == |
- | * can be queried to determine resolution. (CS) | + | * [http://www.cppreference.com/wiki/c/date/start Reference] |
- | + | * Have a higher resolution than 1 second | |
- | 4- getTimeOfDay() and friends (sys/time.h) | + | * clock function returns elapsed CPU cycles |
- | * portable (BM) | + | * Needs cpu frequency which may be inaccurate on POSIX compilers |
- | * not always precise or accurate (BM) | + | |
- | * may be relatively expensive on IBM BG (compared to cycle counting) (OS) | + | |
- | + | ||
- | 5- time.h/ctime.h functions (Reference : http://www.cppreference.com/wiki/c/date/start ) | + | |
- | * Have a higher resolution than 1 second (CS) | + | |
- | * clock function returns elapsed CPU cycles (CS) | + | |
- | * Needs cpu frequency which may be inaccurate on POSIX compilers (CS) | + | |
- | + | ||
- | Note: Feel free to make corrections -- MM | + | |
[[Category:Tutorials]] | [[Category:Tutorials]] | ||
[[Category:Software]] | [[Category:Software]] |
Current revision
This page serves as a gateway for information related to computing the elapsed time between two positions in your software.
Contents |
[edit]
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
[edit]
MPI_WTime()
- May offer a high resolution than 1 second.
- MPI_WTick() - query to determine resolution.
[edit]
getTimeOfDay() and friends (sys/time.h)
- portable
- not always precise or accurate
- may be relatively expensive on IBM BG (compared to cycle counting)
[edit]
time.h/ctime.h functions
- Reference
- Have a higher resolution than 1 second
- clock function returns elapsed CPU cycles
- Needs cpu frequency which may be inaccurate on POSIX compilers