kernels loop and enter data had a too restrictive constraint for the wait clause.
The wait clause is allowed multiple times and not only once. This patch fix this problem.
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
| flang/test/Semantics/OpenACC/acc-data.f90 | ||
|---|---|---|
| 62 | Looking at it, I assume wait1 is an event of some kind ? That data create directive is waiting for finishing ? | |
| flang/test/Semantics/OpenACC/acc-data.f90 | ||
|---|---|---|
| 62 | Spec: https://www.openacc.org/sites/default/files/inline-images/Specification/OpenACC-3.1-final.pdf In Section 2.16.2 it says "If there is an argument to the wait clause, it must be a wait argument (See 2.16.3)." Section 2.16.3/Page 80 The wait argument, if it appears, must be a wait-argument where wait-argument is: [ devnum : int-expr : ] [ queues : ] int-expr-list | |
| flang/test/Semantics/OpenACC/acc-data.f90 | ||
|---|---|---|
| 62 | The @kiranchandramohan for mentioning the spec. Basically the most basic wait argument is just a int-expr. You can see it as a stream number in CUDA. | |
LGTM!
| flang/test/Semantics/OpenACC/acc-data.f90 | ||
|---|---|---|
| 62 | Thanks for the stream number analogy :) | |
Looking at it, I assume wait1 is an event of some kind ? That data create directive is waiting for finishing ?
Then again where is wait1 defined ?
Could you point me to the spec WRT this clause.