@@ -149,44 +149,48 @@ void launch_grouped(handler &h, range<3> r, range<3> size,
149
149
}
150
150
151
151
template <typename KernelType>
152
- void launch_grouped (const queue &q, range<1 > r, range<1 > size,
153
- const KernelType &k,
152
+ constexpr bool enable_kernel_function_overload =
153
+ !std::is_same_v<typename std::decay_t <KernelType>, sycl::kernel>;
154
+
155
+ template <typename KernelType, typename = typename std::enable_if_t <
156
+ enable_kernel_function_overload<KernelType>>>
157
+ void launch_grouped (const queue &q, range<1 > r, range<1 > size, KernelType &&k,
154
158
const sycl::detail::code_location &codeLoc =
155
159
sycl::detail::code_location::current ()) {
156
160
#ifdef __DPCPP_ENABLE_UNFINISHED_NO_CGH_SUBMIT
157
- detail::submit_kernel_direct (q,
158
- ext::oneapi::experimental::empty_properties_t {},
159
- nd_range< 1 >(r, size), k );
161
+ detail::submit_kernel_direct (
162
+ q, ext::oneapi::experimental::empty_properties_t {}, nd_range< 1 >(r, size) ,
163
+ std::forward<KernelType>(k) );
160
164
#else
161
165
submit (
162
166
q, [&](handler &h) { launch_grouped<KernelType>(h, r, size, k); },
163
167
codeLoc);
164
168
#endif
165
169
}
166
- template <typename KernelType>
167
- void launch_grouped ( const queue &q, range< 2 > r, range< 2 > size,
168
- const KernelType &k,
170
+ template <typename KernelType, typename = typename std:: enable_if_t <
171
+ enable_kernel_function_overload<KernelType>>>
172
+ void launch_grouped ( const queue &q, range< 2 > r, range< 2 > size, KernelType & &k,
169
173
const sycl::detail::code_location &codeLoc =
170
174
sycl::detail::code_location::current ()) {
171
175
#ifdef __DPCPP_ENABLE_UNFINISHED_NO_CGH_SUBMIT
172
- detail::submit_kernel_direct (q,
173
- ext::oneapi::experimental::empty_properties_t {},
174
- nd_range< 2 >(r, size), k );
176
+ detail::submit_kernel_direct (
177
+ q, ext::oneapi::experimental::empty_properties_t {}, nd_range< 2 >(r, size) ,
178
+ std::forward<KernelType>(k) );
175
179
#else
176
180
submit (
177
181
q, [&](handler &h) { launch_grouped<KernelType>(h, r, size, k); },
178
182
codeLoc);
179
183
#endif
180
184
}
181
- template <typename KernelType>
182
- void launch_grouped ( const queue &q, range< 3 > r, range< 3 > size,
183
- const KernelType &k,
185
+ template <typename KernelType, typename = typename std:: enable_if_t <
186
+ enable_kernel_function_overload<KernelType>>>
187
+ void launch_grouped ( const queue &q, range< 3 > r, range< 3 > size, KernelType & &k,
184
188
const sycl::detail::code_location &codeLoc =
185
189
sycl::detail::code_location::current ()) {
186
190
#ifdef __DPCPP_ENABLE_UNFINISHED_NO_CGH_SUBMIT
187
- detail::submit_kernel_direct (q,
188
- ext::oneapi::experimental::empty_properties_t {},
189
- nd_range< 3 >(r, size), k );
191
+ detail::submit_kernel_direct (
192
+ q, ext::oneapi::experimental::empty_properties_t {}, nd_range< 3 >(r, size) ,
193
+ std::forward<KernelType>(k) );
190
194
#else
191
195
submit (
192
196
q, [&](handler &h) { launch_grouped<KernelType>(h, r, size, k); },
0 commit comments