diff --git a/sycl/doc/extensions/experimental/sycl_ext_oneapi_enqueue_functions.asciidoc b/sycl/doc/extensions/experimental/sycl_ext_oneapi_enqueue_functions.asciidoc index b5ffbb1a63472..f2d0f7c4ef8fb 100644 --- a/sycl/doc/extensions/experimental/sycl_ext_oneapi_enqueue_functions.asciidoc +++ b/sycl/doc/extensions/experimental/sycl_ext_oneapi_enqueue_functions.asciidoc @@ -301,6 +301,26 @@ a! ---- namespace sycl::ext::oneapi::experimental { +template +void single_task(sycl::queue q, Properties properties, const KernelType& k); + +template +void single_task(sycl::handler &h, Properties properties, const KernelType& k); + +} +---- +!==== +_Effects_: Enqueues a kernel function to the `sycl::queue` or `sycl::handler` +as a single task, using the kernel launch properties specified by `properties`. + +a| +[frame=all,grid=none] +!==== +a! +[source,c++] +---- +namespace sycl::ext::oneapi::experimental { + template void single_task(sycl::queue q, const sycl::kernel& k, Args&&... args); @@ -314,6 +334,29 @@ _Effects_: Enqueues a kernel object to the `sycl::queue` or `sycl::handler` as a single task. The arguments in `args` are passed to the kernel in the same order. +a| +[frame=all,grid=none] +!==== +a! +[source,c++] +---- +namespace sycl::ext::oneapi::experimental { + +template +void single_task(sycl::queue q, Properties properties, const sycl::kernel& k, + Args&&... args); + +template +void single_task(sycl::handler &h, Properties properties, const sycl::kernel& k, + Args&&... args); + +} +---- +!==== +_Effects_: Enqueues a kernel object to the `sycl::queue` or `sycl::handler` as +a single task, using the kernel launch properties specified by `properties`. The +arguments in `args` are passed to the kernel in the same order. + |==== @@ -574,6 +617,28 @@ a! ---- namespace sycl::ext::oneapi::experimental { +template +void memcpy(sycl::queue q, Properties properties, void* dest, const void* src, + size_t numBytes); + +template +void memcpy(sycl::handler &h, Properties properties, void* dest, const void* src, + size_t numBytes); + +} +---- +!==== +_Effects_: Enqueues a `memcpy` to the `sycl::queue` or `sycl::handler` using the +launch properties specified by `properties`. + +a| +[frame=all,grid=none] +!==== +a! +[source,c++] +---- +namespace sycl::ext::oneapi::experimental { + template void copy(sycl::queue q, const T* src, T* dest, size_t count); @@ -593,6 +658,28 @@ a! ---- namespace sycl::ext::oneapi::experimental { +template +void copy(sycl::queue q, Properties properties, const T* src, T* dest, + size_t count); + +template +void copy(sycl::handler &h, Properties properties, const T* src, T* dest, + size_t count); + +} +---- +!==== +_Effects_: Enqueues a `copy` to the `sycl::queue` or `sycl::handler` using the +launch properties specified by `properties`. + +a| +[frame=all,grid=none] +!==== +a! +[source,c++] +---- +namespace sycl::ext::oneapi::experimental { + void memset(sycl::queue q, void* ptr, int value, size_t numBytes); void memset(sycl::handler &h, void* ptr, int value, size_t numBytes); @@ -610,6 +697,28 @@ a! ---- namespace sycl::ext::oneapi::experimental { +template +void memset(sycl::queue q, Properties properties, void* ptr, int value, + size_t numBytes); + +template +void memset(sycl::handler &h, Properties properties, void* ptr, int value,9 + size_t numBytes); + +} +---- +!==== +_Effects_: Enqueues a `memset` to the `sycl::queue` or `sycl::handler` using the +launch properties specified by `properties`. + +a| +[frame=all,grid=none] +!==== +a! +[source,c++] +---- +namespace sycl::ext::oneapi::experimental { + template void fill(sycl::queue q, T* ptr, const T& pattern, size_t count); @@ -629,6 +738,28 @@ a! ---- namespace sycl::ext::oneapi::experimental { +template +void fill(sycl::queue q, Properties properties, T* ptr, const T& pattern, + size_t count); + +template +void fill(sycl::handler &h, Properties properties, T* ptr, const T& pattern, + size_t count); + +} +---- +!==== +_Effects_: Enqueues a `fill` to the `sycl::queue` or `sycl::handler` using the +launch properties specified by `properties`. + +a| +[frame=all,grid=none] +!==== +a! +[source,c++] +---- +namespace sycl::ext::oneapi::experimental { + void prefetch(sycl::queue q, void* ptr, size_t numBytes); void prefetch(sycl::handler &h, void* ptr, size_t numBytes); @@ -646,6 +777,26 @@ a! ---- namespace sycl::ext::oneapi::experimental { +template +void prefetch(sycl::queue q, Properties properties, void* ptr, size_t numBytes); + +template +void prefetch(sycl::handler &h, Properties properties, void* ptr, size_t numBytes); + +} +---- +!==== +_Effects_: Enqueues a `prefetch` to the `sycl::queue` or `sycl::handler` using +the launch properties specified by `properties`. + +a| +[frame=all,grid=none] +!==== +a! +[source,c++] +---- +namespace sycl::ext::oneapi::experimental { + void mem_advise(sycl::queue q, void* ptr, size_t numBytes, int advice); void mem_advise(sycl::handler &h, void* ptr, size_t numBytes, int advice); @@ -655,6 +806,28 @@ void mem_advise(sycl::handler &h, void* ptr, size_t numBytes, int advice); !==== _Effects_: Enqueues a `mem_advise` to the `sycl::queue` or `sycl::handler`. +a| +[frame=all,grid=none] +!==== +a! +[source,c++] +---- +namespace sycl::ext::oneapi::experimental { + +template +void mem_advise(sycl::queue q, Properties properties, void* ptr, size_t numBytes, + int advice); + +template +void mem_advise(sycl::handler &h, Properties properties, void* ptr, size_t numBytes, + int advice); + +} +---- +!==== +_Effects_: Enqueues a `mem_advise` to the `sycl::queue` or `sycl::handler` using +the launch properties specified by `properties`. + |==== @@ -673,16 +846,19 @@ a! ---- namespace sycl::ext::oneapi::experimental { -void barrier(sycl::queue q); +template +void barrier(sycl::queue q, Properties properties = {}); -void barrier(sycl::handler &h); +template +void barrier(sycl::handler &h, Properties properties = {}); } ---- !==== -_Effects_: Enqueues a command barrier to the `sycl::queue` or `sycl::handler`. +_Effects_: Enqueues a command barrier to the `sycl::queue` or `sycl::handler` +using the properties specified by `properties`. Any commands submitted after this barrier cannot begin execution until all -previously submitted commands (and any commands associated with dependendent +previously submitted commands (and any commands associated with dependent events) have completed. a| @@ -710,6 +886,31 @@ associated with other dependent events) have completed. commands unless the `queue` is in-order. Implementations may be able to optimize such partial barriers. _{endnote}_] + +a| +[frame=all,grid=none] +!==== +a! +[source,c++] +---- +namespace sycl::ext::oneapi::experimental { + +template +void partial_barrier(sycl::queue q, Properties properties, + const std::vector& events); + +template +void partial_barrier(sycl::handler &h, Properties properties, + const std::vector& events); + +} +---- +!==== +_Effects_: Enqueues a _partial_ command barrier to the `sycl::queue` or +`sycl::handler` using the properties specified by `properties`. Any commands +submitted after this barrier cannot begin execution until all commands +associated with `events` (and any commands associated with other dependent +events) have completed. |==== ==== Command Graph @@ -734,11 +935,36 @@ void execute_graph(sycl::handler &h, command_graph &g); } ---- !==== -_Constraints_: Device and context associated with queue need to be identical +_Preconditions_: Device and context associated with queue need to be identical to device and context provided at command graph creation. _Effects_: Submits an executable command graph to the `sycl::queue` or `sycl::handler`. +a| +[frame=all,grid=none] +!==== +a! +[source,c++] +---- +namespace sycl::ext::oneapi::experimental { + +template +void execute_graph(sycl::queue q, Properties properties, + command_graph &g); + +template +void execute_graph(sycl::handler &h, Properties properties, + command_graph &g); + +} +---- +!==== +_Preconditions_: Device and context associated with queue need to be identical +to device and context provided at command graph creation. + +_Effects_: Submits an executable command graph to the `sycl::queue` or +`sycl::handler` using the launch properties specified by `properties`. + |==== == Issues