@@ -158,44 +158,62 @@ void launch_grouped(const queue &q, range<1> r, range<1> size, KernelType &&k,
158158 const sycl::detail::code_location &codeLoc =
159159 sycl::detail::code_location::current ()) {
160160#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
168169#endif
170+ {
171+ submit (
172+ q, [&](handler &h) { launch_grouped<KernelType>(h, r, size, k); },
173+ codeLoc);
174+ }
169175}
170176template <typename KernelType, typename = typename std::enable_if_t <
171177 enable_kernel_function_overload<KernelType>>>
172178void launch_grouped (const queue &q, range<2 > r, range<2 > size, KernelType &&k,
173179 const sycl::detail::code_location &codeLoc =
174180 sycl::detail::code_location::current ()) {
175181#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
183190#endif
191+ {
192+ submit (
193+ q, [&](handler &h) { launch_grouped<KernelType>(h, r, size, k); },
194+ codeLoc);
195+ }
184196}
185197template <typename KernelType, typename = typename std::enable_if_t <
186198 enable_kernel_function_overload<KernelType>>>
187199void launch_grouped (const queue &q, range<3 > r, range<3 > size, KernelType &&k,
188200 const sycl::detail::code_location &codeLoc =
189201 sycl::detail::code_location::current ()) {
190202#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
198211#endif
212+ {
213+ submit (
214+ q, [&](handler &h) { launch_grouped<KernelType>(h, r, size, k); },
215+ codeLoc);
216+ }
199217}
200218
201219template <typename ... Args>
0 commit comments