DPC++ Runtime
Runtime libraries for oneAPI DPC++
|
|
Go to the documentation of this file.
21 const size_t,
event AvailableEvent,
22 std::unique_ptr<SYCLMemObjAllocator> Allocator)
23 :
SYCLMemObjT(MemObject, SyclContext, true, AvailableEvent,
24 std::move(Allocator)) {}
27 bool OwnNativeHandle,
event AvailableEvent,
28 std::unique_ptr<SYCLMemObjAllocator> Allocator)
29 : MAllocator(
std::move(Allocator)), MProps(),
32 MOpenCLInterop(true), MHostPtrReadOnly(false), MNeedWriteBack(true),
33 MUserPtr(nullptr), MShadowCopy(nullptr), MUploadDataFunctor(nullptr),
34 MSharedPtrStorage(nullptr), MHostPtrProvided(true) {
36 throw sycl::invalid_parameter_error(
37 "Creation of interoperability memory object using host context is "
39 PI_ERROR_INVALID_CONTEXT);
53 sizeof(Context), &Context,
nullptr);
56 throw sycl::invalid_parameter_error(
57 "Input context must be the same as the context of cl_mem",
58 PI_ERROR_INVALID_CONTEXT);
70 const id<3> Offset{0, 0, 0};
76 const int ElemSize = 1;
98 "removeMemoryObject should not return false in mem object destructor");
110 "Trying to get Plugin from SYCLMemObjT with nullptr ContextImpl.");
120 detail::pi::cast<detail::RT::PiMem>(MemObject),
PI_MEM_SIZE,
121 sizeof(size_t), &BufSize,
nullptr);
128 bool InitFromUserData,
void *&HostPtr,
129 bool &HostPtrReadOnly) {
145 InitFromUserData =
true;
147 if (InitFromUserData) {
148 assert(!HostPtr &&
"Cannot init from user data and reuse host ptr provided "
153 HostPtrReadOnly =
false;
157 const std::shared_ptr<SYCLMemObjT> &Self)
const {
pi_result piMemGetInfo(pi_mem mem, pi_mem_info param_name, size_t param_value_size, void *param_value, size_t *param_value_size_ret)
std::function< void(void)> MUploadDataFunctor
std::shared_ptr< sycl::detail::context_impl > ContextImplPtr
void determineHostPtr(const ContextImplPtr &Context, bool InitFromUserData, void *&HostPtr, bool &HostPtrReadOnly)
void releaseHostMem(void *Ptr) override
#define __SYCL_INLINE_VER_NAMESPACE(X)
void releaseMem(ContextImplPtr Context, void *MemAllocation) override
RT::PiMem MInteropMemObject
const plugin & getPlugin() const
---— Error handling, matching OpenCL plugin semantics.
backend getBackend(void) const
An event object can be used to synchronize memory transfers, enqueues of kernels and signaling barrie...
EventImplPtr addCopyBack(Requirement *Req)
Registers a command group, that copies most recent memory to the memory pointed by the requirement.
The plugin class provides a unified interface to the underlying low-level runtimes for the device-agn...
pi_result piMemRelease(pi_mem mem)
void * getUserPtr() const
bool removeMemoryObject(detail::SYCLMemObjI *MemObj, bool StrictLock=true)
Removes buffer from the graph.
static void releaseMemObj(ContextImplPtr TargetContext, SYCLMemObjI *MemObj, void *MemAllocation, void *UserPtr)
std::shared_ptr< event_impl > EventImplPtr
SYCLMemObjT(const size_t SizeInBytes, const property_list &Props, std::unique_ptr< SYCLMemObjAllocator > Allocator)
void deferMemObjRelease(const std::shared_ptr< detail::SYCLMemObjI > &MemObj)
uintptr_t pi_native_handle
static size_t getBufSizeForContext(const ContextImplPtr &Context, pi_native_handle MemObject)
pi_result piMemRetain(pi_mem mem)
void call(ArgsT... Args) const
Calls the API, traces the call, checks the result.
static Scheduler & getInstance()
pi_result piextMemCreateWithNativeHandle(pi_native_handle nativeHandle, pi_context context, bool ownNativeHandle, pi_mem *mem)
Creates PI mem object from a native handle.
static thread_local bool ForceDeferredMemObjRelease
void detachMemoryObject(const std::shared_ptr< SYCLMemObjT > &Self) const
ContextImplPtr MInteropContext
class __SYCL_EBO __SYCL_SPECIAL_CLASS __SYCL_TYPE(local_accessor) local_accessor class __SYCL_EBO __SYCL_SPECIAL_CLASS AccessMode
std::shared_ptr< MemObjRecord > MRecord
decltype(Obj::impl) getSyclObjImpl(const Obj &SyclObject)
The context class represents a SYCL context on which kernel functions may be executed.