1! { dg-do run }
2
3program main
4  use openacc
5  implicit none
6
7  integer :: i, j
8  integer, parameter :: N = 1000000
9  integer, parameter :: nprocs = 2
10  integer :: k(nprocs)
11
12  k(:) = 0
13
14  !$acc data copy (k(1:nprocs))
15    do j = 1, nprocs
16      !$acc parallel async (j)
17        do i = 1, N
18          k(j) = k(j) + 1
19        end do
20      !$acc end parallel
21    end do
22  !$acc end data
23
24  call acc_wait_all_async (nprocs + 1)
25
26  call acc_wait (nprocs + 1)
27
28  if (acc_async_test (1) .neqv. .TRUE.) stop 1
29  if (acc_async_test (2) .neqv. .TRUE.) stop 2
30  if (acc_async_test (nprocs + 1) .neqv. .TRUE.) stop 3
31
32end program
33