#include <detail/sycl_mem_obj_t.hpp>
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 (pi_native_handle 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 (pi_native_handle MemObject, const context &SyclContext, bool OwnNativeHandle, event AvailableEvent, std::unique_ptr< SYCLMemObjAllocator > Allocator) | |
SYCLMemObjT (pi_native_handle MemObject, const context &SyclContext, bool OwnNativeHandle, event AvailableEvent, std::unique_ptr< SYCLMemObjAllocator > Allocator, sycl::detail::pi::PiMemImageChannelOrder Order, sycl::detail::pi::PiMemImageChannelType Type, range< 3 > Range3WithOnes, unsigned Dimensions, size_t ElementSize) | |
virtual | ~SYCLMemObjT ()=default |
const PluginPtr & | getPlugin () 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, sycl::detail::pi::PiEvent &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... | |
Public Member Functions inherited from sycl::_V1::detail::SYCLMemObjI | |
virtual | ~SYCLMemObjI ()=default |
Static Public Member Functions | |
static size_t | getBufSizeForContext (const ContextImplPtr &Context, pi_native_handle MemObject) |
Protected Member Functions | |
void | updateHostMemory (void *const Ptr) |
void | updateHostMemory () |
void | determineHostPtr (const ContextImplPtr &Context, bool InitFromUserData, void *&HostPtr, bool &HostPtrReadOnly) |
Protected Attributes | |
std::unique_ptr< SYCLMemObjAllocator > | MAllocator |
property_list | MProps |
EventImplPtr | MInteropEvent |
ContextImplPtr | MInteropContext |
sycl::detail::pi::PiMem | 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< MemObjRecord > | MRecord |
Additional Inherited Members | |
Public Types inherited from sycl::_V1::detail::SYCLMemObjI | |
enum | MemObjType { Buffer = 0 , Image = 1 , Undefined = 2 } |
Definition at line 40 of file sycl_mem_obj_t.hpp.
|
inline |
Definition at line 55 of file sycl_mem_obj_t.hpp.
|
inline |
Definition at line 64 of file sycl_mem_obj_t.hpp.
sycl::_V1::detail::SYCLMemObjT::SYCLMemObjT | ( | pi_native_handle | 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.
|
inline |
Definition at line 72 of file sycl_mem_obj_t.hpp.
sycl::_V1::detail::SYCLMemObjT::SYCLMemObjT | ( | pi_native_handle | MemObject, |
const context & | SyclContext, | ||
bool | OwnNativeHandle, | ||
event | AvailableEvent, | ||
std::unique_ptr< SYCLMemObjAllocator > | Allocator | ||
) |
Definition at line 26 of file sycl_mem_obj_t.cpp.
References getPlugin(), MInteropContext, MInteropMemObject, MSizeInBytes, sycl::_V1::opencl, PI_MEM_CONTEXT, PI_MEM_SIZE, piextMemCreateWithNativeHandle(), piMemGetInfo(), and piMemRetain().
sycl::_V1::detail::SYCLMemObjT::SYCLMemObjT | ( | pi_native_handle | MemObject, |
const context & | SyclContext, | ||
bool | OwnNativeHandle, | ||
event | AvailableEvent, | ||
std::unique_ptr< SYCLMemObjAllocator > | Allocator, | ||
sycl::detail::pi::PiMemImageChannelOrder | Order, | ||
sycl::detail::pi::PiMemImageChannelType | Type, | ||
range< 3 > | Range3WithOnes, | ||
unsigned | Dimensions, | ||
size_t | ElementSize | ||
) |
Definition at line 73 of file sycl_mem_obj_t.cpp.
References _pi_image_desc::buffer, sycl::_V1::Dimensions, sycl::_V1::detail::getImageType(), getPlugin(), _pi_image_desc::image_array_size, _pi_image_desc::image_depth, _pi_image_desc::image_height, _pi_image_desc::image_row_pitch, _pi_image_desc::image_slice_pitch, _pi_image_desc::image_type, _pi_image_desc::image_width, MInteropContext, MInteropMemObject, _pi_image_desc::num_mip_levels, _pi_image_desc::num_samples, sycl::_V1::opencl, PI_MEM_CONTEXT, piextMemImageCreateWithNativeHandle(), piMemGetInfo(), and piMemRetain().
|
virtualdefault |
|
inline |
Definition at line 95 of file sycl_mem_obj_t.hpp.
|
inline |
Definition at line 110 of file sycl_mem_obj_t.hpp.
|
inlineoverridevirtual |
Implements sycl::_V1::detail::SYCLMemObjI.
Definition at line 122 of file sycl_mem_obj_t.hpp.
|
inlineoverridevirtual |
Implements sycl::_V1::detail::SYCLMemObjI.
Definition at line 273 of file sycl_mem_obj_t.hpp.
|
inline |
Definition at line 176 of file sycl_mem_obj_t.hpp.
|
inline |
Definition at line 182 of file sycl_mem_obj_t.hpp.
|
inline |
Definition at line 114 of file sycl_mem_obj_t.hpp.
void sycl::_V1::detail::SYCLMemObjT::detachMemoryObject | ( | const std::shared_ptr< SYCLMemObjT > & | Self | ) | const |
Definition at line 217 of file sycl_mem_obj_t.cpp.
References sycl::_V1::detail::Scheduler::deferMemObjRelease(), sycl::_V1::detail::Scheduler::getInstance(), MHostPtrProvided, MInteropContext, MIsInternal, MOwnNativeHandle, and sycl::_V1::detail::SYCLMemObjI::MRecord.
|
protected |
Definition at line 188 of file sycl_mem_obj_t.cpp.
References getUserPtr(), MHostPtrReadOnly, and MOpenCLInterop.
Referenced by sycl::_V1::detail::buffer_impl::allocateMem(), and sycl::_V1::detail::image_impl::allocateMem().
|
inline |
Definition at line 118 of file sycl_mem_obj_t.hpp.
|
inline |
Definition at line 106 of file sycl_mem_obj_t.hpp.
|
static |
Definition at line 175 of file sycl_mem_obj_t.cpp.
References PI_MEM_SIZE, and piMemGetInfo().
|
inlineoverridevirtual |
Implements sycl::_V1::detail::SYCLMemObjI.
Definition at line 285 of file sycl_mem_obj_t.hpp.
const PluginPtr & sycl::_V1::detail::SYCLMemObjT::getPlugin | ( | ) | const |
Definition at line 169 of file sycl_mem_obj_t.cpp.
References MInteropContext.
Referenced by sycl::_V1::detail::buffer_impl::addInteropObject(), SYCLMemObjT(), and updateHostMemory().
|
inlineoverridevirtualnoexcept |
Implements sycl::_V1::detail::SYCLMemObjI.
Definition at line 94 of file sycl_mem_obj_t.hpp.
Referenced by sycl::_V1::detail::buffer_impl::allocateMem(), and sycl::_V1::detail::image_impl::allocateMem().
|
inlineoverridevirtual |
Implements sycl::_V1::detail::SYCLMemObjI.
Definition at line 283 of file sycl_mem_obj_t.hpp.
|
inline |
Definition at line 131 of file sycl_mem_obj_t.hpp.
Referenced by determineHostPtr(), and releaseMem().
|
inline |
Definition at line 247 of file sycl_mem_obj_t.hpp.
|
inline |
Definition at line 219 of file sycl_mem_obj_t.hpp.
|
inline |
Definition at line 214 of file sycl_mem_obj_t.hpp.
|
inline |
Definition at line 186 of file sycl_mem_obj_t.hpp.
void sycl::_V1::detail::SYCLMemObjT::handleWriteAccessorCreation | ( | ) |
Definition at line 236 of file sycl_mem_obj_t.cpp.
References MCreateShadowCopy, sycl::_V1::detail::SYCLMemObjI::MRecord, and MUserPtr.
Referenced by sycl::_V1::detail::Scheduler::GraphBuilder::addHostAccessor().
|
inlinenoexcept |
Definition at line 102 of file sycl_mem_obj_t.hpp.
|
inlineoverridevirtual |
Implements sycl::_V1::detail::SYCLMemObjI.
Definition at line 289 of file sycl_mem_obj_t.hpp.
|
inlineoverridevirtual |
Implements sycl::_V1::detail::SYCLMemObjI.
Definition at line 291 of file sycl_mem_obj_t.hpp.
|
overridevirtual |
Implements sycl::_V1::detail::SYCLMemObjI.
Definition at line 186 of file sycl_mem_obj_t.cpp.
References MOpenCLInterop.
|
inline |
Returns true if any graphs are currently using this memory object.
Definition at line 326 of file sycl_mem_obj_t.hpp.
|
inline |
Definition at line 300 of file sycl_mem_obj_t.hpp.
|
inline |
Increment an internal counter for how many graphs are currently using this memory object.
Definition at line 307 of file sycl_mem_obj_t.hpp.
|
inline |
Decrement an internal counter for how many graphs are currently using this memory object.
Definition at line 311 of file sycl_mem_obj_t.hpp.
|
inline |
Returns true if this memory object requires a write_back on destruction.
Definition at line 303 of file sycl_mem_obj_t.hpp.
|
inlineoverridevirtual |
Implements sycl::_V1::detail::SYCLMemObjI.
Definition at line 124 of file sycl_mem_obj_t.hpp.
Referenced by updateHostMemory().
|
overridevirtual |
Implements sycl::_V1::detail::SYCLMemObjI.
Definition at line 125 of file sycl_mem_obj_t.cpp.
References getUserPtr(), and sycl::_V1::detail::MemoryManager::releaseMemObj().
|
inline |
Definition at line 149 of file sycl_mem_obj_t.hpp.
|
inline |
Definition at line 137 of file sycl_mem_obj_t.hpp.
|
inline |
Definition at line 139 of file sycl_mem_obj_t.hpp.
|
inline |
Definition at line 135 of file sycl_mem_obj_t.hpp.
|
inline |
Definition at line 264 of file sycl_mem_obj_t.hpp.
|
inlinenoexcept |
Definition at line 97 of file sycl_mem_obj_t.hpp.
|
protected |
Definition at line 148 of file sycl_mem_obj_t.cpp.
References sycl::_V1::detail::Scheduler::getInstance(), getPlugin(), MInteropMemObject, MNeedWriteBack, MOpenCLInterop, sycl::_V1::detail::SYCLMemObjI::MRecord, MShadowCopy, MUploadDataFunctor, piMemRelease(), releaseHostMem(), and sycl::_V1::detail::Scheduler::removeMemoryObject().
|
protected |
Definition at line 130 of file sycl_mem_obj_t.cpp.
References sycl::_V1::AccessMode, sycl::_V1::detail::Scheduler::addCopyBack(), sycl::_V1::detail::Scheduler::getInstance(), sycl::_V1::detail::AccessorImplHost::MData, MSizeInBytes, and sycl::_V1::access::read.
|
inline |
Definition at line 171 of file sycl_mem_obj_t.hpp.
Referenced by sycl::_V1::detail::buffer_impl::allocateMem().
|
inlineoverridevirtual |
Implements sycl::_V1::detail::SYCLMemObjI.
Definition at line 293 of file sycl_mem_obj_t.hpp.
References sycl::_V1::ext::oneapi::experimental::has_property().
|
protected |
Definition at line 334 of file sycl_mem_obj_t.hpp.
|
protected |
Definition at line 377 of file sycl_mem_obj_t.hpp.
Referenced by handleWriteAccessorCreation().
|
protected |
Definition at line 373 of file sycl_mem_obj_t.hpp.
|
protected |
Definition at line 367 of file sycl_mem_obj_t.hpp.
Referenced by detachMemoryObject().
|
protected |
Definition at line 349 of file sycl_mem_obj_t.hpp.
Referenced by determineHostPtr().
|
protected |
Definition at line 341 of file sycl_mem_obj_t.hpp.
Referenced by sycl::_V1::detail::buffer_impl::allocateMem(), sycl::_V1::detail::image_impl::allocateMem(), detachMemoryObject(), getPlugin(), and SYCLMemObjT().
|
protected |
Definition at line 339 of file sycl_mem_obj_t.hpp.
Referenced by sycl::_V1::detail::buffer_impl::allocateMem(), and sycl::_V1::detail::image_impl::allocateMem().
|
protected |
Definition at line 344 of file sycl_mem_obj_t.hpp.
Referenced by sycl::_V1::detail::buffer_impl::addInteropObject(), SYCLMemObjT(), and updateHostMemory().
|
protected |
Definition at line 371 of file sycl_mem_obj_t.hpp.
Referenced by detachMemoryObject().
|
protected |
Definition at line 351 of file sycl_mem_obj_t.hpp.
Referenced by updateHostMemory().
|
protected |
Definition at line 347 of file sycl_mem_obj_t.hpp.
Referenced by sycl::_V1::detail::buffer_impl::addInteropObject(), determineHostPtr(), isInterop(), and updateHostMemory().
|
protected |
Definition at line 378 of file sycl_mem_obj_t.hpp.
Referenced by detachMemoryObject().
|
protected |
Definition at line 336 of file sycl_mem_obj_t.hpp.
Referenced by sycl::_V1::detail::buffer_impl::allocateMem(), and sycl::_V1::detail::image_impl::allocateMem().
|
protected |
Definition at line 357 of file sycl_mem_obj_t.hpp.
Referenced by updateHostMemory().
|
protected |
Definition at line 362 of file sycl_mem_obj_t.hpp.
|
protected |
Definition at line 353 of file sycl_mem_obj_t.hpp.
Referenced by SYCLMemObjT(), and updateHostMemory().
|
protected |
Definition at line 359 of file sycl_mem_obj_t.hpp.
Referenced by updateHostMemory().
|
protected |
Definition at line 355 of file sycl_mem_obj_t.hpp.
Referenced by handleWriteAccessorCreation().