diff --git a/sycl/source/detail/program_impl.cpp b/sycl/source/detail/program_impl.cpp index 88f092bf2d117..df6afc869268a 100644 --- a/sycl/source/detail/program_impl.cpp +++ b/sycl/source/detail/program_impl.cpp @@ -416,6 +416,11 @@ RT::PiKernel program_impl::get_pi_kernel(const string_class &KernelName) const { Err); } Plugin.checkPiResult(Err); + + // Some PI Plugins (like OpenCL) require this call to enable USM + // For others, PI will turn this into a NOP. + Plugin.call(Kernel, PI_USM_INDIRECT_ACCESS, + sizeof(pi_bool), &PI_TRUE); } return Kernel; diff --git a/sycl/source/detail/program_manager/program_manager.cpp b/sycl/source/detail/program_manager/program_manager.cpp index 429644caae854..51efaa15c7cdb 100644 --- a/sycl/source/detail/program_manager/program_manager.cpp +++ b/sycl/source/detail/program_manager/program_manager.cpp @@ -442,6 +442,11 @@ ProgramManager::getOrCreateKernel(OSModuleHandle M, const context &Context, Plugin.call(Program, KernelName.c_str(), &Result); + // Some PI Plugins (like OpenCL) require this call to enable USM + // For others, PI will turn this into a NOP. + Plugin.call(Result, PI_USM_INDIRECT_ACCESS, + sizeof(pi_bool), &PI_TRUE); + return Result; }; diff --git a/sycl/source/detail/scheduler/commands.cpp b/sycl/source/detail/scheduler/commands.cpp index dcc3a07e62a68..f21d39d8efc3d 100644 --- a/sycl/source/detail/scheduler/commands.cpp +++ b/sycl/source/detail/scheduler/commands.cpp @@ -1691,11 +1691,6 @@ pi_result ExecCGCommand::SetKernelParamsAndLaunch( adjustNDRangePerKernel(NDRDesc, Kernel, *(detail::getSyclObjImpl(MQueue->get_device()))); - // Some PI Plugins (like OpenCL) require this call to enable USM - // For others, PI will turn this into a NOP. - Plugin.call(Kernel, PI_USM_INDIRECT_ACCESS, - sizeof(pi_bool), &PI_TRUE); - // Remember this information before the range dimensions are reversed const bool HasLocalSize = (NDRDesc.LocalSize[0] != 0); diff --git a/sycl/unittests/program/KernelRelease.cpp b/sycl/unittests/program/KernelRelease.cpp index 5b94dedbb3970..766333aa908e0 100644 --- a/sycl/unittests/program/KernelRelease.cpp +++ b/sycl/unittests/program/KernelRelease.cpp @@ -68,6 +68,13 @@ pi_result redefinedKernelGetInfo(pi_kernel kernel, pi_kernel_info param_name, return PI_SUCCESS; } +pi_result redefinedKernelSetExecInfo(pi_kernel kernel, + pi_kernel_exec_info param_name, + size_t param_value_size, + const void *param_value) { + return PI_SUCCESS; +} + TEST(KernelReleaseTest, GetKernelRelease) { platform Plt{default_selector()}; if (Plt.is_host()) { @@ -85,6 +92,8 @@ TEST(KernelReleaseTest, GetKernelRelease) { Mock.redefine(redefinedKernelRetain); Mock.redefine(redefinedKernelRelease); Mock.redefine(redefinedKernelGetInfo); + Mock.redefine( + redefinedKernelSetExecInfo); context Ctx{Plt}; TestContext.reset(new TestCtx(Ctx));