diff --git a/sycl/include/sycl/handler.hpp b/sycl/include/sycl/handler.hpp index 70429152f0ea1..9b910085520c2 100644 --- a/sycl/include/sycl/handler.hpp +++ b/sycl/include/sycl/handler.hpp @@ -1633,8 +1633,6 @@ class __SYCL_EXPORT handler { using NameT = typename detail::get_kernel_name_t::name; (void)Props; - KernelWrapper::wrap( - this, KernelFunc); #ifndef __SYCL_DEVICE_ONLY__ if constexpr (WrapAsVal == WrapAs::single_task) { throwOnKernelParameterMisuse(); @@ -1651,7 +1649,14 @@ class __SYCL_EXPORT handler { } else { setNDRangeDescriptor(std::move(params)...); } - +#endif + // NOTE: KernelWrapper::wrap() was moved here to support properties that are + // included in kernel functor with a + // get(sycl::ext::oneapi::experimental::properties_tag) and need modify + // NDRangeDescriptor values after NDRangeDescriptor was set. + KernelWrapper::wrap( + this, KernelFunc); +#ifndef __SYCL_DEVICE_ONLY__ StoreLambda(std::move(KernelFunc)); processProperties(), PropertiesT>(Props); #endif