KhronosGroup / KhronosGroup/SYCL-Docs
Unify the way callable objects are passed to various API
- Dominant language
- JavaScript
- Stars
- 158
- Forks
- 80
- Avg merge
- 7d 6h
- Merged PRs (30d)
- 5
Description
Currently we have:
```c++
explicit sycl::queue::queue(const sycl::async_handler& asyncHandler, const sycl::property_list& propList = {});
template sycl::event sycl::queue::submit(T cgf);
template sycl::event single_task(const KernelType& kernelFunc);
template void sycl::handler::single_task(const KernelType& kernelFunc)
template void sycl::handler::host_task(T&& hostTaskCallable);
```
Can we optimize more to avoid copies with `T&&` sometimes?
Do we need all these differences? If so we could explain why.
Does the queue keep a copy of the `sycl::async_handler`? A reference?
Contributor guide
No contributing guide indexed for this repository
Research direction
Compare the callable declarations listed in the issue: queue construction, queue::submit, single_task, handler::single_task, and handler::host_task. First determine the intended ownership and forwarding semantics for each API, then document the rationale and clarify whether the queue copies or references the async handler; done means the differences and copy behavior are specified consistently.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- api, documentation
- Issue type
- Documentation
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100