-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathwtime.cpp
More file actions
58 lines (44 loc) · 1.45 KB
/
Copy pathwtime.cpp
File metadata and controls
58 lines (44 loc) · 1.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include <omp.h>
#include <stdio.h>
#include <time.h>
#include <unistd.h>
#define THREAD_SLEEP_MICROS 100 * 1000
#define MAIN_SLEEP_MICROS 50 * 1000
double threadTime = 0;
int main(int argc, char* argv[])
{
double mainStart = omp_get_wtime();
#pragma omp parallel num_threads(1) default(none) shared(threadTime)
{
double threadStart = omp_get_wtime();
usleep(THREAD_SLEEP_MICROS);
usleep(50 * 1000);
double threadEnd = omp_get_wtime();
threadTime = threadEnd - threadStart;
}
usleep(MAIN_SLEEP_MICROS);
usleep(50 * 1000);
double mainEnd = omp_get_wtime();
double mainTime = mainEnd - mainStart;
double expectedThreadTime = ((double)THREAD_SLEEP_MICROS) / (1000 * 1000);
double expectedMainTime =
expectedThreadTime + (((double)MAIN_SLEEP_MICROS) / (1000 * 1000));
if (mainTime < expectedMainTime) {
printf("Expected main time to be gte than sleep time (%f < %f)\n",
mainTime,
expectedMainTime);
return 1;
} else if (threadTime < expectedThreadTime) {
printf("Expected thread sleep to be gte than sleep time (%f < %f)\n",
threadTime,
expectedThreadTime);
return 1;
} else {
printf("Times as expected: %f >= %f AND %f >= %f\n",
mainTime,
expectedMainTime,
threadTime,
expectedThreadTime);
return 0;
}
}