Arax -8d09c51940345c86062e8ef2427c705ae66e5926
A Runtime Framework for Decoupling Applications from Heterogeneous Accelerators
Loading...
Searching...
No Matches
timer.h
Go to the documentation of this file.
1#ifndef UTILS_TIMER_H
2#define UTILS_TIMER_H
3
4#include <arax.h>
5#include <unistd.h>
6
13#define utils_timer_set(NAME, WHAT) clock_gettime(CLOCK_REALTIME, &((NAME).WHAT))
14
21#define utils_timer_get_raw(NAME, WHAT) ((NAME).WHAT)
22
30#define utils_timer_set_raw(NAME, WHAT, RAW) (NAME).WHAT = RAW
31
33#define UTILS_TIMER_MS 1000000
35#define UTILS_TIMER_US 1000
37#define UTILS_TIMER_NS 1
38
45#define utils_timer_tv_time(TV, SCALE) \
46 (((TV).tv_sec * (1000000000 / SCALE)) + (TV).tv_nsec / (SCALE))
47
55#define utils_timer_get_time_us(NAME, WHAT) \
56 utils_timer_tv_time((NAME).WHAT, UTILS_TIMER_US)
57
65#define utils_timer_get_time_ns(NAME, WHAT) \
66 utils_timer_tv_time((NAME).WHAT, UTILS_TIMER_NS)
67
73#define utils_timer_get_duration_us(NAME) \
74 (utils_timer_tv_time((NAME).stop, UTILS_TIMER_US) \
75 - utils_timer_tv_time((NAME).start, UTILS_TIMER_US))
76
82#define utils_timer_get_duration_ns(NAME) \
83 (utils_timer_tv_time((NAME).stop, UTILS_TIMER_NS) \
84 - utils_timer_tv_time((NAME).start, UTILS_TIMER_NS)) \
85
86
92#define utils_timer_get_elapsed_us(NAME) \
93 ({ \
94 struct timespec now; \
95 clock_gettime(CLOCK_REALTIME, &now); \
96 utils_timer_tv_time(now, UTILS_TIMER_US) \
97 - utils_timer_get_time_us(NAME, start); \
98 })
99
105#define utils_timer_get_elapsed_ns(NAME) \
106 ({ \
107 struct timespec now; \
108 clock_gettime(CLOCK_REALTIME, &now); \
109 utils_timer_tv_time(now, UTILS_TIMER_NS) \
110 - utils_timer_get_time_ns(NAME, start); \
111 })
112
113#endif // ifndef UTILS_TIMER_H