@@ -158,44 +158,62 @@ void launch_grouped(const queue &q, range<1> r, range<1> size, KernelType &&k,
158
158
const sycl::detail::code_location &codeLoc =
159
159
sycl::detail::code_location::current ()) {
160
160
#ifdef __DPCPP_ENABLE_UNFINISHED_NO_CGH_SUBMIT
161
- detail::submit_kernel_direct (
162
- q, ext::oneapi::experimental::empty_properties_t {}, nd_range<1 >(r, size),
163
- std::forward<KernelType>(k));
164
- #else
165
- submit (
166
- q, [&](handler &h) { launch_grouped<KernelType>(h, r, size, k); },
167
- codeLoc);
161
+ // TODO The handler-less path does not support kernel function properties yet.
162
+ if constexpr (!(ext::oneapi::experimental::detail::
163
+ HasKernelPropertiesGetMethod<
164
+ const KernelType &>::value)) {
165
+ detail::submit_kernel_direct (
166
+ q, ext::oneapi::experimental::empty_properties_t {},
167
+ nd_range<1 >(r, size), std::forward<KernelType>(k));
168
+ } else
168
169
#endif
170
+ {
171
+ submit (
172
+ q, [&](handler &h) { launch_grouped<KernelType>(h, r, size, k); },
173
+ codeLoc);
174
+ }
169
175
}
170
176
template <typename KernelType, typename = typename std::enable_if_t <
171
177
enable_kernel_function_overload<KernelType>>>
172
178
void launch_grouped (const queue &q, range<2 > r, range<2 > size, KernelType &&k,
173
179
const sycl::detail::code_location &codeLoc =
174
180
sycl::detail::code_location::current ()) {
175
181
#ifdef __DPCPP_ENABLE_UNFINISHED_NO_CGH_SUBMIT
176
- detail::submit_kernel_direct (
177
- q, ext::oneapi::experimental::empty_properties_t {}, nd_range<2 >(r, size),
178
- std::forward<KernelType>(k));
179
- #else
180
- submit (
181
- q, [&](handler &h) { launch_grouped<KernelType>(h, r, size, k); },
182
- codeLoc);
182
+ // TODO The handler-less path does not support kernel function properties yet.
183
+ if constexpr (!(ext::oneapi::experimental::detail::
184
+ HasKernelPropertiesGetMethod<
185
+ const KernelType &>::value)) {
186
+ detail::submit_kernel_direct (
187
+ q, ext::oneapi::experimental::empty_properties_t {},
188
+ nd_range<2 >(r, size), std::forward<KernelType>(k));
189
+ } else
183
190
#endif
191
+ {
192
+ submit (
193
+ q, [&](handler &h) { launch_grouped<KernelType>(h, r, size, k); },
194
+ codeLoc);
195
+ }
184
196
}
185
197
template <typename KernelType, typename = typename std::enable_if_t <
186
198
enable_kernel_function_overload<KernelType>>>
187
199
void launch_grouped (const queue &q, range<3 > r, range<3 > size, KernelType &&k,
188
200
const sycl::detail::code_location &codeLoc =
189
201
sycl::detail::code_location::current ()) {
190
202
#ifdef __DPCPP_ENABLE_UNFINISHED_NO_CGH_SUBMIT
191
- detail::submit_kernel_direct (
192
- q, ext::oneapi::experimental::empty_properties_t {}, nd_range<3 >(r, size),
193
- std::forward<KernelType>(k));
194
- #else
195
- submit (
196
- q, [&](handler &h) { launch_grouped<KernelType>(h, r, size, k); },
197
- codeLoc);
203
+ // TODO The handler-less path does not support kernel function properties yet.
204
+ if constexpr (!(ext::oneapi::experimental::detail::
205
+ HasKernelPropertiesGetMethod<
206
+ const KernelType &>::value)) {
207
+ detail::submit_kernel_direct (
208
+ q, ext::oneapi::experimental::empty_properties_t {},
209
+ nd_range<3 >(r, size), std::forward<KernelType>(k));
210
+ } else
198
211
#endif
212
+ {
213
+ submit (
214
+ q, [&](handler &h) { launch_grouped<KernelType>(h, r, size, k); },
215
+ codeLoc);
216
+ }
199
217
}
200
218
201
219
template <typename ... Args>
0 commit comments