kernels-loop-data-update.f95 667 B

1234567891011121314151617181920212223242526272829303132333435
  1. ! { dg-do run }
  2. program main
  3. implicit none
  4. integer, parameter :: n = 1024
  5. integer, dimension (0:n-1) :: a, b, c
  6. integer :: i, ii
  7. !$acc enter data create (a(0:n-1), b(0:n-1), c(0:n-1))
  8. !$acc kernels present (a(0:n-1))
  9. do i = 0, n - 1
  10. a(i) = i * 2
  11. end do
  12. !$acc end kernels
  13. do i = 0, n -1
  14. b(i) = i * 4
  15. end do
  16. !$acc update device (b(0:n-1))
  17. !$acc kernels present (a(0:n-1), b(0:n-1), c(0:n-1))
  18. do ii = 0, n - 1
  19. c(ii) = a(ii) + b(ii)
  20. end do
  21. !$acc end kernels
  22. !$acc exit data copyout (a(0:n-1), c(0:n-1))
  23. do i = 0, n - 1
  24. if (c(i) .ne. a(i) + b(i)) STOP 1
  25. end do
  26. end program main