Mercurial > hg > CbC > CbC_gcc
comparison libgomp/testsuite/libgomp.c/lib-1.c @ 0:a06113de4d67
first commit
author | kent <kent@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 17 Jul 2009 14:47:48 +0900 |
parents | |
children | 04ced10e8804 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:a06113de4d67 |
---|---|
1 #include <stdlib.h> | |
2 #include <omp.h> | |
3 | |
4 int | |
5 main (void) | |
6 { | |
7 double d, e; | |
8 int l; | |
9 omp_lock_t lck; | |
10 omp_nest_lock_t nlck; | |
11 | |
12 d = omp_get_wtime (); | |
13 | |
14 omp_init_lock (&lck); | |
15 omp_set_lock (&lck); | |
16 if (omp_test_lock (&lck)) | |
17 abort (); | |
18 omp_unset_lock (&lck); | |
19 if (! omp_test_lock (&lck)) | |
20 abort (); | |
21 if (omp_test_lock (&lck)) | |
22 abort (); | |
23 omp_unset_lock (&lck); | |
24 omp_destroy_lock (&lck); | |
25 | |
26 omp_init_nest_lock (&nlck); | |
27 if (omp_test_nest_lock (&nlck) != 1) | |
28 abort (); | |
29 omp_set_nest_lock (&nlck); | |
30 if (omp_test_nest_lock (&nlck) != 3) | |
31 abort (); | |
32 omp_unset_nest_lock (&nlck); | |
33 omp_unset_nest_lock (&nlck); | |
34 if (omp_test_nest_lock (&nlck) != 2) | |
35 abort (); | |
36 omp_unset_nest_lock (&nlck); | |
37 omp_unset_nest_lock (&nlck); | |
38 omp_destroy_nest_lock (&nlck); | |
39 | |
40 omp_set_dynamic (1); | |
41 if (! omp_get_dynamic ()) | |
42 abort (); | |
43 omp_set_dynamic (0); | |
44 if (omp_get_dynamic ()) | |
45 abort (); | |
46 | |
47 omp_set_nested (1); | |
48 if (! omp_get_nested ()) | |
49 abort (); | |
50 omp_set_nested (0); | |
51 if (omp_get_nested ()) | |
52 abort (); | |
53 | |
54 omp_set_num_threads (5); | |
55 if (omp_get_num_threads () != 1) | |
56 abort (); | |
57 if (omp_get_max_threads () != 5) | |
58 abort (); | |
59 if (omp_get_thread_num () != 0) | |
60 abort (); | |
61 omp_set_num_threads (3); | |
62 if (omp_get_num_threads () != 1) | |
63 abort (); | |
64 if (omp_get_max_threads () != 3) | |
65 abort (); | |
66 if (omp_get_thread_num () != 0) | |
67 abort (); | |
68 l = 0; | |
69 #pragma omp parallel reduction (|:l) | |
70 { | |
71 l = omp_get_num_threads () != 3; | |
72 l |= omp_get_thread_num () < 0; | |
73 l |= omp_get_thread_num () >= 3; | |
74 #pragma omp master | |
75 l |= omp_get_thread_num () != 0; | |
76 } | |
77 if (l) | |
78 abort (); | |
79 | |
80 if (omp_get_num_procs () <= 0) | |
81 abort (); | |
82 if (omp_in_parallel ()) | |
83 abort (); | |
84 #pragma omp parallel reduction (|:l) | |
85 l = ! omp_in_parallel (); | |
86 #pragma omp parallel reduction (|:l) if (1) | |
87 l = ! omp_in_parallel (); | |
88 | |
89 e = omp_get_wtime (); | |
90 if (d > e) | |
91 abort (); | |
92 d = omp_get_wtick (); | |
93 /* Negative precision is definitely wrong, | |
94 bigger than 1s clock resolution is also strange. */ | |
95 if (d <= 0 || d > 1) | |
96 abort (); | |
97 | |
98 return 0; | |
99 } |