38 #include <type_traits>
43 inline namespace _V1 {
44 namespace ext::oneapi::level_zero {
53 bool keep_ownership =
false);
56 bool IsImmCmdList,
bool keep_ownership,
60 bool keep_ownership =
false);
64 typename std::enable_if_t<std::is_same_v<T, platform>> * =
nullptr>
73 typename std::enable_if_t<std::is_same_v<T, device>> * =
nullptr>
76 typename
sycl::detail::interop<
backend::ext_oneapi_level_zero, T>::type
90 template <
typename T, std::enable_if_t<std::is_same_v<T, context>> * =
nullptr>
93 typename
sycl::detail::interop<
backend::ext_oneapi_level_zero, T>::type
97 sycl::detail::pi::cast<pi_native_handle>(Interop),
102 template <
typename T,
103 typename std::enable_if_t<std::is_same_v<T, event>> * =
nullptr>
106 typename
sycl::detail::interop<
backend::ext_oneapi_level_zero, T>::type
117 inline context make_context<backend::ext_oneapi_level_zero>(
123 BackendObject.DeviceList,
124 detail::pi::cast<pi_native_handle>(BackendObject.NativeHandle),
130 inline queue make_queue<backend::ext_oneapi_level_zero>(
135 bool IsImmCmdList = std::holds_alternative<ze_command_list_handle_t>(
136 BackendObject.NativeHandle);
139 *(std::get_if<ze_command_list_handle_t>(
140 &BackendObject.NativeHandle)))
142 *(std::get_if<ze_command_queue_handle_t>(
143 &BackendObject.NativeHandle)));
145 TargetContext, Device, Handle, IsImmCmdList,
147 BackendObject.Properties);
152 inline auto get_native<backend::ext_oneapi_level_zero, queue>(
const queue &Obj)
154 int32_t IsImmCmdList;
166 inline event make_event<backend::ext_oneapi_level_zero>(
168 const context &TargetContext) {
171 detail::pi::cast<pi_native_handle>(BackendObject.NativeHandle),
177 inline kernel_bundle<bundle_state::executable>
178 make_kernel_bundle<backend::ext_oneapi_level_zero, bundle_state::executable>(
180 kernel_bundle<bundle_state::executable>>
182 const context &TargetContext) {
183 std::shared_ptr<detail::kernel_bundle_impl> KBImpl =
185 detail::pi::cast<pi_native_handle>(BackendObject.NativeHandle),
189 return detail::createSyclObjFromImpl<kernel_bundle<bundle_state::executable>>(
195 inline kernel make_kernel<backend::ext_oneapi_level_zero>(
198 const context &TargetContext) {
200 TargetContext, BackendObject.KernelBundle,
201 detail::pi::cast<pi_native_handle>(BackendObject.NativeHandle),
208 typename AllocatorT = buffer_allocator<std::remove_const_t<T>>>
210 buffer<T, Dimensions, AllocatorT>>
215 return detail::make_buffer_helper<T, Dimensions, AllocatorT>(
216 detail::pi::cast<pi_native_handle>(BackendObject.NativeHandle),
217 TargetContext, AvailableEvent,
223 typename AllocatorT = buffer_allocator<std::remove_const_t<T>>>
225 buffer<T, Dimensions, AllocatorT>>
229 const context &TargetContext) {
230 return detail::make_buffer_helper<T, Dimensions, AllocatorT>(
231 detail::pi::cast<pi_native_handle>(BackendObject.NativeHandle),
232 TargetContext,
event{},
240 image<Dimensions, AllocatorT>>
245 bool OwnNativeHandle =
249 detail::pi::cast<pi_native_handle>(BackendObject.ZeImageHandle),
250 TargetContext, AvailableEvent, BackendObject.ChanOrder,
251 BackendObject.ChanType, OwnNativeHandle, BackendObject.Range);
256 using namespace ext::oneapi::level_zero;
struct _ze_command_queue_handle_t * ze_command_queue_handle_t
struct _ze_command_list_handle_t * ze_command_list_handle_t
Defines a shared array that can be used by kernels in queues.
The context class represents a SYCL context on which kernel functions may be executed.
The SYCL device class encapsulates a single SYCL device on which kernels may be executed.
An event object can be used to synchronize memory transfers, enqueues of kernels and signaling barrie...
Defines a shared image data.
Provides an abstraction of a SYCL kernel.
Objects of the property_list class are containers for the SYCL properties.
Encapsulates a single SYCL queue which schedules kernels on a SYCL device.
#define __SYCL_DEPRECATED(message)
kernel make_kernel(pi_native_handle NativeHandle, const context &TargetContext, backend Backend)
std::shared_ptr< detail::kernel_bundle_impl > make_kernel_bundle(pi_native_handle NativeHandle, const context &TargetContext, bundle_state State, backend Backend)
platform make_platform(pi_native_handle NativeHandle)
context make_context(const std::vector< device > &DeviceList, pi_native_handle NativeHandle, bool keep_ownership=false)
T make(typename sycl::detail::interop< backend::ext_oneapi_level_zero, T >::type Interop)
event make_event(const context &Context, pi_native_handle InteropHandle, bool keep_ownership=false)
device make_device(const platform &Platform, pi_native_handle NativeHandle)
queue make_queue(const context &Context, const device &Device, pi_native_handle InteropHandle, bool IsImmCmdList, bool keep_ownership, const property_list &Properties)
class __SYCL_EBO __SYCL_SPECIAL_CLASS __SYCL_TYPE(local_accessor) local_accessor class __SYCL_EBO __SYCL_SPECIAL_CLASS Dimensions
signed char __SYCL2020_DEPRECATED
typename backend_traits< Backend >::template return_type< SyclType > backend_return_t
std::enable_if_t< detail::InteropFeatureSupportMap< Backend >::MakeImage==true &&Backend !=backend::ext_oneapi_level_zero, image< Dimensions, AllocatorT > > make_image(const typename backend_traits< Backend >::template input_type< image< Dimensions, AllocatorT >> &BackendObject, const context &TargetContext, event AvailableEvent={})
std::function< void(sycl::exception_list)> async_handler
detail::aligned_allocator< byte > image_allocator
std::enable_if_t< detail::InteropFeatureSupportMap< Backend >::MakeBuffer==true &&Backend !=backend::ext_oneapi_level_zero, buffer< T, Dimensions, AllocatorT > > make_buffer(const typename backend_traits< Backend >::template input_type< buffer< T, Dimensions, AllocatorT >> &BackendObject, const context &TargetContext, event AvailableEvent={})
typename backend_traits< Backend >::template input_type< SyclType > backend_input_t
uintptr_t pi_native_handle
C++ wrapper of extern "C" PI interfaces.