1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- ! See also "lib-16.f90".
- ! { dg-do run }
- ! { dg-skip-if "" { *-*-* } { "*" } { "-DACC_MEM_SHARED=0" } }
- program main
- implicit none
- include "openacc_lib.h"
- integer, parameter :: N = 256
- integer, allocatable :: h(:)
- integer :: i
- integer :: async = 5
- 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_async (h, sizeof (h), async)
- if (acc_is_present (h) .neqv. .TRUE.) stop 1
- call acc_wait (async)
- h(:) = 0
- call acc_copyout_async (h, sizeof (h), async)
- call acc_wait (async)
- 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_async (h, sizeof (h), async)
-
- if (acc_is_present (h) .neqv. .TRUE.) stop 3
- call acc_wait (async)
- do i = 1, N
- if (h(i) /= i + i) stop 4
- end do
- call acc_delete_async (h, async)
- call acc_wait (async)
- if (acc_is_present (h) .neqv. .FALSE.) stop 5
-
- end program
|