| ! { dg-do run } |
| ! { dg-skip-if "" { *-*-* } { "*" } { "-DACC_MEM_SHARED=0" } } |
| |
| program update |
| use openacc |
| implicit none |
| integer, parameter :: N = 8 |
| integer, parameter :: NDIV2 = N / 2 |
| real :: a(N), b(N) |
| integer i |
| |
| do i = 1, N |
| a(i) = 3.0 |
| b(i) = 0.0 |
| end do |
| |
| !$acc enter data copyin (a, b) |
| |
| !$acc parallel present (a, b) |
| do i = 1, N |
| b(i) = a(i) |
| end do |
| !$acc end parallel |
| |
| !$acc update host (a, b) |
| |
| do i = 1, N |
| if (a(i) .ne. 3.0) STOP 1 |
| if (b(i) .ne. 3.0) STOP 2 |
| end do |
| |
| if (acc_is_present (a) .neqv. .TRUE.) STOP 3 |
| if (acc_is_present (b) .neqv. .TRUE.) STOP 4 |
| |
| do i = 1, N |
| a(i) = 5.0 |
| b(i) = 1.0 |
| end do |
| |
| !$acc update device (a, b) |
| |
| !$acc parallel present (a, b) |
| do i = 1, N |
| b(i) = a(i) |
| end do |
| !$acc end parallel |
| |
| !$acc update host (a, b) |
| |
| do i = 1, N |
| if (a(i) .ne. 5.0) STOP 5 |
| if (b(i) .ne. 5.0) STOP 6 |
| end do |
| |
| if (acc_is_present (a) .neqv. .TRUE.) STOP 7 |
| if (acc_is_present (b) .neqv. .TRUE.) STOP 8 |
| |
| !$acc parallel present (a, b) |
| do i = 1, N |
| b(i) = a(i) |
| end do |
| !$acc end parallel |
| |
| !$acc update host (a, b) |
| |
| do i = 1, N |
| if (a(i) .ne. 5.0) STOP 9 |
| if (b(i) .ne. 5.0) STOP 10 |
| end do |
| |
| if (acc_is_present (a) .neqv. .TRUE.) STOP 11 |
| if (acc_is_present (b) .neqv. .TRUE.) STOP 12 |
| |
| do i = 1, N |
| a(i) = 6.0 |
| b(i) = 0.0 |
| end do |
| |
| !$acc update device (a, b) |
| |
| do i = 1, N |
| a(i) = 9.0 |
| end do |
| |
| !$acc parallel present (a, b) |
| do i = 1, N |
| b(i) = a(i) |
| end do |
| !$acc end parallel |
| |
| !$acc update host (a, b) |
| |
| do i = 1, N |
| if (a(i) .ne. 6.0) STOP 13 |
| if (b(i) .ne. 6.0) STOP 14 |
| end do |
| |
| if (acc_is_present (a) .neqv. .TRUE.) STOP 15 |
| if (acc_is_present (b) .neqv. .TRUE.) STOP 16 |
| |
| do i = 1, N |
| a(i) = 7.0 |
| b(i) = 2.0 |
| end do |
| |
| !$acc update device (a, b) |
| |
| do i = 1, N |
| a(i) = 9.0 |
| end do |
| |
| !$acc parallel present (a, b) |
| do i = 1, N |
| b(i) = a(i) |
| end do |
| !$acc end parallel |
| |
| !$acc update host (a, b) |
| |
| do i = 1, N |
| if (a(i) .ne. 7.0) STOP 17 |
| if (b(i) .ne. 7.0) STOP 18 |
| end do |
| |
| do i = 1, N |
| a(i) = 9.0 |
| end do |
| |
| !$acc update device (a) |
| |
| !$acc parallel present (a, b) |
| do i = 1, N |
| b(i) = a(i) |
| end do |
| !$acc end parallel |
| |
| !$acc update host (a, b) |
| |
| do i = 1, N |
| if (a(i) .ne. 9.0) STOP 19 |
| if (b(i) .ne. 9.0) STOP 20 |
| end do |
| |
| if (acc_is_present (a) .neqv. .TRUE.) STOP 21 |
| if (acc_is_present (b) .neqv. .TRUE.) STOP 22 |
| |
| do i = 1, N |
| a(i) = 5.0 |
| end do |
| |
| !$acc update device (a) |
| |
| do i = 1, N |
| a(i) = 6.0 |
| end do |
| |
| !$acc update device (a(1:NDIV2)) |
| |
| !$acc parallel present (a, b) |
| do i = 1, N |
| b(i) = a(i) |
| end do |
| !$acc end parallel |
| |
| !$acc update host (a, b) |
| |
| do i = 1, NDIV2 |
| if (a(i) .ne. 6.0) STOP 23 |
| if (b(i) .ne. 6.0) STOP 24 |
| end do |
| |
| do i = NDIV2 + 1, N |
| if (a(i) .ne. 5.0) STOP 25 |
| if (b(i) .ne. 5.0) STOP 26 |
| end do |
| |
| if (acc_is_present (a) .neqv. .TRUE.) STOP 27 |
| if (acc_is_present (b) .neqv. .TRUE.) STOP 28 |
| |
| do i = 1, N |
| a(i) = 0.0 |
| end do |
| |
| !$acc update device (a(1:4)) |
| |
| !$acc parallel present (a) |
| do i = 1, N |
| a(i) = a(i) + 1.0 |
| end do |
| !$acc end parallel |
| |
| !$acc update host (a(5:N)) |
| |
| do i = 1, NDIV2 |
| if (a(i) .ne. 0.0) STOP 29 |
| end do |
| |
| do i = NDIV2 + 1, N |
| if (a(i) .ne. 6.0) STOP 30 |
| end do |
| |
| !$acc update host (a(1:4)) |
| |
| do i = 1, NDIV2 |
| if (a(i) .ne. 1.0) STOP 31 |
| end do |
| |
| do i = NDIV2 + 1, N |
| if (a(i) .ne. 6.0) STOP 32 |
| end do |
| |
| a(3) = 9 |
| a(4) = 9 |
| a(5) = 9 |
| a(6) = 9 |
| |
| !$acc update device (a(3:6)) |
| |
| !$acc parallel present (a(1:N)) |
| do i = 1, N |
| a(i) = a(i) + 1.0 |
| end do |
| !$acc end parallel |
| |
| !$acc update host (a(3:6)) |
| |
| do i = 1, 2 |
| if (a(i) .ne. 1.0) STOP 33 |
| end do |
| |
| do i = 3, 6 |
| if (a(i) .ne. 10.0) STOP 34 |
| end do |
| |
| do i = 7, N |
| if (a(i) .ne. 6.0) STOP 35 |
| end do |
| |
| !$acc exit data delete (a, b) |
| |
| end program |
| |