All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
Public Member Functions | List of all members
rmm::mr::binning_memory_resource< Upstream > Class Template Referencefinal

Allocates memory from upstream resources associated with bin sizes. More...

#include <binning_memory_resource.hpp>

Inheritance diagram for rmm::mr::binning_memory_resource< Upstream >:
Inheritance graph
[legend]
Collaboration diagram for rmm::mr::binning_memory_resource< Upstream >:
Collaboration graph
[legend]

Public Member Functions

 binning_memory_resource (device_async_resource_ref upstream_resource)
 Construct a new binning memory resource object. More...
 
 binning_memory_resource (Upstream *upstream_resource)
 Construct a new binning memory resource object. More...
 
 binning_memory_resource (device_async_resource_ref upstream_resource, int8_t min_size_exponent, int8_t max_size_exponent)
 Construct a new binning memory resource object with a range of initial bins. More...
 
 binning_memory_resource (Upstream *upstream_resource, int8_t min_size_exponent, int8_t max_size_exponent)
 Construct a new binning memory resource object with a range of initial bins. More...
 
 ~binning_memory_resource () override=default
 Destroy the binning_memory_resource and free all memory allocated from the upstream resource.
 
 binning_memory_resource (binning_memory_resource const &)=delete
 
 binning_memory_resource (binning_memory_resource &&)=delete
 
binning_memory_resourceoperator= (binning_memory_resource const &)=delete
 
binning_memory_resourceoperator= (binning_memory_resource &&)=delete
 
device_async_resource_ref get_upstream_resource () const noexcept
 device_async_resource_ref to the upstream resource More...
 
void add_bin (std::size_t allocation_size, std::optional< device_async_resource_ref > bin_resource=std::nullopt)
 Add a bin allocator to this resource. More...
 
- Public Member Functions inherited from rmm::mr::device_memory_resource
 device_memory_resource (device_memory_resource const &)=default
 Default copy constructor.
 
 device_memory_resource (device_memory_resource &&) noexcept=default
 Default move constructor.
 
device_memory_resourceoperator= (device_memory_resource const &)=default
 Default copy assignment operator. More...
 
device_memory_resourceoperator= (device_memory_resource &&) noexcept=default
 Default move assignment operator. More...
 
void * allocate (std::size_t bytes, cuda_stream_view stream=cuda_stream_view{})
 Allocates memory of size at least bytes. More...
 
void deallocate (void *ptr, std::size_t bytes, cuda_stream_view stream=cuda_stream_view{})
 Deallocate memory pointed to by p. More...
 
bool is_equal (device_memory_resource const &other) const noexcept
 Compare this resource to another. More...
 
void * allocate (std::size_t bytes, std::size_t alignment)
 Allocates memory of size at least bytes. More...
 
void deallocate (void *ptr, std::size_t bytes, std::size_t alignment)
 Deallocate memory pointed to by p. More...
 
void * allocate_async (std::size_t bytes, std::size_t alignment, cuda_stream_view stream)
 Allocates memory of size at least bytes. More...
 
void * allocate_async (std::size_t bytes, cuda_stream_view stream)
 Allocates memory of size at least bytes. More...
 
void deallocate_async (void *ptr, std::size_t bytes, std::size_t alignment, cuda_stream_view stream)
 Deallocate memory pointed to by p. More...
 
void deallocate_async (void *ptr, std::size_t bytes, cuda_stream_view stream)
 Deallocate memory pointed to by p. More...
 
bool operator== (device_memory_resource const &other) const noexcept
 Comparison operator with another device_memory_resource. More...
 
bool operator!= (device_memory_resource const &other) const noexcept
 Comparison operator with another device_memory_resource. More...
 

Detailed Description

template<typename Upstream>
class rmm::mr::binning_memory_resource< Upstream >

Allocates memory from upstream resources associated with bin sizes.

Template Parameters
UpstreamResourcememory_resource to use for allocations that don't fall within any configured bin size. Implements rmm::mr::device_memory_resource interface.

Constructor & Destructor Documentation

◆ binning_memory_resource() [1/4]

template<typename Upstream >
rmm::mr::binning_memory_resource< Upstream >::binning_memory_resource ( device_async_resource_ref  upstream_resource)
inlineexplicit

Construct a new binning memory resource object.

Initially has no bins, so simply uses the upstream_resource until bin resources are added with add_bin.

Parameters
upstream_resourceThe upstream memory resource used to allocate bin pools.

◆ binning_memory_resource() [2/4]

template<typename Upstream >
rmm::mr::binning_memory_resource< Upstream >::binning_memory_resource ( Upstream *  upstream_resource)
inlineexplicit

Construct a new binning memory resource object.

Initially has no bins, so simply uses the upstream_resource until bin resources are added with add_bin.

Exceptions
rmm::logic_errorif upstream_resource is nullptr
Parameters
upstream_resourceThe upstream memory resource used to allocate bin pools.

◆ binning_memory_resource() [3/4]

template<typename Upstream >
rmm::mr::binning_memory_resource< Upstream >::binning_memory_resource ( device_async_resource_ref  upstream_resource,
int8_t  min_size_exponent,
int8_t  max_size_exponent 
)
inline

Construct a new binning memory resource object with a range of initial bins.

Constructs a new binning memory resource and adds bins backed by fixed_size_memory_resource in the range [2^min_size_exponent, 2^max_size_exponent]. For example if min_size_exponent==18 and max_size_exponent==22, creates bins of sizes 256KiB, 512KiB, 1024KiB, 2048KiB and 4096KiB.

Parameters
upstream_resourceThe upstream memory resource used to allocate bin pools.
min_size_exponentThe minimum base-2 exponent bin size.
max_size_exponentThe maximum base-2 exponent bin size.

◆ binning_memory_resource() [4/4]

template<typename Upstream >
rmm::mr::binning_memory_resource< Upstream >::binning_memory_resource ( Upstream *  upstream_resource,
int8_t  min_size_exponent,
int8_t  max_size_exponent 
)
inline

Construct a new binning memory resource object with a range of initial bins.

Constructs a new binning memory resource and adds bins backed by fixed_size_memory_resource in the range [2^min_size_exponent, 2^max_size_exponent]. For example if min_size_exponent==18 and max_size_exponent==22, creates bins of sizes 256KiB, 512KiB, 1024KiB, 2048KiB and 4096KiB.

Exceptions
rmm::logic_errorif upstream_resource is nullptr
Parameters
upstream_resourceThe upstream memory resource used to allocate bin pools.
min_size_exponentThe minimum base-2 exponent bin size.
max_size_exponentThe maximum base-2 exponent bin size.

Member Function Documentation

◆ add_bin()

template<typename Upstream >
void rmm::mr::binning_memory_resource< Upstream >::add_bin ( std::size_t  allocation_size,
std::optional< device_async_resource_ref bin_resource = std::nullopt 
)
inline

Add a bin allocator to this resource.

Adds bin_resource if provided; otherwise constructs and adds a fixed_size_memory_resource.

This bin will be used for any allocation smaller than allocation_size that is larger than the next smaller bin's allocation size.

If there is already a bin of the specified size nothing is changed.

This function is not thread safe.

Parameters
allocation_sizeThe maximum size that this bin allocates
bin_resourceThe memory resource for the bin

◆ get_upstream_resource()

template<typename Upstream >
device_async_resource_ref rmm::mr::binning_memory_resource< Upstream >::get_upstream_resource ( ) const
inlinenoexcept

device_async_resource_ref to the upstream resource

Returns
device_async_resource_ref to the upstream resource

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