KhronosGroup / KhronosGroup/SYCL-Docs

Unify the way callable objects are passed to various API

Open
#273 3 comments 0 reactions 0 assignees View on GitHub
question
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.