blob: 81799f60733832cee1f0acea89d8106684a46378 [file] [log] [blame]
 program subarrays integer, parameter :: n = 20, c = 10, low = 5, high = 10 integer :: i, a(n), b(n) a(:) = 0 b(:) = 0 ! COPY !\$acc parallel copy (a(low:high)) !\$acc loop do i = low, high a(i) = i end do !\$acc end parallel do i = low, high b(i) = i end do call check (a, b, n) ! COPYOUT a(:) = 0 !\$acc parallel copyout (a(low:high)) !\$acc loop do i = low, high a(i) = i end do !\$acc end parallel do i = low, high if (a(i) .ne. b(i)) call abort end do call check (a, b, n) ! COPYIN a(:) = 0 !\$acc parallel copyout (a(low:high)) copyin (b(low:high)) !\$acc loop do i = low, high a(i) = b(i) end do !\$acc end parallel call check (a, b, n) ! PRESENT_OR_COPY a(:) = 0 !\$acc parallel pcopy (a(low:high)) !\$acc loop do i = low, high a(i) = i end do !\$acc end parallel call check (a, b, n) ! PRESENT_OR_COPYOUT a(:) = 0 !\$acc parallel pcopyout (a(low:high)) !\$acc loop do i = low, high a(i) = i end do !\$acc end parallel call check (a, b, n) ! PRESENT_OR_COPYIN a(:) = 0 !\$acc parallel pcopyout (a(low:high)) & !\$acc & pcopyin (b(low:high)) !\$acc loop do i = low, high a(i) = b(i) end do !\$acc end parallel call check (a, b, n) end program subarrays subroutine check (a, b, n) integer :: n, a(n), b(n) integer :: i do i = 1, n if (a(i) .ne. b(i)) call abort end do end subroutine check