DPC++ Runtime
Runtime libraries for oneAPI DPC++
sycl::_V1::detail::SYCLMemObjT Class Reference

#include <detail/sycl_mem_obj_t.hpp>

Inheritance diagram for sycl::_V1::detail::SYCLMemObjT:
Collaboration diagram for sycl::_V1::detail::SYCLMemObjT:

Public Member Functions

 SYCLMemObjT (const size_t SizeInBytes, const property_list &Props, std::unique_ptr< SYCLMemObjAllocator > Allocator)
 
 SYCLMemObjT (const property_list &Props, std::unique_ptr< SYCLMemObjAllocator > Allocator)
 
 SYCLMemObjT (ur_native_handle_t MemObject, const context &SyclContext, const size_t SizeInBytes, event AvailableEvent, std::unique_ptr< SYCLMemObjAllocator > Allocator)
 
 SYCLMemObjT (cl_mem MemObject, const context &SyclContext, event AvailableEvent, std::unique_ptr< SYCLMemObjAllocator > Allocator)
 
 SYCLMemObjT (ur_native_handle_t MemObject, const context &SyclContext, bool OwnNativeHandle, event AvailableEvent, std::unique_ptr< SYCLMemObjAllocator > Allocator)
 
 SYCLMemObjT (ur_native_handle_t MemObject, const context &SyclContext, bool OwnNativeHandle, event AvailableEvent, std::unique_ptr< SYCLMemObjAllocator > Allocator, ur_image_format_t Format, range< 3 > Range3WithOnes, unsigned Dimensions, size_t ElementSize)
 
virtual ~SYCLMemObjT ()=default
 
const PluginPtrgetPlugin () const
 
size_t getSizeInBytes () const noexcept override
 
 __SYCL2020_DEPRECATED ("get_count() is deprecated, please use size() instead") size_t get_count() const
 
size_t size () const noexcept
 
template<typename propertyT >
bool has_property () const noexcept
 
template<typename propertyT >
propertyT get_property () const
 
void addOrReplaceAccessorProperties (const property_list &PropertyList)
 
void deleteAccessorProperty (const PropWithDataKind &Kind)
 
const std::unique_ptr< SYCLMemObjAllocator > & get_allocator_internal () const
 
void * allocateHostMem () override
 
void releaseHostMem (void *Ptr) override
 
void releaseMem (ContextImplPtr Context, void *MemAllocation) override
 
void * getUserPtr () const
 
void set_write_back (bool NeedWriteBack)
 
void set_final_data (std::nullptr_t)
 
void set_final_data_from_storage ()
 
void set_final_data (const std::function< void(const std::function< void(void *const Ptr)> &)> &FinalDataFunc)
 
bool useHostPtr ()
 
bool canReadHostPtr (void *HostPtr, const size_t RequiredAlign)
 
bool canReuseHostPtr (void *HostPtr, const size_t RequiredAlign)
 
void handleHostData (void *HostPtr, const size_t RequiredAlign)
 
void handleHostData (const void *HostPtr, const size_t RequiredAlign)
 
void handleHostData (const std::shared_ptr< void > &HostPtr, const size_t RequiredAlign, bool IsConstPtr)
 
void handleHostData (const std::function< void(void *)> &CopyFromInput, const size_t RequiredAlign, bool IsConstPtr)
 
void setAlign (size_t RequiredAlign)
 
void handleWriteAccessorCreation ()
 
void * allocateMem (ContextImplPtr Context, bool InitFromUserData, void *HostPtr, ur_event_handle_t &InteropEvent) override
 
MemObjType getType () const override
 
ContextImplPtr getInteropContext () const override
 
bool isInterop () const override
 
bool hasUserDataPtr () const override
 
bool isHostPointerReadOnly () const override
 
bool usesPinnedHostMemory () const override
 
void detachMemoryObject (const std::shared_ptr< SYCLMemObjT > &Self) const
 
void markAsInternal ()
 
bool needsWriteBack () const
 Returns true if this memory object requires a write_back on destruction. More...
 
void markBeingUsedInGraph ()
 Increment an internal counter for how many graphs are currently using this memory object. More...
 
void markNoLongerBeingUsedInGraph ()
 Decrement an internal counter for how many graphs are currently using this memory object. More...
 
bool isUsedInGraph () const
 Returns true if any graphs are currently using this memory object. More...
 
const property_listgetPropList () const
 
- Public Member Functions inherited from sycl::_V1::detail::SYCLMemObjI
virtual ~SYCLMemObjI ()=default
 

Static Public Member Functions

static size_t getBufSizeForContext (const ContextImplPtr &Context, ur_native_handle_t MemObject)
 

Protected Member Functions

void updateHostMemory (void *const Ptr)
 
void updateHostMemory ()
 
void determineHostPtr (bool InitFromUserData, void *&HostPtr, bool &HostPtrReadOnly)
 

Protected Attributes

std::unique_ptr< SYCLMemObjAllocatorMAllocator
 
property_list MProps
 
EventImplPtr MInteropEvent
 
ContextImplPtr MInteropContext
 
ur_mem_handle_t MInteropMemObject
 
bool MOpenCLInterop
 
bool MHostPtrReadOnly
 
bool MNeedWriteBack
 
size_t MSizeInBytes
 
void * MUserPtr
 
void * MShadowCopy
 
std::function< void(void)> MUploadDataFunctor
 
std::shared_ptr< const void > MSharedPtrStorage
 
bool MHostPtrProvided
 
bool MIsInternal = false
 
std::atomic< size_t > MGraphUseCount = 0
 
std::function< void(void)> MCreateShadowCopy = []() -> void {}
 
bool MOwnNativeHandle = true
 
- Protected Attributes inherited from sycl::_V1::detail::SYCLMemObjI
std::shared_ptr< MemObjRecordMRecord
 

Additional Inherited Members

- Public Types inherited from sycl::_V1::detail::SYCLMemObjI
enum  MemObjType { Buffer = 0 , Image = 1 , Undefined = 2 }
 

Detailed Description

Definition at line 41 of file sycl_mem_obj_t.hpp.

Constructor & Destructor Documentation

◆ SYCLMemObjT() [1/6]

sycl::_V1::detail::SYCLMemObjT::SYCLMemObjT ( const size_t  SizeInBytes,
const property_list Props,
std::unique_ptr< SYCLMemObjAllocator Allocator 
)
inline

Definition at line 56 of file sycl_mem_obj_t.hpp.

◆ SYCLMemObjT() [2/6]

sycl::_V1::detail::SYCLMemObjT::SYCLMemObjT ( const property_list Props,
std::unique_ptr< SYCLMemObjAllocator Allocator 
)
inline

Definition at line 65 of file sycl_mem_obj_t.hpp.

◆ SYCLMemObjT() [3/6]

sycl::_V1::detail::SYCLMemObjT::SYCLMemObjT ( ur_native_handle_t  MemObject,
const context SyclContext,
const size_t  SizeInBytes,
event  AvailableEvent,
std::unique_ptr< SYCLMemObjAllocator Allocator 
)

Definition at line 20 of file sycl_mem_obj_t.cpp.

◆ SYCLMemObjT() [4/6]

sycl::_V1::detail::SYCLMemObjT::SYCLMemObjT ( cl_mem  MemObject,
const context SyclContext,
event  AvailableEvent,
std::unique_ptr< SYCLMemObjAllocator Allocator 
)
inline

Definition at line 73 of file sycl_mem_obj_t.hpp.

◆ SYCLMemObjT() [5/6]

sycl::_V1::detail::SYCLMemObjT::SYCLMemObjT ( ur_native_handle_t  MemObject,
const context SyclContext,
bool  OwnNativeHandle,
event  AvailableEvent,
std::unique_ptr< SYCLMemObjAllocator Allocator 
)

◆ SYCLMemObjT() [6/6]

sycl::_V1::detail::SYCLMemObjT::SYCLMemObjT ( ur_native_handle_t  MemObject,
const context SyclContext,
bool  OwnNativeHandle,
event  AvailableEvent,
std::unique_ptr< SYCLMemObjAllocator Allocator,
ur_image_format_t  Format,
range< 3 >  Range3WithOnes,
unsigned  Dimensions,
size_t  ElementSize 
)

◆ ~SYCLMemObjT()

virtual sycl::_V1::detail::SYCLMemObjT::~SYCLMemObjT ( )
virtualdefault

Member Function Documentation

◆ __SYCL2020_DEPRECATED()

sycl::_V1::detail::SYCLMemObjT::__SYCL2020_DEPRECATED ( "get_count() is  deprecated,
please use size() instead  
) const
inline

Definition at line 95 of file sycl_mem_obj_t.hpp.

References size().

◆ addOrReplaceAccessorProperties()

void sycl::_V1::detail::SYCLMemObjT::addOrReplaceAccessorProperties ( const property_list PropertyList)
inline

◆ allocateHostMem()

void* sycl::_V1::detail::SYCLMemObjT::allocateHostMem ( )
inlineoverridevirtual

Implements sycl::_V1::detail::SYCLMemObjI.

Definition at line 122 of file sycl_mem_obj_t.hpp.

References MAllocator, and size().

Referenced by handleHostData().

◆ allocateMem()

void* sycl::_V1::detail::SYCLMemObjT::allocateMem ( ContextImplPtr  Context,
bool  InitFromUserData,
void *  HostPtr,
ur_event_handle_t &  InteropEvent 
)
inlineoverridevirtual

◆ canReadHostPtr()

bool sycl::_V1::detail::SYCLMemObjT::canReadHostPtr ( void *  HostPtr,
const size_t  RequiredAlign 
)
inline

Definition at line 176 of file sycl_mem_obj_t.hpp.

References useHostPtr().

Referenced by canReuseHostPtr(), and handleHostData().

◆ canReuseHostPtr()

bool sycl::_V1::detail::SYCLMemObjT::canReuseHostPtr ( void *  HostPtr,
const size_t  RequiredAlign 
)
inline

Definition at line 182 of file sycl_mem_obj_t.hpp.

References canReadHostPtr(), and MHostPtrReadOnly.

Referenced by handleHostData().

◆ deleteAccessorProperty()

void sycl::_V1::detail::SYCLMemObjT::deleteAccessorProperty ( const PropWithDataKind Kind)
inline

◆ detachMemoryObject()

◆ determineHostPtr()

void sycl::_V1::detail::SYCLMemObjT::determineHostPtr ( bool  InitFromUserData,
void *&  HostPtr,
bool &  HostPtrReadOnly 
)
protected

◆ get_allocator_internal()

const std::unique_ptr<SYCLMemObjAllocator>& sycl::_V1::detail::SYCLMemObjT::get_allocator_internal ( ) const
inline

Definition at line 118 of file sycl_mem_obj_t.hpp.

References MAllocator.

◆ get_property()

template<typename propertyT >
propertyT sycl::_V1::detail::SYCLMemObjT::get_property ( ) const
inline

Definition at line 106 of file sycl_mem_obj_t.hpp.

References sycl::_V1::property_list::get_property(), and MProps.

◆ getBufSizeForContext()

size_t sycl::_V1::detail::SYCLMemObjT::getBufSizeForContext ( const ContextImplPtr Context,
ur_native_handle_t  MemObject 
)
static

Definition at line 166 of file sycl_mem_obj_t.cpp.

◆ getInteropContext()

ContextImplPtr sycl::_V1::detail::SYCLMemObjT::getInteropContext ( ) const
inlineoverridevirtual

Implements sycl::_V1::detail::SYCLMemObjI.

Definition at line 283 of file sycl_mem_obj_t.hpp.

References MInteropContext.

◆ getPlugin()

const PluginPtr & sycl::_V1::detail::SYCLMemObjT::getPlugin ( ) const

◆ getPropList()

const property_list& sycl::_V1::detail::SYCLMemObjT::getPropList ( ) const
inline

Definition at line 326 of file sycl_mem_obj_t.hpp.

References MProps.

◆ getSizeInBytes()

size_t sycl::_V1::detail::SYCLMemObjT::getSizeInBytes ( ) const
inlineoverridevirtualnoexcept

◆ getType()

MemObjType sycl::_V1::detail::SYCLMemObjT::getType ( ) const
inlineoverridevirtual

Implements sycl::_V1::detail::SYCLMemObjI.

Definition at line 281 of file sycl_mem_obj_t.hpp.

◆ getUserPtr()

void* sycl::_V1::detail::SYCLMemObjT::getUserPtr ( ) const
inline

Definition at line 131 of file sycl_mem_obj_t.hpp.

References MInteropMemObject, MOpenCLInterop, and MUserPtr.

Referenced by determineHostPtr(), and releaseMem().

◆ handleHostData() [1/4]

void sycl::_V1::detail::SYCLMemObjT::handleHostData ( const std::function< void(void *)> &  CopyFromInput,
const size_t  RequiredAlign,
bool  IsConstPtr 
)
inline

◆ handleHostData() [2/4]

void sycl::_V1::detail::SYCLMemObjT::handleHostData ( const std::shared_ptr< void > &  HostPtr,
const size_t  RequiredAlign,
bool  IsConstPtr 
)
inline

◆ handleHostData() [3/4]

void sycl::_V1::detail::SYCLMemObjT::handleHostData ( const void *  HostPtr,
const size_t  RequiredAlign 
)
inline

Definition at line 214 of file sycl_mem_obj_t.hpp.

References handleHostData(), and MHostPtrReadOnly.

◆ handleHostData() [4/4]

void sycl::_V1::detail::SYCLMemObjT::handleHostData ( void *  HostPtr,
const size_t  RequiredAlign 
)
inline

◆ handleWriteAccessorCreation()

void sycl::_V1::detail::SYCLMemObjT::handleWriteAccessorCreation ( )

◆ has_property()

template<typename propertyT >
bool sycl::_V1::detail::SYCLMemObjT::has_property ( ) const
inlinenoexcept

Definition at line 102 of file sycl_mem_obj_t.hpp.

References sycl::_V1::property_list::has_property(), and MProps.

Referenced by usesPinnedHostMemory().

◆ hasUserDataPtr()

bool sycl::_V1::detail::SYCLMemObjT::hasUserDataPtr ( ) const
inlineoverridevirtual

Implements sycl::_V1::detail::SYCLMemObjI.

Definition at line 287 of file sycl_mem_obj_t.hpp.

References MUserPtr.

◆ isHostPointerReadOnly()

bool sycl::_V1::detail::SYCLMemObjT::isHostPointerReadOnly ( ) const
inlineoverridevirtual

Implements sycl::_V1::detail::SYCLMemObjI.

Definition at line 289 of file sycl_mem_obj_t.hpp.

References MHostPtrReadOnly.

◆ isInterop()

bool sycl::_V1::detail::SYCLMemObjT::isInterop ( ) const
overridevirtual

Implements sycl::_V1::detail::SYCLMemObjI.

Definition at line 176 of file sycl_mem_obj_t.cpp.

References MOpenCLInterop.

◆ isUsedInGraph()

bool sycl::_V1::detail::SYCLMemObjT::isUsedInGraph ( ) const
inline

Returns true if any graphs are currently using this memory object.

Definition at line 324 of file sycl_mem_obj_t.hpp.

References MGraphUseCount.

◆ markAsInternal()

void sycl::_V1::detail::SYCLMemObjT::markAsInternal ( )
inline

Definition at line 298 of file sycl_mem_obj_t.hpp.

References MIsInternal.

◆ markBeingUsedInGraph()

void sycl::_V1::detail::SYCLMemObjT::markBeingUsedInGraph ( )
inline

Increment an internal counter for how many graphs are currently using this memory object.

Definition at line 305 of file sycl_mem_obj_t.hpp.

References MGraphUseCount.

◆ markNoLongerBeingUsedInGraph()

void sycl::_V1::detail::SYCLMemObjT::markNoLongerBeingUsedInGraph ( )
inline

Decrement an internal counter for how many graphs are currently using this memory object.

Definition at line 309 of file sycl_mem_obj_t.hpp.

References MGraphUseCount.

◆ needsWriteBack()

bool sycl::_V1::detail::SYCLMemObjT::needsWriteBack ( ) const
inline

Returns true if this memory object requires a write_back on destruction.

Definition at line 301 of file sycl_mem_obj_t.hpp.

References MNeedWriteBack, and MUploadDataFunctor.

◆ releaseHostMem()

void sycl::_V1::detail::SYCLMemObjT::releaseHostMem ( void *  Ptr)
inlineoverridevirtual

Implements sycl::_V1::detail::SYCLMemObjI.

Definition at line 124 of file sycl_mem_obj_t.hpp.

References MAllocator, and size().

Referenced by updateHostMemory().

◆ releaseMem()

void sycl::_V1::detail::SYCLMemObjT::releaseMem ( ContextImplPtr  Context,
void *  MemAllocation 
)
overridevirtual

◆ set_final_data() [1/2]

void sycl::_V1::detail::SYCLMemObjT::set_final_data ( const std::function< void(const std::function< void(void *const Ptr)> &)> &  FinalDataFunc)
inline

Definition at line 149 of file sycl_mem_obj_t.hpp.

References MHostPtrProvided, MUploadDataFunctor, and updateHostMemory().

◆ set_final_data() [2/2]

void sycl::_V1::detail::SYCLMemObjT::set_final_data ( std::nullptr_t  )
inline

Definition at line 137 of file sycl_mem_obj_t.hpp.

References MUploadDataFunctor.

Referenced by handleHostData().

◆ set_final_data_from_storage()

void sycl::_V1::detail::SYCLMemObjT::set_final_data_from_storage ( )
inline

◆ set_write_back()

void sycl::_V1::detail::SYCLMemObjT::set_write_back ( bool  NeedWriteBack)
inline

Definition at line 135 of file sycl_mem_obj_t.hpp.

References MNeedWriteBack.

◆ setAlign()

void sycl::_V1::detail::SYCLMemObjT::setAlign ( size_t  RequiredAlign)
inline

Definition at line 263 of file sycl_mem_obj_t.hpp.

References MAllocator.

Referenced by handleHostData().

◆ size()

size_t sycl::_V1::detail::SYCLMemObjT::size ( ) const
inlinenoexcept

◆ updateHostMemory() [1/2]

◆ updateHostMemory() [2/2]

void sycl::_V1::detail::SYCLMemObjT::updateHostMemory ( void *const  Ptr)
protected

◆ useHostPtr()

bool sycl::_V1::detail::SYCLMemObjT::useHostPtr ( )
inline

◆ usesPinnedHostMemory()

bool sycl::_V1::detail::SYCLMemObjT::usesPinnedHostMemory ( ) const
inlineoverridevirtual

Implements sycl::_V1::detail::SYCLMemObjI.

Definition at line 291 of file sycl_mem_obj_t.hpp.

References has_property().

Member Data Documentation

◆ MAllocator

std::unique_ptr<SYCLMemObjAllocator> sycl::_V1::detail::SYCLMemObjT::MAllocator
protected

◆ MCreateShadowCopy

std::function<void(void)> sycl::_V1::detail::SYCLMemObjT::MCreateShadowCopy = []() -> void {}
protected

Definition at line 377 of file sycl_mem_obj_t.hpp.

Referenced by handleHostData(), and handleWriteAccessorCreation().

◆ MGraphUseCount

std::atomic<size_t> sycl::_V1::detail::SYCLMemObjT::MGraphUseCount = 0
protected

◆ MHostPtrProvided

bool sycl::_V1::detail::SYCLMemObjT::MHostPtrProvided
protected

◆ MHostPtrReadOnly

bool sycl::_V1::detail::SYCLMemObjT::MHostPtrReadOnly
protected

◆ MInteropContext

◆ MInteropEvent

EventImplPtr sycl::_V1::detail::SYCLMemObjT::MInteropEvent
protected

◆ MInteropMemObject

ur_mem_handle_t sycl::_V1::detail::SYCLMemObjT::MInteropMemObject
protected

◆ MIsInternal

bool sycl::_V1::detail::SYCLMemObjT::MIsInternal = false
protected

Definition at line 371 of file sycl_mem_obj_t.hpp.

Referenced by detachMemoryObject(), and markAsInternal().

◆ MNeedWriteBack

bool sycl::_V1::detail::SYCLMemObjT::MNeedWriteBack
protected

Definition at line 351 of file sycl_mem_obj_t.hpp.

Referenced by needsWriteBack(), set_write_back(), and updateHostMemory().

◆ MOpenCLInterop

bool sycl::_V1::detail::SYCLMemObjT::MOpenCLInterop
protected

◆ MOwnNativeHandle

bool sycl::_V1::detail::SYCLMemObjT::MOwnNativeHandle = true
protected

Definition at line 378 of file sycl_mem_obj_t.hpp.

Referenced by detachMemoryObject().

◆ MProps

◆ MShadowCopy

void* sycl::_V1::detail::SYCLMemObjT::MShadowCopy
protected

Definition at line 357 of file sycl_mem_obj_t.hpp.

Referenced by handleHostData(), and updateHostMemory().

◆ MSharedPtrStorage

std::shared_ptr<const void> sycl::_V1::detail::SYCLMemObjT::MSharedPtrStorage
protected

Definition at line 362 of file sycl_mem_obj_t.hpp.

Referenced by handleHostData(), and set_final_data_from_storage().

◆ MSizeInBytes

size_t sycl::_V1::detail::SYCLMemObjT::MSizeInBytes
protected

◆ MUploadDataFunctor

std::function<void(void)> sycl::_V1::detail::SYCLMemObjT::MUploadDataFunctor
protected

◆ MUserPtr

void* sycl::_V1::detail::SYCLMemObjT::MUserPtr
protected

The documentation for this class was generated from the following files: