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.