diff --git a/sycl/doc/extensions/LevelZeroBackend/LevelZeroBackend.md b/sycl/doc/extensions/LevelZeroBackend/LevelZeroBackend.md index b30bc7bbc1978..5b88448cc481a 100644 --- a/sycl/doc/extensions/LevelZeroBackend/LevelZeroBackend.md +++ b/sycl/doc/extensions/LevelZeroBackend/LevelZeroBackend.md @@ -101,7 +101,8 @@ backend_input_t DeviceList; - ext::oneapi::level_zero::ownership Ownership; + ext::oneapi::level_zero::ownership Ownership{ + ext::oneapi::level_zero::ownership::transfer}; } ``` @@ -113,7 +114,8 @@ struct { ``` C++ struct { ze_command_queue_handle_t NativeHandle; - ext::oneapi::level_zero::ownership Ownership; + ext::oneapi::level_zero::ownership Ownership{ + ext::oneapi::level_zero::ownership::transfer}; } ``` @@ -125,7 +127,8 @@ struct { ``` C++ struct { ze_event_handle_t NativeHandle; - ext::oneapi::level_zero::ownership Ownership; + ext::oneapi::level_zero::ownership Ownership{ + ext::oneapi::level_zero::ownership::transfer}; } ``` @@ -137,7 +140,16 @@ struct { std::vector ``` -
ze_module_handle_t
+ + +``` C++ +struct { + ze_module_handle_t NativeHandle; + ext::oneapi::level_zero::ownership Ownership{ + ext::oneapi::level_zero::ownership::transfer}; +} +``` + @@ -226,7 +238,20 @@ make_kernel_bundle -Constructs a SYCL kernel_bundle instance from a Level-Zero ze_module_handle_t. The Context argument must be a valid SYCL context encapsulating a Level-Zero context. The Level-Zero module must be fully linked (i.e. not require further linking through zeModuleDynamicLink), and thus the SYCL kernel_bundle is created in the "executable" state. +Constructs a SYCL kernel_bundle instance from a Level-Zero +ze_module_handle_t. The Context argument must be a +valid SYCL context encapsulating a Level-Zero context, and the Level-Zero +module must be created on the same context. The Level-Zero module must be +fully linked (i.e. not require further linking through +zeModuleDynamicLink), and thus the SYCL kernel_bundle is +created in the "executable" state. The Ownership input structure +member specifies if the SYCL runtime should take ownership of the passed +native handle. The default behavior is to transfer the ownership to the SYCL +runtime. See section 4.4 for details. If the behavior is "transfer" then the +runtime is going to destroy the input Level-Zero module, and hence the +application must not to have any outstanding ze_kernel_handle_t +handles to the underlying ze_module_handle_t by the time this +interoperability kernel_bundle destructor is called. diff --git a/sycl/include/CL/sycl/backend.hpp b/sycl/include/CL/sycl/backend.hpp index 9a1fd0e007932..8ef0ab80aaf50 100644 --- a/sycl/include/CL/sycl/backend.hpp +++ b/sycl/include/CL/sycl/backend.hpp @@ -108,9 +108,13 @@ __SYCL_EXPORT event make_event(pi_native_handle NativeHandle, backend Backend); __SYCL_EXPORT kernel make_kernel(pi_native_handle NativeHandle, const context &TargetContext, backend Backend); +// TODO: Unused. Remove when allowed. __SYCL_EXPORT std::shared_ptr make_kernel_bundle(pi_native_handle NativeHandle, const context &TargetContext, bundle_state State, backend Backend); +__SYCL_EXPORT std::shared_ptr +make_kernel_bundle(pi_native_handle NativeHandle, const context &TargetContext, + bool KeepOwnership, bundle_state State, backend Backend); } // namespace detail template @@ -221,7 +225,7 @@ make_kernel_bundle(const typename backend_traits::template input_type< std::shared_ptr KBImpl = detail::make_kernel_bundle( detail::pi::cast(BackendObject), TargetContext, - State, Backend); + false, State, Backend); return detail::createSyclObjFromImpl>(KBImpl); } } // namespace sycl diff --git a/sycl/include/CL/sycl/detail/pi.h b/sycl/include/CL/sycl/detail/pi.h index 2c96cdbbe0d82..a38f1ab0b054f 100644 --- a/sycl/include/CL/sycl/detail/pi.h +++ b/sycl/include/CL/sycl/detail/pi.h @@ -40,6 +40,7 @@ // changes the API version from 3.5 to 4.6. // 5.7 Added new context and ownership arguments to // piextEventCreateWithNativeHandle +// 6.8 Added new ownership argument to piextProgramCreateWithNativeHandle. // #include "CL/cl.h" #define _PI_H_VERSION_MAJOR 5 @@ -1033,8 +1034,8 @@ piextContextGetNativeHandle(pi_context context, pi_native_handle *nativeHandle); /// \param devices is the list of devices in the context. Parameter is ignored /// if devices can be queried from the context native handle for a /// backend. -/// \param ownNativeHandle tells if SYCL RT should assume the ownership of -/// the native handle, if it can. +/// \param pluginOwnsNativeHandle Indicates whether the created PI object +/// should take ownership of the native handle. /// \param context is the PI context created from the native handle. /// \return PI_SUCCESS if successfully created pi_context from the handle. /// PI_OUT_OF_HOST_MEMORY if can't allocate memory for the pi_context @@ -1043,7 +1044,7 @@ piextContextGetNativeHandle(pi_context context, pi_native_handle *nativeHandle); /// native handle. PI_UNKNOWN_ERROR in case of another error. __SYCL_EXPORT pi_result piextContextCreateWithNativeHandle( pi_native_handle nativeHandle, pi_uint32 numDevices, - const pi_device *devices, bool ownNativeHandle, pi_context *context); + const pi_device *devices, bool pluginOwnsNativeHandle, pi_context *context); // // Queue @@ -1077,11 +1078,11 @@ piextQueueGetNativeHandle(pi_queue queue, pi_native_handle *nativeHandle); /// \param nativeHandle is the native handle to create PI queue from. /// \param context is the PI context of the queue. /// \param queue is the PI queue created from the native handle. -/// \param ownNativeHandle tells if SYCL RT should assume the ownership of -/// the native handle, if it can. +/// \param pluginOwnsNativeHandle Indicates whether the created PI object +/// should take ownership of the native handle. __SYCL_EXPORT pi_result piextQueueCreateWithNativeHandle( pi_native_handle nativeHandle, pi_context context, pi_queue *queue, - bool ownNativeHandle); + bool pluginOwnsNativeHandle); // // Memory @@ -1219,9 +1220,12 @@ piextProgramGetNativeHandle(pi_program program, pi_native_handle *nativeHandle); /// /// \param nativeHandle is the native handle to create PI program from. /// \param context is the PI context of the program. +/// \param pluginOwnsNativeHandle Indicates whether the created PI object +/// should take ownership of the native handle. /// \param program is the PI program created from the native handle. __SYCL_EXPORT pi_result piextProgramCreateWithNativeHandle( - pi_native_handle nativeHandle, pi_context context, pi_program *program); + pi_native_handle nativeHandle, pi_context context, + bool pluginOwnsNativeHandle, pi_program *program); // // Kernel @@ -1315,12 +1319,12 @@ __SYCL_EXPORT pi_result piKernelSetExecInfo(pi_kernel kernel, /// /// \param nativeHandle is the native handle to create PI kernel from. /// \param context is the PI context of the kernel. -/// \param ownNativeHandle tells if SYCL RT should assume the ownership of -/// the native handle, if it can. +/// \param pluginOwnsNativeHandle Indicates whether the created PI object +/// should take ownership of the native handle. /// \param kernel is the PI kernel created from the native handle. __SYCL_EXPORT pi_result piextKernelCreateWithNativeHandle( - pi_native_handle nativeHandle, pi_context context, bool ownNativeHandle, - pi_kernel *kernel); + pi_native_handle nativeHandle, pi_context context, + bool pluginOwnsNativeHandle, pi_kernel *kernel); /// Gets the native handle of a PI kernel object. /// @@ -1373,8 +1377,8 @@ piextEventGetNativeHandle(pi_event event, pi_native_handle *nativeHandle); /// /// \param nativeHandle is the native handle to create PI event from. /// \param context is the corresponding PI context -/// \param ownNativeHandle tells if SYCL RT should assume the ownership of -/// the native handle, if it can. +/// \param pluginOwnsNativeHandle Indicates whether the created PI object +/// should take ownership of the native handle. /// \param event is the PI event created from the native handle. __SYCL_EXPORT pi_result piextEventCreateWithNativeHandle( pi_native_handle nativeHandle, pi_context context, bool ownNativeHandle, diff --git a/sycl/include/sycl/ext/oneapi/backend/level_zero.hpp b/sycl/include/sycl/ext/oneapi/backend/level_zero.hpp index e1e9a6746934e..412f944a4ac0c 100644 --- a/sycl/include/sycl/ext/oneapi/backend/level_zero.hpp +++ b/sycl/include/sycl/ext/oneapi/backend/level_zero.hpp @@ -101,7 +101,11 @@ template <> struct BackendInput { template struct BackendInput> { - using type = ze_module_handle_t; + using type = struct { + ze_module_handle_t NativeHandle; + ext::oneapi::level_zero::ownership Ownership{ + ext::oneapi::level_zero::ownership::transfer}; + }; }; template @@ -249,6 +253,24 @@ event make_event( BackendObject.Ownership == ext::oneapi::level_zero::ownership::keep); } +// Specialization of sycl::make_kernel_bundle for Level-Zero backend. +template <> +kernel_bundle +make_kernel_bundle( + const backend_input_t> + &BackendObject, + const context &TargetContext) { + std::shared_ptr KBImpl = + detail::make_kernel_bundle( + detail::pi::cast(BackendObject.NativeHandle), + TargetContext, + BackendObject.Ownership == ext::oneapi::level_zero::ownership::keep, + bundle_state::executable, backend::ext_oneapi_level_zero); + return detail::createSyclObjFromImpl>( + KBImpl); +} + // TODO: remove this specialization when generic is changed to call // .GetNative() instead of .get_native() member of kernel_bundle. template <> diff --git a/sycl/plugins/cuda/pi_cuda.cpp b/sycl/plugins/cuda/pi_cuda.cpp index d750969239995..52858dd3536ee 100644 --- a/sycl/plugins/cuda/pi_cuda.cpp +++ b/sycl/plugins/cuda/pi_cuda.cpp @@ -3173,7 +3173,7 @@ pi_result cuda_piextProgramGetNativeHandle(pi_program program, /// /// \return TBD pi_result cuda_piextProgramCreateWithNativeHandle(pi_native_handle, pi_context, - pi_program *) { + bool, pi_program *) { cl::sycl::detail::pi::die( "Creation of PI program from native handle not implemented"); return {}; diff --git a/sycl/plugins/esimd_cpu/pi_esimd_cpu.cpp b/sycl/plugins/esimd_cpu/pi_esimd_cpu.cpp index 7fcc0dea18860..3a24d1be3906d 100644 --- a/sycl/plugins/esimd_cpu/pi_esimd_cpu.cpp +++ b/sycl/plugins/esimd_cpu/pi_esimd_cpu.cpp @@ -1019,19 +1019,15 @@ pi_result piProgramGetBuildInfo(pi_program, pi_device, cl_program_build_info, DIE_NO_IMPLEMENTATION; } -pi_result piProgramRetain(pi_program) { - DIE_NO_IMPLEMENTATION; -} +pi_result piProgramRetain(pi_program) { DIE_NO_IMPLEMENTATION; } -pi_result piProgramRelease(pi_program) { - DIE_NO_IMPLEMENTATION; -} +pi_result piProgramRelease(pi_program) { DIE_NO_IMPLEMENTATION; } pi_result piextProgramGetNativeHandle(pi_program, pi_native_handle *) { DIE_NO_IMPLEMENTATION; } -pi_result piextProgramCreateWithNativeHandle(pi_native_handle, pi_context, +pi_result piextProgramCreateWithNativeHandle(pi_native_handle, pi_context, bool, pi_program *) { DIE_NO_IMPLEMENTATION; } @@ -1068,17 +1064,11 @@ pi_result piKernelGetSubGroupInfo(pi_kernel, pi_device, DIE_NO_IMPLEMENTATION; } -pi_result piKernelRetain(pi_kernel) { - DIE_NO_IMPLEMENTATION; -} +pi_result piKernelRetain(pi_kernel) { DIE_NO_IMPLEMENTATION; } -pi_result piKernelRelease(pi_kernel) { - DIE_NO_IMPLEMENTATION; -} +pi_result piKernelRelease(pi_kernel) { DIE_NO_IMPLEMENTATION; } -pi_result piEventCreate(pi_context, pi_event *) { - DIE_NO_IMPLEMENTATION; -} +pi_result piEventCreate(pi_context, pi_event *) { DIE_NO_IMPLEMENTATION; } pi_result piEventGetInfo(pi_event, pi_event_info, size_t, void *, size_t *) { DIE_NO_IMPLEMENTATION; @@ -1117,9 +1107,7 @@ pi_result piEventSetCallback(pi_event, pi_int32, DIE_NO_IMPLEMENTATION; } -pi_result piEventSetStatus(pi_event, pi_int32) { - DIE_NO_IMPLEMENTATION; -} +pi_result piEventSetStatus(pi_event, pi_int32) { DIE_NO_IMPLEMENTATION; } pi_result piEventRetain(pi_event Event) { if (Event == nullptr) { @@ -1170,13 +1158,9 @@ pi_result piSamplerGetInfo(pi_sampler, pi_sampler_info, size_t, void *, DIE_NO_IMPLEMENTATION; } -pi_result piSamplerRetain(pi_sampler) { - DIE_NO_IMPLEMENTATION; -} +pi_result piSamplerRetain(pi_sampler) { DIE_NO_IMPLEMENTATION; } -pi_result piSamplerRelease(pi_sampler) { - DIE_NO_IMPLEMENTATION; -} +pi_result piSamplerRelease(pi_sampler) { DIE_NO_IMPLEMENTATION; } pi_result piEnqueueEventsWait(pi_queue, pi_uint32, const pi_event *, pi_event *) { diff --git a/sycl/plugins/hip/pi_hip.cpp b/sycl/plugins/hip/pi_hip.cpp index 0a234339384bc..d043382f1336b 100644 --- a/sycl/plugins/hip/pi_hip.cpp +++ b/sycl/plugins/hip/pi_hip.cpp @@ -2949,11 +2949,14 @@ pi_result hip_piextProgramGetNativeHandle(pi_program program, /// /// \param[in] nativeHandle The native handle to create PI program object from. /// \param[in] context The PI context of the program. +/// \param[in] ownNativeHandle tells if should assume the ownership of +/// the native handle. /// \param[out] program Set to the PI program object created from native handle. /// /// \return TBD pi_result hip_piextProgramCreateWithNativeHandle(pi_native_handle nativeHandle, pi_context context, + bool ownNativeHandle, pi_program *program) { cl::sycl::detail::pi::die( "Creation of PI program from native handle not implemented"); diff --git a/sycl/plugins/level_zero/pi_level_zero.cpp b/sycl/plugins/level_zero/pi_level_zero.cpp index 69a6963373aa1..5ab3384f7b248 100644 --- a/sycl/plugins/level_zero/pi_level_zero.cpp +++ b/sycl/plugins/level_zero/pi_level_zero.cpp @@ -3657,8 +3657,9 @@ pi_result piProgramLink(pi_context Context, pi_uint32 NumDevices, if (res != PI_SUCCESS) { return res; } - Input = new _pi_program(Input->Context, ZeModule, _pi_program::Object, - Input->HasImports); + Input = + new _pi_program(Input->Context, ZeModule, true /*own ZeModule*/, + _pi_program::Object, Input->HasImports); Input->HasImportsAndIsLinked = true; } } else { @@ -3913,6 +3914,7 @@ pi_result piextProgramGetNativeHandle(pi_program Program, pi_result piextProgramCreateWithNativeHandle(pi_native_handle NativeHandle, pi_context Context, + bool ownNativeHandle, pi_program *Program) { PI_ASSERT(Program, PI_INVALID_PROGRAM); PI_ASSERT(NativeHandle, PI_INVALID_VALUE); @@ -3925,7 +3927,8 @@ pi_result piextProgramCreateWithNativeHandle(pi_native_handle NativeHandle, // executable (state Object). try { - *Program = new _pi_program(Context, ZeModule, _pi_program::Exe); + *Program = + new _pi_program(Context, ZeModule, ownNativeHandle, _pi_program::Exe); } catch (const std::bad_alloc &) { return PI_OUT_OF_HOST_MEMORY; } catch (...) { @@ -3942,7 +3945,7 @@ _pi_program::~_pi_program() { ZE_CALL_NOCHECK(zeModuleBuildLogDestroy, (ZeBuildLog)); } - if (ZeModule) { + if (ZeModule && OwnZeModule) { ZE_CALL_NOCHECK(zeModuleDestroy, (ZeModule)); } } diff --git a/sycl/plugins/level_zero/pi_level_zero.hpp b/sycl/plugins/level_zero/pi_level_zero.hpp index b7e948cc7e471..869a4c6ddc787 100644 --- a/sycl/plugins/level_zero/pi_level_zero.hpp +++ b/sycl/plugins/level_zero/pi_level_zero.hpp @@ -1068,23 +1068,24 @@ struct _pi_program : _pi_object { // Construct a program in IL or Native state. _pi_program(pi_context Context, const void *Input, size_t Length, state St) : State(St), Context(Context), Code(new uint8_t[Length]), - CodeLength(Length), ZeModule(nullptr), HasImports(false), - HasImportsAndIsLinked(false), ZeBuildLog(nullptr) { + CodeLength(Length), ZeModule(nullptr), OwnZeModule{true}, + HasImports(false), HasImportsAndIsLinked(false), ZeBuildLog(nullptr) { std::memcpy(Code.get(), Input, Length); } // Construct a program in either Object or Exe state. - _pi_program(pi_context Context, ze_module_handle_t ZeModule, state St, - bool HasImports = false) - : State(St), Context(Context), ZeModule(ZeModule), HasImports(HasImports), + _pi_program(pi_context Context, ze_module_handle_t ZeModule, bool OwnZeModule, + state St, bool HasImports = false) + : State(St), Context(Context), + ZeModule(ZeModule), OwnZeModule{OwnZeModule}, HasImports(HasImports), HasImportsAndIsLinked(false), ZeBuildLog(nullptr) {} // Construct a program in LinkedExe state. _pi_program(pi_context Context, std::vector &&Inputs, ze_module_build_log_handle_t ZeLog) : State(LinkedExe), Context(Context), ZeModule(nullptr), - HasImports(false), HasImportsAndIsLinked(false), + OwnZeModule(true), HasImports(false), HasImportsAndIsLinked(false), LinkedPrograms(std::move(Inputs)), ZeBuildLog(ZeLog) {} ~_pi_program(); @@ -1103,7 +1104,13 @@ struct _pi_program : _pi_object { // Used for programs in Object or Exe state. ze_module_handle_t ZeModule; // Level Zero module handle. - bool HasImports; // Tells if module imports any symbols. + + // Indicates if we own the ZeModule or it came from interop that + // asked to not transfer the ownership to SYCL RT. + bool OwnZeModule; + + // Tells if module imports any symbols. + bool HasImports; // Used for programs in Object state. Tells if this module imports any // symbols AND it is linked into some other program that has state LinkedExe. diff --git a/sycl/plugins/opencl/pi_opencl.cpp b/sycl/plugins/opencl/pi_opencl.cpp index 59c62716b1845..0736a32935bc7 100644 --- a/sycl/plugins/opencl/pi_opencl.cpp +++ b/sycl/plugins/opencl/pi_opencl.cpp @@ -444,7 +444,7 @@ pi_result piProgramCreate(pi_context context, const void *il, size_t length, } pi_result piextProgramCreateWithNativeHandle(pi_native_handle nativeHandle, - pi_context, + pi_context, bool, pi_program *piProgram) { assert(piProgram != nullptr); *piProgram = reinterpret_cast(nativeHandle); diff --git a/sycl/source/backend.cpp b/sycl/source/backend.cpp index ef68f694ec4a9..ae7e7dc05117b 100644 --- a/sycl/source/backend.cpp +++ b/sycl/source/backend.cpp @@ -118,13 +118,13 @@ __SYCL_EXPORT event make_event(pi_native_handle NativeHandle, std::shared_ptr make_kernel_bundle(pi_native_handle NativeHandle, const context &TargetContext, - bundle_state State, backend Backend) { + bool KeepOwnership, bundle_state State, backend Backend) { const auto &Plugin = getPlugin(Backend); const auto &ContextImpl = getSyclObjImpl(TargetContext); pi::PiProgram PiProgram = nullptr; Plugin.call( - NativeHandle, ContextImpl->getHandleRef(), &PiProgram); + NativeHandle, ContextImpl->getHandleRef(), KeepOwnership, &PiProgram); std::vector ProgramDevices; size_t NumDevices = 0; @@ -194,6 +194,14 @@ make_kernel_bundle(pi_native_handle NativeHandle, const context &TargetContext, return std::make_shared(TargetContext, Devices, DevImg); } + +// TODO: Unused. Remove when allowed. +std::shared_ptr +make_kernel_bundle(pi_native_handle NativeHandle, const context &TargetContext, + bundle_state State, backend Backend) { + return make_kernel_bundle(NativeHandle, TargetContext, false, State, Backend); +} + kernel make_kernel(pi_native_handle NativeHandle, const context &TargetContext, backend Backend) { const auto &Plugin = getPlugin(Backend); diff --git a/sycl/source/detail/program_impl.cpp b/sycl/source/detail/program_impl.cpp index 8090280afa7e0..8e896d4325e1e 100644 --- a/sycl/source/detail/program_impl.cpp +++ b/sycl/source/detail/program_impl.cpp @@ -129,7 +129,7 @@ program_impl::program_impl(ContextImplPtr Context, "No InteropProgram/PiProgram defined with piextProgramFromNative"); // Translate the raw program handle into PI program. Plugin.call( - InteropProgram, MContext->getHandleRef(), &MProgram); + InteropProgram, MContext->getHandleRef(), false, &MProgram); } else Plugin.call(Program); diff --git a/sycl/test/abi/sycl_symbols_linux.dump b/sycl/test/abi/sycl_symbols_linux.dump index 8065c53c56ea0..7bbd5f580fa52 100644 --- a/sycl/test/abi/sycl_symbols_linux.dump +++ b/sycl/test/abi/sycl_symbols_linux.dump @@ -3666,7 +3666,6 @@ _ZN2cl4sycl5eventC1Ev _ZN2cl4sycl5eventC2EP9_cl_eventRKNS0_7contextE _ZN2cl4sycl5eventC2ESt10shared_ptrINS0_6detail10event_implEE _ZN2cl4sycl5eventC2Ev -_ZNK2cl4sycl5queue10device_hasENS0_6aspectE _ZN2cl4sycl5queue10mem_adviseEPKvm14_pi_mem_advice _ZN2cl4sycl5queue10mem_adviseEPKvmi _ZN2cl4sycl5queue10mem_adviseEPKvmiNS0_5eventE @@ -3835,6 +3834,7 @@ _ZN2cl4sycl6detail18convertChannelTypeE22_pi_image_channel_type _ZN2cl4sycl6detail18convertChannelTypeENS0_18image_channel_typeE _ZN2cl4sycl6detail18get_kernel_id_implENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE _ZN2cl4sycl6detail18make_kernel_bundleEmRKNS0_7contextENS0_12bundle_stateENS0_7backendE +_ZN2cl4sycl6detail18make_kernel_bundleEmRKNS0_7contextEbNS0_12bundle_stateENS0_7backendE _ZN2cl4sycl6detail18stringifyErrorCodeEi _ZN2cl4sycl6detail19convertChannelOrderE23_pi_image_channel_order _ZN2cl4sycl6detail19convertChannelOrderENS0_19image_channel_orderE @@ -3915,8 +3915,8 @@ _ZN2cl4sycl7handler10mem_adviseEPKvmi _ZN2cl4sycl7handler10processArgEPvRKNS0_6detail19kernel_param_kind_tEimRmb _ZN2cl4sycl7handler10processArgEPvRKNS0_6detail19kernel_param_kind_tEimRmbb _ZN2cl4sycl7handler13getKernelNameB5cxx11Ev -_ZN2cl4sycl7handler18ext_oneapi_barrierERKSt6vectorINS0_5eventESaIS3_EE _ZN2cl4sycl7handler18RangeRoundingTraceEv +_ZN2cl4sycl7handler18ext_oneapi_barrierERKSt6vectorINS0_5eventESaIS3_EE _ZN2cl4sycl7handler18extractArgsAndReqsEv _ZN2cl4sycl7handler20DisableRangeRoundingEv _ZN2cl4sycl7handler20associateWithHandlerEPNS0_6detail16AccessorBaseHostENS0_6access6targetE @@ -4018,6 +4018,7 @@ _ZNK2cl4sycl5event8get_infoILNS0_4info5eventE4563EEENS3_12param_traitsIS4_XT_EE1 _ZNK2cl4sycl5event9getNativeEv _ZNK2cl4sycl5eventeqERKS1_ _ZNK2cl4sycl5eventneERKS1_ +_ZNK2cl4sycl5queue10device_hasENS0_6aspectE _ZNK2cl4sycl5queue10get_deviceEv _ZNK2cl4sycl5queue11get_backendEv _ZNK2cl4sycl5queue11get_contextEv diff --git a/sycl/test/abi/sycl_symbols_windows.dump b/sycl/test/abi/sycl_symbols_windows.dump index 0d0c40e8eabb9..9b347ceb7b47a 100644 --- a/sycl/test/abi/sycl_symbols_windows.dump +++ b/sycl/test/abi/sycl_symbols_windows.dump @@ -2572,6 +2572,7 @@ ?make_event@level_zero@sycl@cl@@YA?AVevent@23@AEBVcontext@23@_K_N@Z ?make_kernel@detail@sycl@cl@@YA?AVkernel@23@_KAEBVcontext@23@W4backend@23@@Z ?make_kernel_bundle@detail@sycl@cl@@YA?AV?$shared_ptr@Vkernel_bundle_impl@detail@sycl@cl@@@std@@_KAEBVcontext@23@W4bundle_state@23@W4backend@23@@Z +?make_kernel_bundle@detail@sycl@cl@@YA?AV?$shared_ptr@Vkernel_bundle_impl@detail@sycl@cl@@@std@@_KAEBVcontext@23@_NW4bundle_state@23@W4backend@23@@Z ?make_platform@detail@sycl@cl@@YA?AVplatform@23@_KW4backend@23@@Z ?make_platform@level_zero@oneapi@ext@sycl@cl@@YA?AVplatform@45@_K@Z ?make_platform@level_zero@sycl@cl@@YA?AVplatform@23@_K@Z diff --git a/sycl/test/basic_tests/interop-level-zero-2020.cpp b/sycl/test/basic_tests/interop-level-zero-2020.cpp index 611e7b2a24cff..bf6629563bf51 100644 --- a/sycl/test/basic_tests/interop-level-zero-2020.cpp +++ b/sycl/test/basic_tests/interop-level-zero-2020.cpp @@ -137,8 +137,9 @@ int main() { {ZeEvent, ext::oneapi::level_zero::ownership::keep}, Context); kernel_bundle InteropKernelBundle = make_kernel_bundle(ZeKernelBundle.front(), - Context); + bundle_state::executable>( + {ZeKernelBundle.front(), ext::oneapi::level_zero::ownership::keep}, + Context); // Check deprecated // expected-warning@+1 {{'make' is deprecated: Use SYCL 2020 sycl::make_platform free function}}