collapse-1.f90 580 B

123456789101112131415161718192021222324252627282930
  1. ! { dg-do run }
  2. program collapse1
  3. integer :: i, j, k, a(1:3, 4:6, 5:7)
  4. logical :: l
  5. l = .false.
  6. a(:, :, :) = 0
  7. !$acc parallel
  8. !$acc loop collapse(4 - 1)
  9. do i = 1, 3
  10. do j = 4, 6
  11. do k = 5, 7
  12. a(i, j, k) = i + j + k
  13. end do
  14. end do
  15. end do
  16. !$acc end parallel
  17. !$acc parallel
  18. !$acc loop collapse(2) reduction(.or.:l)
  19. do i = 1, 3
  20. do j = 4, 6
  21. do k = 5, 7
  22. if (a(i, j, k) .ne. (i + j + k)) l = .true.
  23. end do
  24. end do
  25. end do
  26. !$acc end parallel
  27. if (l) STOP 1
  28. end program collapse1