4 real, allocatable
:: a(:), b(:), c(:), d(:), e(:)
18 !$acc enter data copyin (a(1:N)) copyin (b(1:N)) copyin (N) async
20 !$acc parallel async wait
27 !$acc exit data copyout (a(1:N)) copyout (b(1:N))
30 if (a(i
) .ne
. 3.0) call abort
31 if (b(i
) .ne
. 3.0) call abort
37 !$acc enter data copyin (a(1:N)) copyin (b(1:N)) async (1)
39 !$acc parallel async (1) wait (1)
46 !$acc exit data copyout (a(1:N)) copyout (b(1:N))
49 if (a(i
) .ne
. 2.0) call abort
50 if (b(i
) .ne
. 2.0) call abort
58 !$acc enter data copyin (a(1:N)) create (b(1:N)) create (c(1:N)) create (d(1:N))
60 !$acc parallel async (1)
62 b(i
) = (a(i
) * a(i
) * a(i
)) / a(i
)
66 !$acc parallel async (1)
68 c(i
) = (a(i
) * 4) / a(i
)
72 !$acc parallel async (1)
74 d(i
) = ((a(i
) * a(i
) + a(i
)) / a(i
)) - a(i
)
79 !$acc exit data copyout (a(1:N)) copyout (b(1:N)) copyout (c(1:N)) copyout (d(1:N))
82 if (a(i
) .ne
. 3.0) call abort
83 if (b(i
) .ne
. 9.0) call abort
84 if (c(i
) .ne
. 4.0) call abort
85 if (d(i
) .ne
. 1.0) call abort
94 !$acc enter data copyin (a(1:N)) create (b(1:N)) create (c(1:N)) create (d(1:N)) copyin (e(1:N))
96 !$acc parallel async (1)
98 b(i
) = (a(i
) * a(i
) * a(i
)) / a(i
)
102 !$acc parallel async (1)
104 c(i
) = (a(i
) * 4) / a(i
)
108 !$acc parallel async (1)
110 d(i
) = ((a(i
) * a(i
) + a(i
)) / a(i
)) - a(i
)
114 !$acc parallel wait (1) async (1)
116 e(i
) = a(i
) + b(i
) + c(i
) + d(i
)
121 !$acc exit data copyout (a(1:N)) copyout (b(1:N)) copyout (c(1:N)) copyout (d(1:N)) copyout (e(1:N))
122 !$acc exit data delete (N)
125 if (a(i
) .ne
. 2.0) call abort
126 if (b(i
) .ne
. 4.0) call abort
127 if (c(i
) .ne
. 4.0) call abort
128 if (d(i
) .ne
. 1.0) call abort
129 if (e(i
) .ne
. 11.0) call abort
131 end program asyncwait