| ! Test invalid intra-routine parallellism. |
| |
| module param |
| integer, parameter :: N = 32 |
| end module param |
| |
| subroutine gang (a) |
| use param |
| !$acc routine gang |
| integer, intent (inout) :: a(N) |
| integer :: i |
| |
| !$acc loop |
| do i = 1, N |
| a(i) = a(i) - a(i) |
| end do |
| |
| !$acc loop gang |
| do i = 1, N |
| a(i) = a(i) - a(i) |
| end do |
| |
| !$acc loop worker |
| do i = 1, N |
| a(i) = a(i) - a(i) |
| end do |
| |
| !$acc loop vector |
| do i = 1, N |
| a(i) = a(i) - a(i) |
| end do |
| end subroutine gang |
| |
| subroutine worker (a) |
| use param |
| !$acc routine worker |
| integer, intent (inout) :: a(N) |
| integer :: i |
| |
| !$acc loop |
| do i = 1, N |
| a(i) = a(i) - a(i) |
| end do |
| |
| !$acc loop gang ! { dg-error "disallowed by containing routine" } |
| do i = 1, N |
| a(i) = a(i) - a(i) |
| end do |
| |
| !$acc loop worker |
| do i = 1, N |
| a(i) = a(i) - a(i) |
| end do |
| |
| !$acc loop vector |
| do i = 1, N |
| a(i) = a(i) - a(i) |
| end do |
| end subroutine worker |
| |
| subroutine vector (a) |
| use param |
| !$acc routine vector |
| integer, intent (inout) :: a(N) |
| integer :: i |
| |
| !$acc loop |
| do i = 1, N |
| a(i) = a(i) - a(i) |
| end do |
| |
| !$acc loop gang ! { dg-error "disallowed by containing routine" } |
| do i = 1, N |
| a(i) = a(i) - a(i) |
| end do |
| |
| !$acc loop worker ! { dg-error "disallowed by containing routine" } |
| do i = 1, N |
| a(i) = a(i) - a(i) |
| end do |
| |
| !$acc loop vector |
| do i = 1, N |
| a(i) = a(i) - a(i) |
| end do |
| end subroutine vector |
| |
| subroutine seq (a) |
| use param |
| !$acc routine seq |
| integer, intent (inout) :: a(N) |
| integer :: i |
| |
| !$acc loop ! { dg-warning "insufficient partitioning" } |
| do i = 1, N |
| a(i) = a(i) - a(i) |
| end do |
| |
| !$acc loop gang ! { dg-error "disallowed by containing routine" } |
| do i = 1, N |
| a(i) = a(i) - a(i) |
| end do |
| |
| !$acc loop worker ! { dg-error "disallowed by containing routine" } |
| do i = 1, N |
| a(i) = a(i) - a(i) |
| end do |
| |
| !$acc loop vector ! { dg-error "disallowed by containing routine" } |
| do i = 1, N |
| a(i) = a(i) - a(i) |
| end do |
| end subroutine seq |