1! Exercise the auto, independent, seq and tile loop clauses inside 2! kernels regions. 3 4! { dg-do run } 5 6program loops 7 integer, parameter :: n = 20 8 integer :: i, a(n), b(n) 9 10 a(:) = 0 11 b(:) = 0 12 13 ! COPY 14 15 !$acc kernels copy (a) 16 !$acc loop auto 17 do i = 1, n 18 a(i) = i 19 end do 20 !$acc end kernels 21 22 do i = 1, n 23 b(i) = i 24 end do 25 26 call check (a, b, n) 27 28 ! COPYOUT 29 30 a(:) = 0 31 32 !$acc kernels copyout (a) 33 !$acc loop independent 34 do i = 1, n 35 a(i) = i 36 end do 37 !$acc end kernels 38 39 do i = 1, n 40 if (a(i) .ne. b(i)) stop 1 41 end do 42 call check (a, b, n) 43 44 ! COPYIN 45 46 a(:) = 0 47 48 !$acc kernels copyout (a) copyin (b) 49 !$acc loop seq 50 do i = 1, n 51 a(i) = b(i) 52 end do 53 !$acc end kernels 54 55 call check (a, b, n) 56 57end program loops 58 59subroutine check (a, b, n) 60 integer :: n, a(n), b(n) 61 integer :: i 62 63 do i = 1, n 64 if (a(i) .ne. b(i)) stop 2 65 end do 66end subroutine check 67