1! See also "lib-16.f90". 2! { dg-do run } 3! { dg-skip-if "" { *-*-* } { "*" } { "-DACC_MEM_SHARED=0" } } 4 5program main 6 implicit none 7 include "openacc_lib.h" 8 9 integer, parameter :: N = 256 10 integer, allocatable :: h(:) 11 integer :: i 12 integer :: async = 5 13 14 allocate (h(N)) 15 16 do i = 1, N 17 h(i) = i 18 end do 19 20 call acc_copyin (h) 21 22 do i = 1, N 23 h(i) = i + i 24 end do 25 26 call acc_update_device_async (h, sizeof (h), async) 27 28 if (acc_is_present (h) .neqv. .TRUE.) stop 1 29 30 h(:) = 0 31 32 call acc_copyout_async (h, sizeof (h), async) 33 34 call acc_wait (async) 35 36 do i = 1, N 37 if (h(i) /= i + i) stop 2 38 end do 39 40 call acc_copyin (h, sizeof (h)) 41 42 h(:) = 0 43 44 call acc_update_self_async (h, sizeof (h), async) 45 46 if (acc_is_present (h) .neqv. .TRUE.) stop 3 47 48 do i = 1, N 49 if (h(i) /= i + i) stop 4 50 end do 51 52 call acc_delete_async (h, async) 53 54 call acc_wait (async) 55 56 if (acc_is_present (h) .neqv. .FALSE.) stop 5 57 58end program 59