0
|
1 #include <omp.h>
|
|
2 #include <stdlib.h>
|
|
3 #include <string.h>
|
|
4
|
|
5 int
|
|
6 test1 ()
|
|
7 {
|
|
8 short int buf[64], *p;
|
|
9 int i;
|
|
10 memset (buf, '\0', sizeof (buf));
|
|
11 #pragma omp parallel for
|
|
12 for (p = &buf[10]; &buf[54] > p; p++)
|
|
13 *p = 5;
|
|
14 for (i = 0; i < 64; i++)
|
|
15 if (buf[i] != 5 * (i >= 10 && i < 54))
|
|
16 abort ();
|
|
17 memset (buf, '\0', sizeof (buf));
|
|
18 #pragma omp parallel for
|
|
19 for (p = &buf[3]; &buf[63] >= p; p += 2)
|
|
20 p[-2] = 6;
|
|
21 for (i = 0; i < 64; i++)
|
|
22 if (buf[i] != 6 * ((i & 1) && i <= 61))
|
|
23 abort ();
|
|
24 memset (buf, '\0', sizeof (buf));
|
|
25 #pragma omp parallel for
|
|
26 for (p = &buf[16]; &buf[51] > p; p = 4 + p)
|
|
27 p[2] = 7;
|
|
28 for (i = 0; i < 64; i++)
|
|
29 if (buf[i] != 7 * ((i & 3) == 2 && i >= 18 && i < 53))
|
|
30 abort ();
|
|
31 memset (buf, '\0', sizeof (buf));
|
|
32 #pragma omp parallel for
|
|
33 for (p = &buf[16]; &buf[40] >= p; p = p + 4ULL)
|
|
34 p[2] = -7;
|
|
35 for (i = 0; i < 64; i++)
|
|
36 if (buf[i] != -7 * ((i & 3) == 2 && i >= 18 && i <= 42))
|
|
37 abort ();
|
|
38 memset (buf, '\0', sizeof (buf));
|
|
39 #pragma omp parallel for
|
|
40 for (p = &buf[53]; &buf[9] < p; --p)
|
|
41 *p = 5;
|
|
42 for (i = 0; i < 64; i++)
|
|
43 if (buf[i] != 5 * (i >= 10 && i < 54))
|
|
44 abort ();
|
|
45 memset (buf, '\0', sizeof (buf));
|
|
46 #pragma omp parallel for
|
|
47 for (p = &buf[63]; &buf[3] <= p; p -= 2)
|
|
48 p[-2] = 6;
|
|
49 for (i = 0; i < 64; i++)
|
|
50 if (buf[i] != 6 * ((i & 1) && i <= 61))
|
|
51 abort ();
|
|
52 memset (buf, '\0', sizeof (buf));
|
|
53 #pragma omp parallel for
|
|
54 for (p = &buf[48]; &buf[15] < p; p = -4 + p)
|
|
55 p[2] = 7;
|
|
56 for (i = 0; i < 64; i++)
|
|
57 if (buf[i] != 7 * ((i & 3) == 2 && i >= 18 && i < 53))
|
|
58 abort ();
|
|
59 memset (buf, '\0', sizeof (buf));
|
|
60 #pragma omp parallel for
|
|
61 for (p = &buf[40]; &buf[16] <= p; p = p - 4ULL)
|
|
62 p[2] = -7;
|
|
63 for (i = 0; i < 64; i++)
|
|
64 if (buf[i] != -7 * ((i & 3) == 2 && i >= 18 && i <= 42))
|
|
65 abort ();
|
|
66 return 0;
|
|
67 }
|
|
68
|
|
69 int
|
|
70 test2 ()
|
|
71 {
|
|
72 int buf[64], *p;
|
|
73 int i;
|
|
74 memset (buf, '\0', sizeof (buf));
|
|
75 #pragma omp parallel for schedule (static, 3)
|
|
76 for (p = &buf[10]; &buf[54] > p; p++)
|
|
77 *p = 5;
|
|
78 for (i = 0; i < 64; i++)
|
|
79 if (buf[i] != 5 * (i >= 10 && i < 54))
|
|
80 abort ();
|
|
81 memset (buf, '\0', sizeof (buf));
|
|
82 #pragma omp parallel for schedule (static, 3)
|
|
83 for (p = &buf[3]; &buf[63] >= p; p += 2)
|
|
84 p[-2] = 6;
|
|
85 for (i = 0; i < 64; i++)
|
|
86 if (buf[i] != 6 * ((i & 1) && i <= 61))
|
|
87 abort ();
|
|
88 memset (buf, '\0', sizeof (buf));
|
|
89 #pragma omp parallel for schedule (static, 3)
|
|
90 for (p = &buf[16]; &buf[51] > p; p = 4 + p)
|
|
91 p[2] = 7;
|
|
92 for (i = 0; i < 64; i++)
|
|
93 if (buf[i] != 7 * ((i & 3) == 2 && i >= 18 && i < 53))
|
|
94 abort ();
|
|
95 memset (buf, '\0', sizeof (buf));
|
|
96 #pragma omp parallel for schedule (static, 3)
|
|
97 for (p = &buf[16]; &buf[40] >= p; p = p + 4ULL)
|
|
98 p[2] = -7;
|
|
99 for (i = 0; i < 64; i++)
|
|
100 if (buf[i] != -7 * ((i & 3) == 2 && i >= 18 && i <= 42))
|
|
101 abort ();
|
|
102 memset (buf, '\0', sizeof (buf));
|
|
103 #pragma omp parallel for schedule (static, 3)
|
|
104 for (p = &buf[53]; &buf[9] < p; --p)
|
|
105 *p = 5;
|
|
106 for (i = 0; i < 64; i++)
|
|
107 if (buf[i] != 5 * (i >= 10 && i < 54))
|
|
108 abort ();
|
|
109 memset (buf, '\0', sizeof (buf));
|
|
110 #pragma omp parallel for schedule (static, 3)
|
|
111 for (p = &buf[63]; &buf[3] <= p; p -= 2)
|
|
112 p[-2] = 6;
|
|
113 for (i = 0; i < 64; i++)
|
|
114 if (buf[i] != 6 * ((i & 1) && i <= 61))
|
|
115 abort ();
|
|
116 memset (buf, '\0', sizeof (buf));
|
|
117 #pragma omp parallel for schedule (static, 3)
|
|
118 for (p = &buf[48]; &buf[15] < p; p = -4 + p)
|
|
119 p[2] = 7;
|
|
120 for (i = 0; i < 64; i++)
|
|
121 if (buf[i] != 7 * ((i & 3) == 2 && i >= 18 && i < 53))
|
|
122 abort ();
|
|
123 memset (buf, '\0', sizeof (buf));
|
|
124 #pragma omp parallel for schedule (static, 3)
|
|
125 for (p = &buf[40]; &buf[16] <= p; p = p - 4ULL)
|
|
126 p[2] = -7;
|
|
127 for (i = 0; i < 64; i++)
|
|
128 if (buf[i] != -7 * ((i & 3) == 2 && i >= 18 && i <= 42))
|
|
129 abort ();
|
|
130 return 0;
|
|
131 }
|
|
132
|
|
133 int
|
|
134 test3 ()
|
|
135 {
|
|
136 int buf[64], *p;
|
|
137 int i;
|
|
138 memset (buf, '\0', sizeof (buf));
|
|
139 #pragma omp parallel for schedule (dynamic, 3)
|
|
140 for (p = &buf[10]; &buf[54] > p; p++)
|
|
141 *p = 5;
|
|
142 for (i = 0; i < 64; i++)
|
|
143 if (buf[i] != 5 * (i >= 10 && i < 54))
|
|
144 abort ();
|
|
145 memset (buf, '\0', sizeof (buf));
|
|
146 #pragma omp parallel for schedule (dynamic, 3)
|
|
147 for (p = &buf[3]; &buf[63] >= p; p += 2)
|
|
148 p[-2] = 6;
|
|
149 for (i = 0; i < 64; i++)
|
|
150 if (buf[i] != 6 * ((i & 1) && i <= 61))
|
|
151 abort ();
|
|
152 memset (buf, '\0', sizeof (buf));
|
|
153 #pragma omp parallel for schedule (dynamic, 3)
|
|
154 for (p = &buf[16]; &buf[51] > p; p = 4 + p)
|
|
155 p[2] = 7;
|
|
156 for (i = 0; i < 64; i++)
|
|
157 if (buf[i] != 7 * ((i & 3) == 2 && i >= 18 && i < 53))
|
|
158 abort ();
|
|
159 memset (buf, '\0', sizeof (buf));
|
|
160 #pragma omp parallel for schedule (dynamic, 3)
|
|
161 for (p = &buf[16]; &buf[40] >= p; p = p + 4ULL)
|
|
162 p[2] = -7;
|
|
163 for (i = 0; i < 64; i++)
|
|
164 if (buf[i] != -7 * ((i & 3) == 2 && i >= 18 && i <= 42))
|
|
165 abort ();
|
|
166 memset (buf, '\0', sizeof (buf));
|
|
167 #pragma omp parallel for schedule (dynamic, 3)
|
|
168 for (p = &buf[53]; &buf[9] < p; --p)
|
|
169 *p = 5;
|
|
170 for (i = 0; i < 64; i++)
|
|
171 if (buf[i] != 5 * (i >= 10 && i < 54))
|
|
172 abort ();
|
|
173 memset (buf, '\0', sizeof (buf));
|
|
174 #pragma omp parallel for schedule (dynamic, 3)
|
|
175 for (p = &buf[63]; &buf[3] <= p; p -= 2)
|
|
176 p[-2] = 6;
|
|
177 for (i = 0; i < 64; i++)
|
|
178 if (buf[i] != 6 * ((i & 1) && i <= 61))
|
|
179 abort ();
|
|
180 memset (buf, '\0', sizeof (buf));
|
|
181 #pragma omp parallel for schedule (dynamic, 3)
|
|
182 for (p = &buf[48]; &buf[15] < p; p = -4 + p)
|
|
183 p[2] = 7;
|
|
184 for (i = 0; i < 64; i++)
|
|
185 if (buf[i] != 7 * ((i & 3) == 2 && i >= 18 && i < 53))
|
|
186 abort ();
|
|
187 memset (buf, '\0', sizeof (buf));
|
|
188 #pragma omp parallel for schedule (dynamic, 3)
|
|
189 for (p = &buf[40]; &buf[16] <= p; p = p - 4ULL)
|
|
190 p[2] = -7;
|
|
191 for (i = 0; i < 64; i++)
|
|
192 if (buf[i] != -7 * ((i & 3) == 2 && i >= 18 && i <= 42))
|
|
193 abort ();
|
|
194 return 0;
|
|
195 }
|
|
196
|
|
197 int
|
|
198 test4 ()
|
|
199 {
|
|
200 int buf[64], *p;
|
|
201 int i;
|
|
202 memset (buf, '\0', sizeof (buf));
|
|
203 #pragma omp parallel for schedule (runtime)
|
|
204 for (p = &buf[10]; &buf[54] > p; p++)
|
|
205 *p = 5;
|
|
206 for (i = 0; i < 64; i++)
|
|
207 if (buf[i] != 5 * (i >= 10 && i < 54))
|
|
208 abort ();
|
|
209 memset (buf, '\0', sizeof (buf));
|
|
210 #pragma omp parallel for schedule (runtime)
|
|
211 for (p = &buf[3]; &buf[63] >= p; p += 2)
|
|
212 p[-2] = 6;
|
|
213 for (i = 0; i < 64; i++)
|
|
214 if (buf[i] != 6 * ((i & 1) && i <= 61))
|
|
215 abort ();
|
|
216 memset (buf, '\0', sizeof (buf));
|
|
217 #pragma omp parallel for schedule (runtime)
|
|
218 for (p = &buf[16]; &buf[51] > p; p = 4 + p)
|
|
219 p[2] = 7;
|
|
220 for (i = 0; i < 64; i++)
|
|
221 if (buf[i] != 7 * ((i & 3) == 2 && i >= 18 && i < 53))
|
|
222 abort ();
|
|
223 memset (buf, '\0', sizeof (buf));
|
|
224 #pragma omp parallel for schedule (runtime)
|
|
225 for (p = &buf[16]; &buf[40] >= p; p = p + 4ULL)
|
|
226 p[2] = -7;
|
|
227 for (i = 0; i < 64; i++)
|
|
228 if (buf[i] != -7 * ((i & 3) == 2 && i >= 18 && i <= 42))
|
|
229 abort ();
|
|
230 memset (buf, '\0', sizeof (buf));
|
|
231 #pragma omp parallel for schedule (runtime)
|
|
232 for (p = &buf[53]; &buf[9] < p; --p)
|
|
233 *p = 5;
|
|
234 for (i = 0; i < 64; i++)
|
|
235 if (buf[i] != 5 * (i >= 10 && i < 54))
|
|
236 abort ();
|
|
237 memset (buf, '\0', sizeof (buf));
|
|
238 #pragma omp parallel for schedule (runtime)
|
|
239 for (p = &buf[63]; &buf[3] <= p; p -= 2)
|
|
240 p[-2] = 6;
|
|
241 for (i = 0; i < 64; i++)
|
|
242 if (buf[i] != 6 * ((i & 1) && i <= 61))
|
|
243 abort ();
|
|
244 memset (buf, '\0', sizeof (buf));
|
|
245 #pragma omp parallel for schedule (runtime)
|
|
246 for (p = &buf[48]; &buf[15] < p; p = -4 + p)
|
|
247 p[2] = 7;
|
|
248 for (i = 0; i < 64; i++)
|
|
249 if (buf[i] != 7 * ((i & 3) == 2 && i >= 18 && i < 53))
|
|
250 abort ();
|
|
251 memset (buf, '\0', sizeof (buf));
|
|
252 #pragma omp parallel for schedule (runtime)
|
|
253 for (p = &buf[40]; &buf[16] <= p; p = p - 4ULL)
|
|
254 p[2] = -7;
|
|
255 for (i = 0; i < 64; i++)
|
|
256 if (buf[i] != -7 * ((i & 3) == 2 && i >= 18 && i <= 42))
|
|
257 abort ();
|
|
258 return 0;
|
|
259 }
|
|
260
|
|
261 int
|
|
262 main ()
|
|
263 {
|
|
264 test1 ();
|
|
265 test2 ();
|
|
266 test3 ();
|
|
267 omp_set_schedule (omp_sched_static, 0);
|
|
268 test4 ();
|
|
269 omp_set_schedule (omp_sched_static, 3);
|
|
270 test4 ();
|
|
271 omp_set_schedule (omp_sched_dynamic, 5);
|
|
272 test4 ();
|
|
273 omp_set_schedule (omp_sched_guided, 2);
|
|
274 test4 ();
|
|
275 return 0;
|
|
276 }
|