24 class AccessorBaseHost;
26 class DispatchHostTask;
42 __SYCL_EXPORT
backend get_backend()
const noexcept;
50 template <
backend Backend = backend::opencl,
typename DataT,
int Dims,
56 static_assert(Target == access::target::device ||
57 Target == access::target::constant_buffer,
58 "The method is available only for target::device accessors");
59 #ifndef __SYCL_DEVICE_ONLY__
60 if (Backend != get_backend())
61 throw invalid_object_error(
"Incorrect backend argument was passed",
62 PI_ERROR_INVALID_MEM_OBJECT);
64 return getMemImpl<Backend, DataT, Dims>(
85 template <backend Backend = backend::opencl>
87 #ifndef __SYCL_DEVICE_ONLY__
91 if (Backend != get_backend())
92 throw invalid_object_error(
"Incorrect backend argument was passed",
93 PI_ERROR_INVALID_MEM_OBJECT);
106 template <backend Backend = backend::opencl>
108 #ifndef __SYCL_DEVICE_ONLY__
112 if (Backend != get_backend())
113 throw invalid_object_error(
"Incorrect backend argument was passed",
114 PI_ERROR_INVALID_MEM_OBJECT);
128 template <backend Backend = backend::opencl>
130 #ifndef __SYCL_DEVICE_ONLY__
134 if (Backend != get_backend())
135 throw invalid_object_error(
"Incorrect backend argument was passed",
136 PI_ERROR_INVALID_MEM_OBJECT);
148 using ReqToMem = std::pair<detail::AccessorImplHost *, pi_mem>;
151 const std::shared_ptr<detail::queue_impl> &Queue,
152 const std::shared_ptr<detail::device_impl> &
Device,
153 const std::shared_ptr<detail::context_impl> &Context)
154 : MQueue(Queue), MDevice(
Device), MContext(Context),
155 MMemObjs(
std::move(MemObjs)) {}
157 template <backend Backend,
typename DataT,
int Dims>
160 std::vector<pi_native_handle> NativeHandles{getNativeMem(Req)};
161 return detail::BufferInterop<Backend, DataT, Dims>::GetNativeObjs(
166 getNativeMem(detail::AccessorImplHost *Req)
const;
171 std::shared_ptr<detail::queue_impl> MQueue;
172 std::shared_ptr<detail::device_impl> MDevice;
173 std::shared_ptr<detail::context_impl> MContext;
175 std::vector<ReqToMem> MMemObjs;