5 call test2 (2, 6, -2, 4, 13, 18)
6 call test3 (2, 6, -2, 4, 13, 18, 1, 1, 1)
8 call test5 (2, 6, -2, 4, 13, 18)
9 call test6 (2, 6, -2, 4, 13, 18, 1, 1, 1)
12 integer :: i, j, k, a(1:7, -3:5, 12:19), m
16 !$omp parallel do collapse (3) lastprivate (i, j, k, m) reduction (.or.:l)
20 l = l.or.i.lt.2.or.i.gt.6.or.j.lt.-2.or.j.gt.4
21 l = l.or.k.lt.13.or.k.gt.18
22 if (.not.l) a(i, j, k) = a(i, j, k) + 1
23 m = i * 100 + j * 10 + k
27 if (i.ne.7.or.j.ne.5.or.k.ne.19) call abort
28 if (m.ne.(600+40+18)) call abort
32 if (i.eq.1.or.i.eq.7.or.j.eq.-3.or.j.eq.5.or.k.eq.12.or.k.eq.19) then
33 if (a(i, j, k).ne.0) print *, i, j, k
35 if (a(i, j, k).ne.1) print *, 'kk', i, j, k, a(i, j, k)
42 subroutine test2(v1, v2, v3, v4, v5, v6)
43 integer :: i, j, k, a(1:7, -3:5, 12:19), m
44 integer :: v1, v2, v3, v4, v5, v6
48 !$omp parallel do collapse (3) lastprivate (i, j, k, m) reduction (.or.:l)
52 l = l.or.i.lt.2.or.i.gt.6.or.j.lt.-2.or.j.gt.4
53 l = l.or.k.lt.13.or.k.gt.18
54 if (.not.l) a(i, j, k) = a(i, j, k) + 1
55 m = i * 100 + j * 10 + k
59 if (i.ne.7.or.j.ne.5.or.k.ne.19) call abort
60 if (m.ne.(600+40+18)) call abort
64 if (i.eq.1.or.i.eq.7.or.j.eq.-3.or.j.eq.5.or.k.eq.12.or.k.eq.19) then
65 if (a(i, j, k).ne.0) print *, i, j, k
67 if (a(i, j, k).ne.1) print *, 'kk', i, j, k, a(i, j, k)
74 subroutine test3(v1, v2, v3, v4, v5, v6, v7, v8, v9)
75 integer :: i, j, k, a(1:7, -3:5, 12:19), m
76 integer :: v1, v2, v3, v4, v5, v6, v7, v8, v9
80 !$omp parallel do collapse (3) lastprivate (i, j, k, m) reduction (.or.:l)
84 l = l.or.i.lt.2.or.i.gt.6.or.j.lt.-2.or.j.gt.4
85 l = l.or.k.lt.13.or.k.gt.18
86 if (.not.l) a(i, j, k) = a(i, j, k) + 1
87 m = i * 100 + j * 10 + k
91 if (i.ne.7.or.j.ne.5.or.k.ne.19) call abort
92 if (m.ne.(600+40+18)) call abort
96 if (i.eq.1.or.i.eq.7.or.j.eq.-3.or.j.eq.5.or.k.eq.12.or.k.eq.19) then
97 if (a(i, j, k).ne.0) print *, i, j, k
99 if (a(i, j, k).ne.1) print *, 'kk', i, j, k, a(i, j, k)
107 integer :: i, j, k, a(1:7, -3:5, 12:19), m
111 !$omp parallel do collapse (3) lastprivate (i, j, k, m) reduction (.or.:l) &
112 !$omp& schedule (dynamic, 5)
116 l = l.or.i.lt.2.or.i.gt.6.or.j.lt.-2.or.j.gt.4
117 l = l.or.k.lt.13.or.k.gt.18
118 if (.not.l) a(i, j, k) = a(i, j, k) + 1
119 m = i * 100 + j * 10 + k
123 if (i.ne.7.or.j.ne.5.or.k.ne.19) call abort
124 if (m.ne.(600+40+18)) call abort
128 if (i.eq.1.or.i.eq.7.or.j.eq.-3.or.j.eq.5.or.k.eq.12.or.k.eq.19) then
129 if (a(i, j, k).ne.0) print *, i, j, k
131 if (a(i, j, k).ne.1) print *, 'kk', i, j, k, a(i, j, k)
138 subroutine test5(v1, v2, v3, v4, v5, v6)
139 integer :: i, j, k, a(1:7, -3:5, 12:19), m
140 integer :: v1, v2, v3, v4, v5, v6
144 !$omp parallel do collapse (3) lastprivate (i, j, k, m) reduction (.or.:l) &
145 !$omp & schedule (guided)
149 l = l.or.i.lt.2.or.i.gt.6.or.j.lt.-2.or.j.gt.4
150 l = l.or.k.lt.13.or.k.gt.18
151 if (.not.l) a(i, j, k) = a(i, j, k) + 1
152 m = i * 100 + j * 10 + k
156 if (i.ne.7.or.j.ne.5.or.k.ne.19) call abort
157 if (m.ne.(600+40+18)) call abort
161 if (i.eq.1.or.i.eq.7.or.j.eq.-3.or.j.eq.5.or.k.eq.12.or.k.eq.19) then
162 if (a(i, j, k).ne.0) print *, i, j, k
164 if (a(i, j, k).ne.1) print *, 'kk', i, j, k, a(i, j, k)
171 subroutine test6(v1, v2, v3, v4, v5, v6, v7, v8, v9)
172 integer :: i, j, k, a(1:7, -3:5, 12:19), m
173 integer :: v1, v2, v3, v4, v5, v6, v7, v8, v9
177 !$omp parallel do collapse (3) lastprivate (i, j, k, m) reduction (.or.:l) &
178 !$omp & schedule (dynamic)
182 l = l.or.i.lt.2.or.i.gt.6.or.j.lt.-2.or.j.gt.4
183 l = l.or.k.lt.13.or.k.gt.18
184 if (.not.l) a(i, j, k) = a(i, j, k) + 1
185 m = i * 100 + j * 10 + k
189 if (i.ne.7.or.j.ne.5.or.k.ne.19) call abort
190 if (m.ne.(600+40+18)) call abort
194 if (i.eq.1.or.i.eq.7.or.j.eq.-3.or.j.eq.5.or.k.eq.12.or.k.eq.19) then
195 if (a(i, j, k).ne.0) print *, i, j, k
197 if (a(i, j, k).ne.1) print *, 'kk', i, j, k, a(i, j, k)
204 end program collapse3