1! { dg-do run } 2 3program asyncwait 4 integer, parameter :: N = 64 5 real, allocatable :: a(:), b(:), c(:) 6 integer i 7 8 allocate (a(N)) 9 allocate (b(N)) 10 allocate (c(N)) 11 12 !$acc parallel async (0) 13 !$acc loop 14 do i = 1, N 15 a(i) = 1 16 end do 17 !$acc end parallel 18 19 !$acc parallel async (1) 20 !$acc loop 21 do i = 1, N 22 b(i) = 1 23 end do 24 !$acc end parallel 25 26 !$acc parallel wait (0, 1) 27 !$acc loop 28 do i = 1, N 29 c(i) = a(i) + b(i) 30 end do 31 !$acc end parallel 32 33 do i = 1, N 34 if (c(i) .ne. 2.0) STOP 1 35 end do 36 37 !$acc kernels async (0) 38 !$acc loop 39 do i = 1, N 40 a(i) = 1 41 end do 42 !$acc end kernels 43 44 !$acc kernels async (1) 45 !$acc loop 46 do i = 1, N 47 b(i) = 1 48 end do 49 !$acc end kernels 50 51 !$acc kernels wait (0, 1) 52 !$acc loop 53 do i = 1, N 54 c(i) = a(i) + b(i) 55 end do 56 !$acc end kernels 57 58 do i = 1, N 59 if (c(i) .ne. 2.0) STOP 2 60 end do 61 62 deallocate (a) 63 deallocate (b) 64 deallocate (c) 65end program asyncwait 66