Memory Resources

template <typename Upstream,   typename Bookkeeper> class thrust::mr::disjoint_unsynchronized_pool_resource;
template <typename Upstream,   typename Bookkeeper> struct thrust::mr::disjoint_synchronized_pool_resource;
template <typename Pointer = void*> class thrust::mr::memory_resource;
class thrust::mr::memory_resource< void * >;
class thrust::mr::new_delete_resource_base;
class thrust::mr::new_delete_resource;
template <typename Upstream> class thrust::mr::unsynchronized_pool_resource;
struct thrust::mr::pool_options;
template <typename Upstream> struct thrust::mr::synchronized_pool_resource;
typedef see below memory_resource;
typedef see below universal_memory_resource;
typedef see below universal_host_pinned_memory_resource;
typedef see below memory_resource;
typedef see below universal_memory_resource;
typedef see below universal_host_pinned_memory_resource;
typedef see below memory_resource;
typedef see below universal_memory_resource;
typedef see below universal_host_pinned_memory_resource;
template <typename T> using universal_ptr = see below;
template <typename Upstream,   typename Bookkeeper> _CCCL_HOST thrust::mr::disjoint_unsynchronized_pool_resource< Upstream, Bookkeeper > & tls_disjoint_pool(Upstream * upstream = NULL,   Bookkeeper * bookkeeper = NULL);
template <typename Pointer> _CCCL_HOST_DEVICE bool operator==(const memory_resource< Pointer > & lhs,   const memory_resource< Pointer > & rhs);
template <typename Pointer> _CCCL_HOST_DEVICE bool operator!=(const memory_resource< Pointer > & lhs,   const memory_resource< Pointer > & rhs);
template <typename MR> _CCCL_HOST MR * get_global_resource();
template <typename Upstream,   typename Bookkeeper> _CCCL_HOST thrust::mr::unsynchronized_pool_resource< Upstream > & tls_pool(Upstream * upstream = NULL);

Member Classes

Class thrust::mr::disjoint_unsynchronized_pool_resource

Inherits From:

  • thrust::mr::memory_resource< Upstream::pointer >
  • thrust::mr::validator2< Upstream, Bookkeeper >

Struct thrust::mr::disjoint_synchronized_pool_resource

Inherits From: thrust::mr::memory_resource< Upstream::pointer >

Class thrust::mr::memory_resource

Inherited By:

Class thrust::mr::memory_resource< void * >

Class thrust::mr::new_delete_resource_base

Inherits From: thrust::mr::memory_resource<>

Inherited By: thrust::mr::new_delete_resource

Class thrust::mr::new_delete_resource

Inherits From: thrust::mr::new_delete_resource_base

Class thrust::mr::unsynchronized_pool_resource

Inherits From:

  • thrust::mr::memory_resource< Upstream::pointer >
  • thrust::mr::validator< Upstream >

Struct thrust::mr::pool_options

Struct thrust::mr::synchronized_pool_resource

Inherits From: thrust::mr::memory_resource< Upstream::pointer >

Types

Typedef memory_resource

typedef detail::native_resourcememory_resource; The memory resource for the Standard C++ system. Uses mr::new_delete_resource and tags it with cpp::pointer.

Typedef universal_memory_resource

typedef detail::universal_native_resourceuniversal_memory_resource; The unified memory resource for the Standard C++ system. Uses mr::new_delete_resource and tags it with cpp::universal_pointer.

Typedef universal_host_pinned_memory_resource

typedef detail::native_resourceuniversal_host_pinned_memory_resource; An alias for cpp::universal_memory_resource.

Typedef memory_resource

typedef detail::native_resourcememory_resource; The memory resource for the OpenMP system. Uses mr::new_delete_resource and tags it with omp::pointer.

Typedef universal_memory_resource

typedef detail::universal_native_resourceuniversal_memory_resource; The unified memory resource for the OpenMP system. Uses mr::new_delete_resource and tags it with omp::universal_pointer.

Typedef universal_host_pinned_memory_resource

typedef detail::native_resourceuniversal_host_pinned_memory_resource; An alias for omp::universal_memory_resource.

Typedef memory_resource

typedef detail::native_resourcememory_resource; The memory resource for the TBB system. Uses mr::new_delete_resource and tags it with tbb::pointer.

Typedef universal_memory_resource

typedef detail::universal_native_resourceuniversal_memory_resource; The unified memory resource for the TBB system. Uses mr::new_delete_resource and tags it with tbb::universal_pointer.

Typedef universal_host_pinned_memory_resource

typedef detail::native_resourceuniversal_host_pinned_memory_resource; An alias for tbb::universal_memory_resource.

Type Alias universal_ptr

template <typename T> using universal_ptr = thrust::system::__THRUST_DEVICE_SYSTEM_NAMESPACE::universal_pointer< T >; universal_ptr stores a pointer to an object allocated in memory accessible to both hosts and devices.

Algorithms dispatched with this type of pointer will be dispatched to either host or device, depending on which backend you are using. Explicit policies (thrust::device, etc) can be used to specify where an algorithm should be run.

universal_ptr has pointer semantics: it may be dereferenced safely from both hosts and devices and may be manipulated with pointer arithmetic.

universal_ptr can be created with universal_allocator or by explicitly calling its constructor with a raw pointer.

The raw pointer encapsulated by a universal_ptr may be obtained by either its get method or the raw_pointer_cast free function.

Note: universal_ptr is not a smart pointer; it is the programmer’s responsibility to deallocate memory pointed to by universal_ptr.

See:

  • host_ptr For the documentation of the complete interface which is shared by universal_ptr.
  • raw_pointer_cast

Functions

Function tls_disjoint_pool

template <typename Upstream,   typename Bookkeeper> _CCCL_HOST thrust::mr::disjoint_unsynchronized_pool_resource< Upstream, Bookkeeper > & tls_disjoint_pool(Upstream * upstream = NULL,   Bookkeeper * bookkeeper = NULL); Potentially constructs, if not yet created, and then returns the address of a thread-local disjoint_unsynchronized_pool_resource,

Template Parameters:

  • Upstream the first template argument to the pool template
  • Bookkeeper the second template argument to the pool template

Function Parameters:

  • upstream the first argument to the constructor, if invoked
  • bookkeeper the second argument to the constructor, if invoked

Function operator==

template <typename Pointer> _CCCL_HOST_DEVICE bool operator==(const memory_resource< Pointer > & lhs,   const memory_resource< Pointer > & rhs); Compares the memory resources for equality, first by identity, then by is_equal.

Function operator!=

template <typename Pointer> _CCCL_HOST_DEVICE bool operator!=(const memory_resource< Pointer > & lhs,   const memory_resource< Pointer > & rhs); Compares the memory resources for inequality, first by identity, then by is_equal.

Function get_global_resource

template <typename MR> _CCCL_HOST MR * get_global_resource(); Returns a global instance of MR, created as a function local static variable.

Template Parameters: MR: type of a memory resource to get an instance from. Must be DefaultConstructible.

Returns: a pointer to a global instance of MR.

Function tls_pool

template <typename Upstream,   typename Bookkeeper> _CCCL_HOST thrust::mr::unsynchronized_pool_resource< Upstream > & tls_pool(Upstream * upstream = NULL); Potentially constructs, if not yet created, and then returns the address of a thread-local unsynchronized_pool_resource,

Template Parameters: Upstream: the template argument to the pool template

Function Parameters: upstream: the argument to the constructor, if invoked