diff --git a/sycl/source/detail/queue_impl.cpp b/sycl/source/detail/queue_impl.cpp index 06e2359e4279..928bda109bff 100644 --- a/sycl/source/detail/queue_impl.cpp +++ b/sycl/source/detail/queue_impl.cpp @@ -767,6 +767,12 @@ EventImplPtr queue_impl::submit_kernel_direct_impl( KData.extractArgsAndReqsFromLambda(); + // Extract data to move KData + auto KernelCacheConfig = KData.getKernelCacheConfig(); + bool IsCooperative = KData.isCooperative(); + bool UsesClusterLaunch = KData.usesClusterLaunch(); + size_t KernelWorkGroupMemorySize = KData.getKernelWorkGroupMemorySize(); + CommandGroup.reset(new detail::CGExecKernel( KData.getNDRDesc(), std::move(HostKernelPtr), nullptr, // Kernel @@ -774,9 +780,8 @@ EventImplPtr queue_impl::submit_kernel_direct_impl( std::move(CGData), std::move(KData).getArgs(), *KData.getDeviceKernelInfoPtr(), std::move(StreamStorage), std::move(AuxiliaryResources), detail::CGType::Kernel, - KData.getKernelCacheConfig(), KData.isCooperative(), - KData.usesClusterLaunch(), KData.getKernelWorkGroupMemorySize(), - CodeLoc)); + KernelCacheConfig, IsCooperative, UsesClusterLaunch, + KernelWorkGroupMemorySize, CodeLoc)); CommandGroup->MIsTopCodeLoc = IsTopCodeLoc; if (auto GraphImpl = getCommandGraph(); GraphImpl) {