Mercurial > hg > CbC > CbC_gcc
comparison libgomp/testsuite/libgomp.c/ordered-2.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 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:a06113de4d67 |
---|---|
1 /* Trivial test of ordered. */ | |
2 | |
3 /* { dg-require-effective-target sync_int_long } */ | |
4 | |
5 #include <omp.h> | |
6 #include <string.h> | |
7 #include <assert.h> | |
8 #include "libgomp_g.h" | |
9 | |
10 | |
11 #define N 100 | |
12 static int next; | |
13 static int CHUNK, NTHR; | |
14 | |
15 static void clean_data (void) | |
16 { | |
17 next = 0; | |
18 } | |
19 | |
20 static void set_data (long i) | |
21 { | |
22 int n = __sync_fetch_and_add (&next, 1); | |
23 assert (n == i); | |
24 } | |
25 | |
26 | |
27 #define TMPL_1(sched) \ | |
28 static void f_##sched##_1 (void *dummy) \ | |
29 { \ | |
30 long s0, e0, i; \ | |
31 if (GOMP_loop_ordered_##sched##_start (0, N, 1, CHUNK, &s0, &e0)) \ | |
32 do \ | |
33 { \ | |
34 for (i = s0; i < e0; ++i) \ | |
35 { \ | |
36 GOMP_ordered_start (); \ | |
37 set_data (i); \ | |
38 GOMP_ordered_end (); \ | |
39 } \ | |
40 } \ | |
41 while (GOMP_loop_ordered_##sched##_next (&s0, &e0)); \ | |
42 GOMP_loop_end (); \ | |
43 } \ | |
44 static void t_##sched##_1 (void) \ | |
45 { \ | |
46 clean_data (); \ | |
47 GOMP_parallel_start (f_##sched##_1, NULL, NTHR); \ | |
48 f_##sched##_1 (NULL); \ | |
49 GOMP_parallel_end (); \ | |
50 } | |
51 | |
52 TMPL_1(static) | |
53 TMPL_1(dynamic) | |
54 TMPL_1(guided) | |
55 | |
56 static void test (void) | |
57 { | |
58 t_static_1 (); | |
59 t_dynamic_1 (); | |
60 t_guided_1 (); | |
61 } | |
62 | |
63 int main() | |
64 { | |
65 omp_set_dynamic (0); | |
66 | |
67 NTHR = 4; | |
68 | |
69 CHUNK = 1; | |
70 test (); | |
71 | |
72 CHUNK = 5; | |
73 test (); | |
74 | |
75 CHUNK = 7; | |
76 test (); | |
77 | |
78 CHUNK = 0; | |
79 t_static_1 (); | |
80 | |
81 return 0; | |
82 } |