| ! { dg-do run } |
| ! { dg-additional-options "-cpp" } |
| |
| #define N (1024 * 512) |
| |
| subroutine foo (a, b, c) |
| integer, parameter :: n = N |
| integer, dimension (n) :: a |
| integer, dimension (n) :: b |
| integer, dimension (n) :: c |
| integer i, ii |
| |
| do i = 1, n |
| a(i) = i * 2; |
| end do |
| |
| do i = 1, n |
| b(i) = i * 4; |
| end do |
| |
| !$acc kernels copyin (a(1:n), b(1:n)) copyout (c(1:n)) |
| !$acc loop independent |
| do ii = 1, n |
| c(ii) = a(ii) + b(ii) |
| end do |
| !$acc end kernels |
| |
| do i = 1, n |
| if (c(i) .ne. a(i) + b(i)) stop 1 |
| end do |
| |
| end subroutine |
| |
| program main |
| integer, parameter :: n = N |
| integer :: a(n) |
| integer :: b(n) |
| integer :: c(n) |
| |
| call foo (a, b, c) |
| |
| end program main |