For example:
|
#pragma acc exit data delete(a[0:n], b[0:n]) copyout(c[0:n]) |
That exit data doesn't have an async clause, and neither a wait clause to wait for the preceding async(1) code, and also there is no intervening wait directive or acc_wait. Thus -- per my understanding -- that exit data may start executing while the the preceding async(1) code is still in progress, and thus may unmap data that's still in use.
As I've seen such a pattern not only here but also in several other test cases, I wonder if my understanding is flawed, or if all these should be fixed (in some way still to be determined)?
For example:
OpenACCV-V/Tests/acc_delete_finalize_async.c
Line 113 in 842a1fb
That
exit datadoesn't have anasyncclause, and neither awaitclause to wait for the precedingasync(1)code, and also there is no interveningwaitdirective oracc_wait. Thus -- per my understanding -- thatexit datamay start executing while the the precedingasync(1)code is still in progress, and thus may unmap data that's still in use.As I've seen such a pattern not only here but also in several other test cases, I wonder if my understanding is flawed, or if all these should be fixed (in some way still to be determined)?