3 integer, parameter :: N
= 256
4 integer, save :: a(N
), b(N
/ 16, 8, 4), c(N
/ 32, 8, 8), g(N
/16,8,6)
5 integer, save, volatile :: d
, e
6 integer(kind
=8), save, volatile :: f
9 integer :: m1
, m2
, m3
, m4
, m5
, m6
, m7
, m8
10 integer :: m9
, m10
, m11
, m12
, m13
, m14
, m15
, m16
14 !$omp parallel private (l) shared(k)
15 !$omp do schedule(guided, 3) ordered(1)
16 do i
= 2, N
+ f
, f
+ 1
19 !$omp ordered depend ( sink : i - 1 )
23 if (l
.lt
.2) call abort
30 if (l
.eq
.3) call abort
32 !$omp ordered depend(source)
37 !$omp do schedule(guided) ordered ( 3 )
38 do i
= 4, N
/ 16 - 1 + f
, 1 + f
43 !$omp ordered depend(sink:i,j-2,k-1) &
44 !$omp& depend(sink: i - 2, j - 2, k + 1)
45 !$omp ordered depend(sink:i-3,j+2,k-2)
46 if (j
.gt
.2.and
.k
.gt
.2) then
49 if (l
.lt
.2) call abort
53 if (i
.gt
.5.and
.j
.gt
.2.and
.k
.lt
.4) then
56 if (l
.lt
.2) call abort
58 if (i
.gt
.6.and
.j
.le
.N
/16-3.and
.k
.eq
.4) then
60 l
= b( i
- 3, j
+2, k
-2)
61 if (l
.lt
.2) call abort
63 !$omp ordered depend(source)
70 !$omp do schedule(guided, 15) collapse(2) ordered(13)
71 do i
= 3, N
/ 32 + f
, d
+ 1
92 !$omp ordered depend(sink: i, j, k + 2, m1, m2, m3, m4, &
93 !$omp & m5, m6, m7, m8, m9, m10) &
94 !$omp depend(sink: i - 2, j + 1, k - 4, m1,m2,m3,m4,m5, &
95 !$omp & m6,m7,m8,m9,m10) depend ( sink : i-1,j-2,k-2, &
96 !$omp& m1,m2,m3,m4 , m5, m6,m7,m8,m9,m10 )
100 if (l
.lt
.2) call abort
104 if (i
.ge
.5.and
.j
.lt
.8.and
.k
.ge
.5) then
106 l
= c(i
- 2, j
+ 1, k
- 4)
107 if (l
.lt
.2) call abort
109 if (i
.ge
.4.and
.j
.ge
.5.and
.k
.ge
.3) then
111 l
= c(i
- 1, j
- 2, k
- 2)
112 if (l
.lt
.2) call abort
114 !$omp ordered depend ( source )
136 !$omp do schedule(guided, 5) ordered(3)
137 do j
= 1, N
/ 16 - 1, d
+ 1
139 do i
= 4, 6 + f
, f
+ 1
142 !$omp ordered depend(sink: j, k-2,i-1) &
143 !$omp& depend(sink: j - 2, k - 2, i + 1)
144 !$omp ordered depend(sink:j-3,k+2,i-2)
145 if (k
.gt
.2.and
.i
.gt
.4) then
148 if (l
.lt
.2) call abort
152 if (j
.gt
.2.and
.k
.gt
.2.and
.i
.lt
.6) then
155 if (l
.lt
.2) call abort
157 if (j
.gt
.3.and
.k
.le
.N
/16-3.and
.i
.eq
.6) then
159 l
= g( j
- 3, k
+2, i
-2)
160 if (l
.lt
.2) call abort
162 !$omp ordered depend(source)
169 !$omp do collapse(2) ordered(4) lastprivate (i,j,k)
170 do i
= 2, f
+ 2, 1 + f
171 do j
= d
+ 1, 0, d
- 1
172 do k
= 0, d
- 1, d
+ 1
173 do l
= 0, d
+ 1, 1 + d
174 !$omp ordered depend(source)
175 !$omp ordered depend(sink: i-2,j+2,k-2,l)
176 if (e
.eq
.0) call abort
182 if (i
.ne
.3.or
.j
.ne
.-1.or
.k
.ne
.0) call abort
185 !$omp do ordered(4) collapse(2) lastprivate (i, j, k, m)
186 do i
= 2, f
+ 2, 1 + f
187 do j
= d
+ 1, 0, d
- 1
188 do k
= 0, d
+ 1, 1 + d
190 !$omp ordered depend(source)
191 !$omp ordered depend(sink: i - 2, j + 2, k - 2, m)
198 if (i
.ne
.3.or
.j
.ne
.-1.or
.k
.ne
.2.or
.m
.ne
.0) call abort
200 !$omp do collapse(2) ordered(4) lastprivate (i,j,k)
201 do i
= 2, f
+ 2, 1 + f
203 do k
= 0, d
+ 1, 1 + d
204 do l
= 0, d
+ 3, d
+ 1
205 !$omp ordered depend(source)
206 !$omp ordered depend(sink: i-2,j+2,k-2,l)
207 if (e
.eq
.0) call abort
214 if (a(1) .ne
. 0) call abort
215 !$omp end single nowait
218 if (a(i
) .ne
. 3) call abort
221 !$omp do collapse(2) private(k)
225 if (i
.ge
.4.and
.i
.lt
.N
/16.and
.iand(j
,1).ne
.0.and
.k
.ge
.2) then
226 if (b(i
,j
,k
).ne
.3) call abort
228 if (b(i
,j
,k
).ne
.0) call abort
238 if (i
.ge
.3.and
.j
.ge
.3.and
.iand(k
,1).ne
.0) then
239 if (c(i
,j
,k
).ne
.3) call abort
241 if (c(i
,j
,k
).ne
.0) call abort
247 !$omp do collapse(2) private(k)
251 if (i
.lt
.N
/16.and
.iand(j
,1).ne
.0.and
.k
.ge
.4) then
252 if (g(i
,j
,k
).ne
.3) call abort
254 if (g(i
,j
,k
).ne
.0) call abort