===================================================================
@@ -4,12 +4,14 @@ program main
use openacc
implicit none
- integer :: i, n
+ integer :: i, j, n
+ j = 0
n = 1000000
- !$acc parallel async (0)
+ !$acc parallel async (0) copy (j)
do i = 1, 1000000
+ j = j + 1
end do
!$acc end parallel
===================================================================
@@ -4,17 +4,22 @@ program main
use openacc
implicit none
- integer :: i, j, nprocs
+ integer :: i, j
integer, parameter :: N = 1000000
+ integer, parameter :: nprocs = 2
+ integer :: k(nprocs)
- nprocs = 2
+ k(:) = 0
- do j = 1, nprocs
- !$acc parallel async (j)
- do i = 1, N
- end do
- !$acc end parallel
- end do
+ !$acc data copy (k(1:nprocs))
+ do j = 1, nprocs
+ !$acc parallel async (j)
+ do i = 1, N
+ k(j) = k(j) + 1
+ end do
+ !$acc end parallel
+ end do
+ !$acc end data
if (acc_async_test (1) .neqv. .TRUE.) call abort
if (acc_async_test (2) .neqv. .TRUE.) call abort