Open
Description
Currently, Clacc does not support the kernels
construct. Its implementation will almost certainly share analyses needed for implicit worker
and vector
clauses and the auto
clause, so issues #6 and #7 are likely prerequisites for this issue.
Tasks:
- Investigate other OpenACC implementations (e.g., NVIDIA, GCC) to understand how their implementations of the
kernels
construct behave. For example, is the main point to just addacc loop auto
to all contained loop nests that don't otherwise have aloop
construct? Where are implicitgang
clauses added in akernels
construct? What about implicit data attributes? - Investigate the OpenACC specification and its open issues related to the
kernels
construct. The spec is understood to permit a lot of flexibility here. Taking both investigations into account, file additional OpenACC spec issues and pull requests if clarity in the spec is needed. - If possible, implement a simple translation to standard OpenMP features that produces correct behavior.
- Devise an OpenMP extension that represents the full semantics of the
kernels
construct and that can be optimized, potentially at the LLVM IR level. - Implement translation to OpenMP from the OpenACC
kernels
construct.