1 extern void abort (void);
4 int a
[N
], b
[N
/ 16][8][4], c
[N
/ 32][8][8], g
[N
/ 16][8][6];
6 volatile unsigned long long f
;
13 #pragma omp parallel private (l)
15 #pragma omp for schedule(static, 1) ordered (1) nowait
16 for (i
= 1; i
< N
+ f
; i
++)
18 #pragma omp atomic write
20 #pragma omp ordered doacross(sink: omp_cur_iteration - 1)
23 #pragma omp atomic read
28 #pragma omp atomic write
32 #pragma omp atomic read
37 #pragma omp ordered doacross(source : omp_cur_iteration)
38 #pragma omp atomic write
41 #pragma omp for schedule(static) ordered (3) nowait
42 for (i
= 3; i
< N
/ 16 - 1 + f
; i
++)
43 for (j
= 0; j
< 8; j
+= 2)
44 for (k
= 1; k
<= 3; k
++)
46 #pragma omp atomic write
48 #pragma omp ordered doacross(sink: i, j - 2, k - 1) \
49 doacross(sink: i - 2, j - 2, k + 1)
50 #pragma omp ordered doacross(sink: omp_cur_iteration - 1)
53 #pragma omp atomic read
54 l
= b
[i
][j
- 2][k
- 1];
58 #pragma omp atomic write
60 if (i
>= 5 && j
>= 2 && k
< 3)
62 #pragma omp atomic read
63 l
= b
[i
- 2][j
- 2][k
+ 1];
67 if (i
!= 3 || j
|| k
!= 1)
70 #pragma omp atomic read
73 #pragma omp atomic read
76 #pragma omp atomic read
81 #pragma omp ordered doacross(source:)
82 #pragma omp atomic write
86 #define B(n) A(n##0) A(n##1) A(n##2) A(n##3)
87 #define C(n) B(n##0) B(n##1) B(n##2) B(n##3)
88 #define D(n) C(n##0) C(n##1) C(n##2) C(n##3)
91 #pragma omp for collapse (2) ordered(61) schedule(dynamic, 15)
92 for (i
= 2; i
< N
/ 32 + f
; i
++)
93 for (j
= 7; j
> 1; j
--)
94 for (k
= 6; k
>= 0; k
-= 2)
95 #define A(n) for (n = 4; n < 5; n++)
99 #pragma omp atomic write
101 #pragma omp ordered doacross (sink: omp_cur_iteration - 1)
102 if (i
!= 2 || j
!= 7 || k
!= 6)
105 #pragma omp atomic read
108 #pragma omp atomic read
111 #pragma omp atomic read
116 #pragma omp atomic write
118 #pragma omp ordered doacross (source:)
119 #pragma omp atomic write
122 #pragma omp for schedule(static) ordered (3) nowait
123 for (j
= 0; j
< N
/ 16 - 1; j
++)
124 for (k
= 0; k
< 8; k
+= 2)
125 for (i
= 3; i
<= 5 + f
; i
++)
127 #pragma omp atomic write
129 #pragma omp ordered doacross(sink: j, k - 2, i - 1) \
130 doacross(sink: omp_cur_iteration - 1)
131 #pragma omp ordered doacross(sink: j - 3, k + 2, i - 2)
134 #pragma omp atomic read
135 l
= g
[j
][k
- 2][i
- 1];
139 #pragma omp atomic write
141 if (j
|| k
|| i
!= 3)
144 #pragma omp atomic read
147 #pragma omp atomic read
148 l
= g
[j
][k
- 2][5 + f
];
150 #pragma omp atomic read
151 l
= g
[j
- 1][6][5 + f
];
155 if (j
>= 3 && k
< N
/ 16 - 3 && i
== 5)
157 #pragma omp atomic read
158 l
= g
[j
- 3][k
+ 2][i
- 2];
162 #pragma omp ordered doacross(source : omp_cur_iteration)
163 #pragma omp atomic write
166 #pragma omp for collapse(2) ordered(4) lastprivate (i, j, k)
167 for (i
= 2; i
< f
+ 3; i
++)
168 for (j
= d
+ 1; j
>= 0; j
--)
169 for (k
= 0; k
< d
; k
++)
170 for (l
= 0; l
< d
+ 2; l
++)
172 #pragma omp ordered doacross (source : omp_cur_iteration)
173 #pragma omp ordered doacross (sink:omp_cur_iteration - 1)
179 if (i
!= 3 || j
!= -1 || k
!= 0)
181 i
= 8; j
= 9; k
= 10;
183 #pragma omp for collapse(2) ordered(4) lastprivate (i, j, k, m)
184 for (i
= 2; i
< f
+ 3; i
++)
185 for (j
= d
+ 1; j
>= 0; j
--)
186 for (k
= 0; k
< d
+ 2; k
++)
187 for (m
= 0; m
< d
; m
++)
189 #pragma omp ordered doacross (source : omp_cur_iteration)
190 #pragma omp ordered doacross (sink:omp_cur_iteration - 1)
194 if (i
!= 3 || j
!= -1 || k
!= 2 || m
!= 0)
196 #pragma omp for collapse(2) ordered(4) nowait
197 for (i
= 2; i
< f
+ 3; i
++)
198 for (j
= d
; j
> 0; j
--)
199 for (k
= 0; k
< d
+ 2; k
++)
200 for (l
= 0; l
< d
+ 4; l
++)
202 #pragma omp ordered doacross (source:)
203 #pragma omp ordered doacross (sink:omp_cur_iteration-1)
207 #pragma omp for nowait
208 for (i
= 0; i
< N
; i
++)
209 if (a
[i
] != 3 * (i
>= 1))
211 #pragma omp for collapse(2) private(k) nowait
212 for (i
= 0; i
< N
/ 16; i
++)
213 for (j
= 0; j
< 8; j
++)
214 for (k
= 0; k
< 4; k
++)
215 if (b
[i
][j
][k
] != 3 * (i
>= 3 && i
< N
/ 16 - 1 && (j
& 1) == 0 && k
>= 1))
217 #pragma omp for collapse(3) nowait
218 for (i
= 0; i
< N
/ 32; i
++)
219 for (j
= 0; j
< 8; j
++)
220 for (k
= 0; k
< 8; k
++)
221 if (c
[i
][j
][k
] != 3 * (i
>= 2 && j
>= 2 && (k
& 1) == 0))
223 #pragma omp for collapse(2) private(k) nowait
224 for (i
= 0; i
< N
/ 16; i
++)
225 for (j
= 0; j
< 8; j
++)
226 for (k
= 0; k
< 6; k
++)
227 if (g
[i
][j
][k
] != 3 * (i
< N
/ 16 - 1 && (j
& 1) == 0 && k
>= 3))