RMM
23.12
RAPIDS Memory Manager
|
Allocates memory from upstream resources associated with bin sizes. More...
#include <binning_memory_resource.hpp>
Public Member Functions | |
binning_memory_resource (Upstream *upstream_resource) | |
Construct a new binning memory resource object. 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_resource & | operator= (binning_memory_resource const &)=delete |
binning_memory_resource & | operator= (binning_memory_resource &&)=delete |
bool | supports_streams () const noexcept override |
Query whether the resource supports use of non-null streams for allocation/deallocation. More... | |
bool | supports_get_mem_info () const noexcept override |
Query whether the resource supports the get_mem_info API. More... | |
Upstream * | get_upstream () const noexcept |
Get the upstream memory_resource object. More... | |
void | add_bin (std::size_t allocation_size, device_memory_resource *bin_resource=nullptr) |
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_resource & | operator= (device_memory_resource const &)=default |
Default copy assignment operator. More... | |
device_memory_resource & | operator= (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... | |
std::pair< std::size_t, std::size_t > | get_mem_info (cuda_stream_view stream) const |
Queries the amount of free and total memory for the resource. More... | |
Allocates memory from upstream resources associated with bin sizes.
UpstreamResource | memory_resource to use for allocations that don't fall within any configured bin size. Implements rmm::mr::device_memory_resource interface. |
|
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
.
rmm::logic_error | if size_base is not a power of two. |
upstream_resource | The upstream memory resource used to allocate bin pools. |
|
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.
upstream_resource | The upstream memory resource used to allocate bin pools. |
min_size_exponent | The minimum base-2 exponent bin size. |
max_size_exponent | The maximum base-2 exponent bin size. |
|
inline |
Add a bin allocator to this resource.
Adds bin_resource
if it is not null; 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.
allocation_size | The maximum size that this bin allocates |
bin_resource | The memory resource for the bin |
|
inlinenoexcept |
Get the upstream memory_resource object.
|
inlineoverridevirtualnoexcept |
Query whether the resource supports the get_mem_info API.
Implements rmm::mr::device_memory_resource.
|
inlineoverridevirtualnoexcept |
Query whether the resource supports use of non-null streams for allocation/deallocation.
Implements rmm::mr::device_memory_resource.