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 wait (0, 1) 27 28 !$acc parallel 29 !$acc loop 30 do i = 1, N 31 c(i) = a(i) + b(i) 32 end do 33 !$acc end parallel 34 35 do i = 1, N 36 if (c(i) .ne. 2.0) STOP 1 37 end do 38 39 !$acc kernels async (0) 40 !$acc loop 41 do i = 1, N 42 a(i) = 1 43 end do 44 !$acc end kernels 45 46 !$acc kernels async (1) 47 !$acc loop 48 do i = 1, N 49 b(i) = 1 50 end do 51 !$acc end kernels 52 53 !$acc wait (0, 1) 54 55 !$acc kernels 56 !$acc loop 57 do i = 1, N 58 c(i) = a(i) + b(i) 59 end do 60 !$acc end kernels 61 62 do i = 1, N 63 if (c(i) .ne. 2.0) STOP 2 64 end do 65 66 deallocate (a) 67 deallocate (b) 68 deallocate (c) 69end program asyncwait 70