vector-routine.f90 559 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. ! { dg-do run }
  2. module param
  3. integer, parameter :: N = 32
  4. end module param
  5. program main
  6. use param
  7. integer :: i
  8. integer :: a(N)
  9. do i = 1, N
  10. a(i) = i
  11. end do
  12. !$acc parallel copy (a)
  13. !$acc loop worker
  14. do i = 1, N
  15. call vector (a)
  16. end do
  17. !$acc end parallel
  18. do i = 1, N
  19. if (a(i) .ne. 0) stop 1
  20. end do
  21. contains
  22. subroutine vector (a)
  23. !$acc routine vector
  24. integer, intent (inout) :: a(N)
  25. integer :: i
  26. !$acc loop vector
  27. do i = 1, N
  28. a(i) = a(i) - a(i)
  29. end do
  30. end subroutine vector
  31. end program main