123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- ! Exercise the auto, independent, seq and tile loop clauses inside
- ! kernels regions.
- ! { dg-do run }
- program loops
- integer, parameter :: n = 20
- integer :: i, a(n), b(n)
- a(:) = 0
- b(:) = 0
- ! COPY
- !$acc kernels copy (a)
- !$acc loop auto
- do i = 1, n
- a(i) = i
- end do
- !$acc end kernels
- do i = 1, n
- b(i) = i
- end do
- call check (a, b, n)
- ! COPYOUT
- a(:) = 0
- !$acc kernels copyout (a)
- !$acc loop independent
- do i = 1, n
- a(i) = i
- end do
- !$acc end kernels
- do i = 1, n
- if (a(i) .ne. b(i)) stop 1
- end do
- call check (a, b, n)
- ! COPYIN
- a(:) = 0
- !$acc kernels copyout (a) copyin (b)
- !$acc loop seq
- do i = 1, n
- a(i) = b(i)
- end do
- !$acc end kernels
- call check (a, b, n)
- end program loops
- subroutine check (a, b, n)
- integer :: n, a(n), b(n)
- integer :: i
- do i = 1, n
- if (a(i) .ne. b(i)) stop 2
- end do
- end subroutine check
|