pr96628-part2.f90 693 B

12345678910111213141516171819202122232425262728293031323334353637
  1. ! { dg-do compile { target skip-all-targets } }
  2. !
  3. ! Main file is pr96628-part1.f90
  4. MODULE m
  5. IMPLICIT NONE
  6. REAL*8, ALLOCATABLE :: t(:)
  7. CONTAINS
  8. SUBROUTINE run()
  9. use m2
  10. IMPLICIT NONE
  11. INTEGER :: i,j ! loop indices
  12. !$acc data present(t)
  13. !$acc parallel
  14. !$acc loop gang
  15. DO j = 1,2
  16. !$acc loop vector
  17. DO i = 1,2
  18. CALL one(t(:))
  19. CALL two(t(:))
  20. END DO
  21. END DO
  22. !$acc end parallel
  23. !$acc end data
  24. END SUBROUTINE run
  25. END MODULE m
  26. use m
  27. implicit none
  28. integer :: i
  29. t = [(3.0_8*i, i = 1, 100)]
  30. !$acc data copy(t)
  31. call run
  32. !$acc end data
  33. if (any (abs(t - [((300.0_8*i)/15150.0_8, i = 1, 100)]) < 10.0_8*epsilon(t))) stop 1
  34. end