17 namespace ext::oneapi::level_zero {
26 bool keep_ownership =
false);
30 bool keep_ownership =
false);
33 bool keep_ownership =
false);
36 bool keep_ownership =
false);
40 std::is_same<T, platform>::value> * =
nullptr>
49 std::is_same<T, device>::value> * =
nullptr>
52 typename
sycl::detail::interop<
backend::ext_oneapi_level_zero,
T>::type
66 template <
typename T,
typename std::enable_if<
67 std::is_same<T, context>::value>::type * =
nullptr>
70 typename
sycl::detail::interop<
backend::ext_oneapi_level_zero,
T>::type
74 sycl::detail::pi::cast<pi_native_handle>(Interop),
75 Ownership == ownership::keep);
80 std::is_same<T, queue>::value> * =
nullptr>
83 typename
sycl::detail::interop<
backend::ext_oneapi_level_zero,
T>::type
87 Ownership == ownership::keep);
92 std::is_same<T, event>::value> * =
nullptr>
95 typename
sycl::detail::interop<
backend::ext_oneapi_level_zero,
T>::type
99 Ownership == ownership::keep);
105 inline context make_context<backend::ext_oneapi_level_zero>(
111 BackendObject.DeviceList,
112 detail::pi::cast<pi_native_handle>(BackendObject.NativeHandle),
113 BackendObject.Ownership == ext::oneapi::level_zero::ownership::keep);
118 inline queue make_queue<backend::ext_oneapi_level_zero>(
124 TargetContext, Device,
125 detail::pi::cast<pi_native_handle>(BackendObject.NativeHandle),
126 BackendObject.Ownership == ext::oneapi::level_zero::ownership::keep);
131 inline event make_event<backend::ext_oneapi_level_zero>(
133 const context &TargetContext) {
136 detail::pi::cast<pi_native_handle>(BackendObject.NativeHandle),
137 BackendObject.Ownership == ext::oneapi::level_zero::ownership::keep);
142 inline kernel_bundle<bundle_state::executable>
143 make_kernel_bundle<backend::ext_oneapi_level_zero, bundle_state::executable>(
147 const context &TargetContext) {
148 std::shared_ptr<detail::kernel_bundle_impl> KBImpl =
150 detail::pi::cast<pi_native_handle>(BackendObject.NativeHandle),
152 BackendObject.Ownership == ext::oneapi::level_zero::ownership::keep,
153 bundle_state::executable, backend::ext_oneapi_level_zero);
154 return detail::createSyclObjFromImpl<kernel_bundle<bundle_state::executable>>(
160 inline kernel make_kernel<backend::ext_oneapi_level_zero>(
163 const context &TargetContext) {
165 TargetContext, BackendObject.KernelBundle,
166 detail::pi::cast<pi_native_handle>(BackendObject.NativeHandle),
167 BackendObject.Ownership == ext::oneapi::level_zero::ownership::keep,
168 backend::ext_oneapi_level_zero);
173 typename AllocatorT = buffer_allocator<std::remove_const_t<T>>>
174 typename std::enable_if<Backend == backend::ext_oneapi_level_zero,
175 buffer<T, Dimensions, AllocatorT>>::type
180 return detail::make_buffer_helper<T, Dimensions, AllocatorT>(
181 detail::pi::cast<pi_native_handle>(BackendObject.NativeHandle),
182 TargetContext, AvailableEvent,
183 !(BackendObject.Ownership == ext::oneapi::level_zero::ownership::keep));
188 typename AllocatorT = buffer_allocator<std::remove_const_t<T>>>
189 typename std::enable_if<Backend == backend::ext_oneapi_level_zero,
190 buffer<T, Dimensions, AllocatorT>>::type
194 const context &TargetContext) {
195 return detail::make_buffer_helper<T, Dimensions, AllocatorT>(
196 detail::pi::cast<pi_native_handle>(BackendObject.NativeHandle),
197 TargetContext,
event{},
198 !(BackendObject.Ownership == ext::oneapi::level_zero::ownership::keep));
203 using namespace ext::oneapi::level_zero;