! { dg-do run } program main use openacc implicit none integer :: i, j integer, parameter :: N = 1000000 integer, parameter :: nprocs = 2 integer :: k(nprocs) k(:) = 0 !$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 call acc_wait_all_async (nprocs + 1) call acc_wait (nprocs + 1) if (acc_async_test (1) .neqv. .TRUE.) stop 1 if (acc_async_test (2) .neqv. .TRUE.) stop 2 if (acc_async_test (nprocs + 1) .neqv. .TRUE.) stop 3 end program