| ! { dg-do run } |
| ! { dg-skip-if "" { *-*-* } { "*" } { "-DACC_MEM_SHARED=0" } } |
| |
| program main |
| use openacc |
| implicit none |
| |
| integer, parameter :: N = 256 |
| integer, allocatable :: h(:) |
| integer :: i |
| |
| allocate (h(N)) |
| |
| do i = 1, N |
| h(i) = i |
| end do |
| |
| call acc_copyin (h) |
| |
| do i = 1, N |
| h(i) = i + i |
| end do |
| |
| call acc_update_device (h, sizeof (h)) |
| |
| if (acc_is_present (h) .neqv. .TRUE.) stop 1 |
| |
| h(:) = 0 |
| |
| call acc_copyout (h, sizeof (h)) |
| |
| do i = 1, N |
| if (h(i) /= i + i) stop 2 |
| end do |
| |
| call acc_copyin (h, sizeof (h)) |
| |
| h(:) = 0 |
| |
| call acc_update_self (h, sizeof (h)) |
| |
| if (acc_is_present (h) .neqv. .TRUE.) stop 3 |
| |
| do i = 1, N |
| if (h(i) /= i + i) stop 4 |
| end do |
| |
| call acc_delete (h) |
| |
| if (acc_is_present (h) .neqv. .FALSE.) stop 5 |
| |
| end program |