From 829c0d30b7a3dbf340943cf9dfcc78ba8dbb59d6 Mon Sep 17 00:00:00 2001 From: Sergei Vinogradov Date: Wed, 10 Sep 2025 18:00:05 +0200 Subject: [PATCH 1/2] Kernel object and lambda must have the same name --- sycl/include/sycl/handler.hpp | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/sycl/include/sycl/handler.hpp b/sycl/include/sycl/handler.hpp index 8cfd17e65376e..ee35a662f9ac3 100644 --- a/sycl/include/sycl/handler.hpp +++ b/sycl/include/sycl/handler.hpp @@ -1467,12 +1467,13 @@ class __SYCL_EXPORT handler { setNDRangeDescriptor(std::move(params)...); } - setDeviceKernelInfo(std::move(Kernel)); - if (lambdaAndKernelHaveEqualName()) { - StoreLambda(std::move(KernelFunc)); - } else { - extractArgsAndReqs(); + MKernel = detail::getSyclObjImpl(Kernel); + if (!lambdaAndKernelHaveEqualName()) { + throw sycl::exception( + make_error_code(errc::invalid), + "the kernel name must match the name of the lambda"); } + StoreLambda(std::move(KernelFunc)); processProperties(Props); #endif } @@ -1926,12 +1927,15 @@ class __SYCL_EXPORT handler { // No need to check if range is out of INT_MAX limits as it's compile-time // known constant setNDRangeDescriptor(range<1>{1}); - setDeviceKernelInfo(std::move(Kernel)); - if (lambdaAndKernelHaveEqualName()) { - StoreLambda(std::move(KernelFunc)); - } else { - extractArgsAndReqs(); + + MKernel = detail::getSyclObjImpl(std::move(Kernel)); + if (!lambdaAndKernelHaveEqualName()) { + throw sycl::exception( + make_error_code(errc::invalid), + "the kernel name must match the name of the lambda"); } + StoreLambda(std::move(KernelFunc)); + #else detail::CheckDeviceCopyable(); #endif From 19d0b9ba68152b8e5ff1a1881438e2e80afd2f22 Mon Sep 17 00:00:00 2001 From: Sergei Vinogradov Date: Wed, 10 Sep 2025 18:08:05 +0200 Subject: [PATCH 2/2] Minor fix --- sycl/include/sycl/handler.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sycl/include/sycl/handler.hpp b/sycl/include/sycl/handler.hpp index ee35a662f9ac3..a0fcc39bfbb15 100644 --- a/sycl/include/sycl/handler.hpp +++ b/sycl/include/sycl/handler.hpp @@ -1928,7 +1928,7 @@ class __SYCL_EXPORT handler { // known constant setNDRangeDescriptor(range<1>{1}); - MKernel = detail::getSyclObjImpl(std::move(Kernel)); + MKernel = detail::getSyclObjImpl(Kernel); if (!lambdaAndKernelHaveEqualName()) { throw sycl::exception( make_error_code(errc::invalid),