1
1
#pragma once
2
2
3
3
#include < sycl/ext/oneapi/experimental/enqueue_functions.hpp>
4
+ #include < sycl/khr/requirements.hpp>
4
5
5
6
namespace sycl {
6
7
inline namespace _V1 {
7
8
8
- #ifdef __DPCPP_ENABLE_UNFINISHED_KHR_EXTENSIONS
9
+
10
+ // #ifdef __DPCPP_ENABLE_UNFINISHED_KHR_EXTENSIONS
9
11
namespace khr {
10
12
11
13
template <typename CommandGroupFunc>
@@ -148,32 +150,33 @@ void launch_grouped(handler &h, range<3> r, range<3> size,
148
150
h.parallel_for (nd_range<3 >(r, size), k);
149
151
}
150
152
151
- template <typename KernelType>
152
- void launch_grouped (const queue &q, range<1 > r, range<1 > size,
153
+ template <typename KernelType, typename ... Requirements >
154
+ void launch_grouped (queue &q, range<1 > r, range<1 > size,
153
155
const KernelType &k,
154
156
const sycl::detail::code_location &codeLoc =
155
- sycl::detail::code_location::current ()) {
156
- submit (
157
- q, [&](handler &h) { launch_grouped<KernelType>(h, r, size, k); },
158
- codeLoc );
157
+ sycl::detail::code_location::current (),
158
+ const requirements<Requirements...> req = {}) {
159
+ ( void )codeLoc;
160
+ q. parallel_for_no_handler (nd_range< 1 >(r, size), k, req );
159
161
}
160
- template <typename KernelType>
161
- void launch_grouped (const queue &q, range<2 > r, range<2 > size,
162
+
163
+ template <typename KernelType, typename ... Requirements>
164
+ void launch_grouped (queue &q, range<2 > r, range<2 > size,
162
165
const KernelType &k,
163
166
const sycl::detail::code_location &codeLoc =
164
- sycl::detail::code_location::current ()) {
165
- submit (
166
- q, [&](handler &h) { launch_grouped<KernelType>(h, r, size, k); },
167
- codeLoc );
167
+ sycl::detail::code_location::current (),
168
+ const requirements<Requirements...> req = {}) {
169
+ ( void )codeLoc;
170
+ q. parallel_for_no_handler (nd_range< 2 >(r, size), k, req );
168
171
}
169
- template <typename KernelType>
170
- void launch_grouped (const queue &q, range<3 > r, range<3 > size,
172
+ template <typename KernelType, typename ... Requirements >
173
+ void launch_grouped (queue &q, range<3 > r, range<3 > size,
171
174
const KernelType &k,
172
175
const sycl::detail::code_location &codeLoc =
173
- sycl::detail::code_location::current ()) {
174
- submit (
175
- q, [&](handler &h) { launch_grouped<KernelType>(h, r, size, k); },
176
- codeLoc );
176
+ sycl::detail::code_location::current (),
177
+ const requirements<Requirements...> req = {}) {
178
+ ( void )codeLoc;
179
+ q. parallel_for_no_handler (nd_range< 3 >(r, size), k, req );
177
180
}
178
181
179
182
template <typename ... Args>
@@ -283,7 +286,8 @@ template <typename KernelType>
283
286
void launch_task (const sycl::queue &q, const KernelType &k,
284
287
const sycl::detail::code_location &codeLoc =
285
288
sycl::detail::code_location::current ()) {
286
- submit (q, [&](handler &h) { launch_task<KernelType>(h, k); }, codeLoc);
289
+ (void )codeLoc;
290
+ q.single_task_no_handler (k);
287
291
}
288
292
289
293
template <typename ... Args>
@@ -298,6 +302,11 @@ void launch_task(const queue &q, const kernel &k, Args &&...args) {
298
302
[&](handler &h) { launch_task (h, k, std::forward<Args>(args)...); });
299
303
}
300
304
305
+ template <typename FuncT>
306
+ void launch_host_task (queue &q, FuncT &&Func) {
307
+ q.host_task_no_handler (std::move (Func));
308
+ }
309
+
301
310
inline void memcpy (handler &h, void *dest, const void *src, size_t numBytes) {
302
311
h.memcpy (dest, src, numBytes);
303
312
}
@@ -520,6 +529,6 @@ inline void event_barrier(const queue &q, const std::vector<event> &events,
520
529
}
521
530
522
531
} // namespace khr
523
- #endif
532
+ // #endif
524
533
} // namespace _V1
525
534
} // namespace sycl
0 commit comments