Public Member Functions | List of all members
rmm::mr::limiting_resource_adaptor< Upstream > Class Template Referencefinal

Resource that uses Upstream to allocate memory and limits the total allocations possible. More...

#include <limiting_resource_adaptor.hpp>

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

Public Member Functions

 limiting_resource_adaptor (Upstream *upstream, std::size_t allocation_limit, std::size_t allocation_alignment=256)
 Construct a new limiting resource adaptor using upstream to satisfy allocation requests and limiting the total allocation amount possible. More...
 
 limiting_resource_adaptor (limiting_resource_adaptor const &)=delete
 
 limiting_resource_adaptor (limiting_resource_adaptor &&)=default
 
limiting_resource_adaptoroperator= (limiting_resource_adaptor const &)=delete
 
limiting_resource_adaptoroperator= (limiting_resource_adaptor &&)=default
 
Upstream * get_upstream () const noexcept
 Return pointer to the upstream resource. More...
 
bool supports_streams () const noexcept override
 Checks whether the upstream resource supports streams. More...
 
bool supports_get_mem_info () const noexcept override
 Query whether the resource supports the get_mem_info API. More...
 
std::size_t get_allocated_bytes () const
 Query the number of bytes that have been allocated. Note that this can not be used to know how large of an allocation is possible due to both possible fragmentation and also internal page sizes and alignment that is not tracked by this allocator. More...
 
std::size_t get_allocation_limit () const
 Query the maximum number of bytes that this allocator is allowed to allocate. This is the limit on the allocator and not a representation of the underlying device. The device may not be able to support this limit. More...
 
- Public Member Functions inherited from rmm::mr::device_memory_resource
void * allocate (std::size_t bytes, cuda_stream_view stream=cuda_stream_view{})
 Allocates memory of size at least bytes. More...
 
void deallocate (void *p, 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...
 
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...
 

Detailed Description

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

Resource that uses Upstream to allocate memory and limits the total allocations possible.

An instance of this resource can be constructed with an existing, upstream resource in order to satisfy allocation requests, but any existing allocations will be untracked. Atomics are used to make this thread-safe, but note that the get_allocated_bytes may not include in-flight allocations.

Template Parameters
UpstreamType of the upstream resource used for allocation/deallocation.

Constructor & Destructor Documentation

◆ limiting_resource_adaptor()

template<typename Upstream >
rmm::mr::limiting_resource_adaptor< Upstream >::limiting_resource_adaptor ( Upstream *  upstream,
std::size_t  allocation_limit,
std::size_t  allocation_alignment = 256 
)
inline

Construct a new limiting resource adaptor using upstream to satisfy allocation requests and limiting the total allocation amount possible.

Exceptions
<tt>rmm::logic_error</tt>if upstream == nullptr
Parameters
upstreamThe resource used for allocating/deallocating device memory
allocation_limitMaximum memory allowed for this allocator.

Member Function Documentation

◆ get_allocated_bytes()

template<typename Upstream >
std::size_t rmm::mr::limiting_resource_adaptor< Upstream >::get_allocated_bytes ( ) const
inline

Query the number of bytes that have been allocated. Note that this can not be used to know how large of an allocation is possible due to both possible fragmentation and also internal page sizes and alignment that is not tracked by this allocator.

Returns
std::size_t number of bytes that have been allocated through this allocator.

◆ get_allocation_limit()

template<typename Upstream >
std::size_t rmm::mr::limiting_resource_adaptor< Upstream >::get_allocation_limit ( ) const
inline

Query the maximum number of bytes that this allocator is allowed to allocate. This is the limit on the allocator and not a representation of the underlying device. The device may not be able to support this limit.

Returns
std::size_t max number of bytes allowed for this allocator

◆ get_upstream()

template<typename Upstream >
Upstream* rmm::mr::limiting_resource_adaptor< Upstream >::get_upstream ( ) const
inlinenoexcept

Return pointer to the upstream resource.

Returns
Upstream* Pointer to the upstream resource.

◆ supports_get_mem_info()

template<typename Upstream >
bool rmm::mr::limiting_resource_adaptor< Upstream >::supports_get_mem_info ( ) const
inlineoverridevirtualnoexcept

Query whether the resource supports the get_mem_info API.

Returns
bool true if the upstream resource supports get_mem_info, false otherwise.

Implements rmm::mr::device_memory_resource.

◆ supports_streams()

template<typename Upstream >
bool rmm::mr::limiting_resource_adaptor< Upstream >::supports_streams ( ) const
inlineoverridevirtualnoexcept

Checks whether the upstream resource supports streams.

Returns
true The upstream resource supports streams
false The upstream resource does not support streams.

Implements rmm::mr::device_memory_resource.


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