1 #ifndef TRISYCL_SYCL_HANDLER_HPP
2 #define TRISYCL_SYCL_HANDLER_HPP
52 current_task = std::make_shared<detail::task>();
65 template <
typename DataType,
85 void set_arg(
int arg_index, T scalar_value) {
103 template <
typename KernelName = std::
nullptr_t>
105 current_task->schedule(F);
133 #define TRISYCL_parallel_for_functor_GLOBAL(N) \
134 template <typename KernelName = std::nullptr_t, \
135 typename ParallelForFunctor> \
136 void parallel_for(range<N> global_size, \
137 ParallelForFunctor f) { \
138 current_task->schedule([=] { detail::parallel_for(global_size, f); }); \
169 #define TRISYCL_ParallelForFunctor_GLOBAL_OFFSET(N) \
170 template <typename KernelName = std::nullptr_t, \
171 typename ParallelForFunctor> \
172 void parallel_for(range<N> global_size, \
174 ParallelForFunctor f) { \
175 current_task->schedule([=] { \
176 detail::parallel_for_global_offset(global_size, \
206 template <typename KernelName,
207 std::
size_t Dimensions,
208 typename ParallelForFunctor>
235 template <
typename KernelName = std::nullptr_t,
236 std::size_t Dimensions = 1,
237 typename ParallelForFunctor>
239 ParallelForFunctor f) {
260 template <std::
size_t Dimensions = 1>
274 template <std::
size_t Dimensions = 1>
294 #endif // TRISYCL_SYCL_HANDLER_HPP
void single_task(kernel syclKernel)
Kernel invocation method of a kernel defined as pointer to a kernel object, described in detail in 3...
The vector type to be used as SYCL vector.
std::shared_ptr< detail::task > current_task
Attach the task and accessors to it.
#define TRISYCL_ParallelForFunctor_GLOBAL_OFFSET(N)
void set_arg(int arg_index, accessor< DataType, Dimensions, Mode, Target > acc_obj)
Set kernel args for an OpenCL kernel which is used through the SYCL/OpenCL interop interface...
void unimplemented()
Display an "unimplemented" message.
The accessor abstracts the way buffer data are accessed inside a kernel in a multidimensional variabl...
A ND-range, made by a global and local range, to specify work-group and work-item organization...
void parallel_for_work_group(nd_range< Dimensions > r, ParallelForFunctor f)
Hierarchical kernel invocation method of a kernel defined as a lambda encoding the body of each work-...
Implement the detail of the parallel constructions to launch kernels.
A SYCL range defines a multi-dimensional index range that can be used to define launch parallel compu...
Command group handler class.
TRISYCL_parallel_for_functor_GLOBAL(1) TRISYCL_parallel_for_functor_GLOBAL(2) TRISYCL_parallel_for_functor_GLOBAL(3) TRISYCL_ParallelForFunctor_GLOBAL_OFFSET(1) TRISYCL_ParallelForFunctor_GLOBAL_OFFSET(2) TRISYCL_ParallelForFunctor_GLOBAL_OFFSET(3) template< typename KernelName
Kernel invocation method of a kernel defined as a lambda or functor, for the specified range and offs...
void set_arg(int arg_index, T scalar_value)
Set kernel args for an OpenCL kernel which is used through the SYCL/OpenCL interoperability interface...
std::size_t ParallelForFunctor void parallel_for(nd_range< Dimensions > r, ParallelForFunctor f)
target
The target enumeration describes the type of object to be accessed via the accessor.
void parallel_for(range< Dimensions > numWorkItems, kernel sycl_kernel)
Kernel invocation method of a kernel defined as pointer to a kernel object, for the specified range a...
void parallel_for_workgroup(nd_range< Dimensions > r, ParallelForFunctor f)
Implement the loop on the work-groups.
mode
This describes the type of the access mode to be used via accessor.
void parallel_for(nd_range< Dimensions >, kernel syclKernel)
Kernel invocation method of a kernel defined as pointer to a kernel object, for the specified nd_rang...
void single_task(std::function< void(void)> F)
Kernel invocation method of a kernel defined as a lambda or functor.
void parallel_for(range< Dimensions > r, ParallelForFunctor f)
Implementation of a data parallel computation with parallelism specified at launch time by a range<>...