111
|
1 ! { dg-do run }
|
|
2
|
|
3 program main
|
|
4 implicit none
|
|
5 integer, parameter :: n = 1024
|
|
6 integer, dimension (0:n-1) :: a, b, c
|
|
7 integer :: i, ii
|
|
8
|
|
9 !$acc enter data create (a(0:n-1))
|
|
10 !$acc kernels present (a(0:n-1))
|
|
11 do i = 0, n - 1
|
|
12 a(i) = i * 2
|
|
13 end do
|
|
14 !$acc end kernels
|
|
15 !$acc exit data copyout (a(0:n-1))
|
|
16
|
|
17 !$acc enter data create (b(0:n-1))
|
|
18 !$acc kernels present (b(0:n-1))
|
|
19 do i = 0, n -1
|
|
20 b(i) = i * 4
|
|
21 end do
|
|
22 !$acc end kernels
|
|
23 !$acc exit data copyout (b(0:n-1))
|
|
24
|
|
25 !$acc enter data copyin (a(0:n-1), b(0:n-1)) create (c(0:n-1))
|
|
26 !$acc kernels present (a(0:n-1), b(0:n-1), c(0:n-1))
|
|
27 do ii = 0, n - 1
|
|
28 c(ii) = a(ii) + b(ii)
|
|
29 end do
|
|
30 !$acc end kernels
|
|
31 !$acc exit data copyout (c(0:n-1))
|
|
32
|
|
33 do i = 0, n - 1
|
131
|
34 if (c(i) .ne. a(i) + b(i)) STOP 1
|
111
|
35 end do
|
|
36
|
|
37 end program main
|