thrust::device_ptr_memory_resource
Defined in thrust/device_allocator.h
-
template<typename Upstream>
class device_ptr_memory_resource : public thrust::mr::memory_resource<device_ptr<void>> Memory resource adaptor that turns any memory resource that returns a fancy with the same tag as
device_ptr
, and adapts it to a resource that returns adevice_ptr
.Public Types
-
using pointer = device_ptr<void>
Alias for the template parameter.
Public Functions
-
inline device_ptr_memory_resource()
Initialize the adaptor with the global instance of the upstream resource. Obtains the global instance by calling
get_global_resource
.
-
inline device_ptr_memory_resource(Upstream *upstream)
Initialize the adaptor with an upstream resource.
- Parameters
upstream – the upstream memory resource to adapt.
-
inline virtual pointer do_allocate(std::size_t bytes, std::size_t alignment = THRUST_MR_DEFAULT_ALIGNMENT) override
Allocates memory of size at least
bytes
and alignment at leastalignment
.- Parameters
bytes – size, in bytes, that is requested from this allocation
alignment – alignment that is requested from this allocation
- Throws
thrust::bad_alloc – when no memory with requested size and alignment can be allocated.
- Returns
A pointer to void to the newly allocated memory.
-
inline virtual void do_deallocate(pointer p, std::size_t bytes, std::size_t alignment) override
Deallocates memory pointed to by
p
.- Parameters
p – pointer to be deallocated
bytes – the size of the allocation. This must be equivalent to the value of
bytes
that was passed to the allocation function that returnedp
.alignment – the size of the allocation. This must be equivalent to the value of
alignment
that was passed to the allocation function that returnedp
.
-
inline pointer allocate(std::size_t bytes, std::size_t alignment = THRUST_MR_DEFAULT_ALIGNMENT)
Allocates memory of size at least
bytes
and alignment at leastalignment
.- Parameters
bytes – size, in bytes, that is requested from this allocation
alignment – alignment that is requested from this allocation
- Throws
thrust::bad_alloc – when no memory with requested size and alignment can be allocated.
- Returns
A pointer to void to the newly allocated memory.
-
inline void deallocate(pointer p, std::size_t bytes, std::size_t alignment = THRUST_MR_DEFAULT_ALIGNMENT) noexcept
Deallocates memory pointed to by
p
.- Parameters
p – pointer to be deallocated
bytes – the size of the allocation. This must be equivalent to the value of
bytes
that was passed to the allocation function that returnedp
.alignment – the alignment of the allocation. This must be equivalent to the value of
alignment
that was passed to the allocation function that returnedp
.
-
inline bool is_equal(const memory_resource &other) const noexcept
Compares this resource to the other one. The default implementation uses identity comparison, which is often the right thing to do and doesn’t require RTTI involvement.
- Parameters
other – the other resource to compare this resource to
- Returns
whether the two resources are equivalent.
-
inline virtual bool do_is_equal(const memory_resource &other) const noexcept
Compares this resource to the other one. The default implementation uses identity comparison, which is often the right thing to do and doesn’t require RTTI involvement.
- Parameters
other – the other resource to compare this resource to
- Returns
whether the two resources are equivalent.
-
using pointer = device_ptr<void>