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

Resource that uses Upstream to allocate memory and tracks statistics on memory allocations. More...

#include <statistics_resource_adaptor.hpp>

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

Classes

struct  counter
 Utility struct for counting the current, peak, and total value of a number. More...
 

Public Types

using read_lock_t = std::shared_lock< std::shared_mutex >
 Type of lock used to synchronize read access.
 
using write_lock_t = std::unique_lock< std::shared_mutex >
 Type of lock used to synchronize write access.
 

Public Member Functions

 statistics_resource_adaptor (device_async_resource_ref upstream)
 Construct a new statistics resource adaptor using upstream to satisfy allocation requests. More...
 
 statistics_resource_adaptor (Upstream *upstream)
 Construct a new statistics resource adaptor using upstream to satisfy allocation requests. More...
 
 statistics_resource_adaptor (statistics_resource_adaptor const &)=delete
 
statistics_resource_adaptoroperator= (statistics_resource_adaptor const &)=delete
 
 statistics_resource_adaptor (statistics_resource_adaptor &&) noexcept=default
 Default move constructor.
 
statistics_resource_adaptoroperator= (statistics_resource_adaptor &&) noexcept=default
 Default move assignment operator. More...
 
rmm::device_async_resource_ref get_upstream_resource () const noexcept
 rmm::device_async_resource_ref to the upstream resource More...
 
counter get_bytes_counter () const noexcept
 Returns a counter struct for this adaptor containing the current, peak, and total number of allocated bytes for this adaptor since it was created. More...
 
counter get_allocations_counter () const noexcept
 Returns a counter struct for this adaptor containing the current, peak, and total number of allocation counts for this adaptor since it was created. More...
 
std::pair< counter, counterpush_counters ()
 Push a pair of zero counters on the stack, which becomes the new counters returned by get_bytes_counter() and get_allocations_counter() More...
 
std::pair< counter, counterpop_counters ()
 Pop a pair of counters from the stack. 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::statistics_resource_adaptor< Upstream >

Resource that uses Upstream to allocate memory and tracks statistics on memory allocations.

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. Tracking statistics stores the current, peak and total memory allocations for both the number of bytes and number of calls to the memory resource.

This resource supports nested statistics, which makes it possible to track statistics of a code block. Use .push_counters() to start tracking statistics on a code block and use .pop_counters() to stop the tracking. The nested statistics are cascading such that the statistics tracked by a code block include the statistics tracked in all its tracked sub code blocks.

statistics_resource_adaptor is intended as a debug adaptor and shouldn't be used in performance-sensitive code.

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

Constructor & Destructor Documentation

◆ statistics_resource_adaptor() [1/2]

template<typename Upstream >
rmm::mr::statistics_resource_adaptor< Upstream >::statistics_resource_adaptor ( device_async_resource_ref  upstream)
inline

Construct a new statistics resource adaptor using upstream to satisfy allocation requests.

Parameters
upstreamThe resource_ref used for allocating/deallocating device memory.

◆ statistics_resource_adaptor() [2/2]

template<typename Upstream >
rmm::mr::statistics_resource_adaptor< Upstream >::statistics_resource_adaptor ( Upstream *  upstream)
inline

Construct a new statistics resource adaptor using upstream to satisfy allocation requests.

Exceptions
rmm::logic_errorif upstream == nullptr
Parameters
upstreamThe resource used for allocating/deallocating device memory.

Member Function Documentation

◆ get_allocations_counter()

template<typename Upstream >
counter rmm::mr::statistics_resource_adaptor< Upstream >::get_allocations_counter ( ) const
inlinenoexcept

Returns a counter struct for this adaptor containing the current, peak, and total number of allocation counts for this adaptor since it was created.

Returns
counter struct containing allocations count

◆ get_bytes_counter()

template<typename Upstream >
counter rmm::mr::statistics_resource_adaptor< Upstream >::get_bytes_counter ( ) const
inlinenoexcept

Returns a counter struct for this adaptor containing the current, peak, and total number of allocated bytes for this adaptor since it was created.

Returns
counter struct containing bytes count

◆ get_upstream_resource()

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

rmm::device_async_resource_ref to the upstream resource

Returns
rmm::device_async_resource_ref to the upstream resource

◆ operator=()

template<typename Upstream >
statistics_resource_adaptor& rmm::mr::statistics_resource_adaptor< Upstream >::operator= ( statistics_resource_adaptor< Upstream > &&  )
defaultnoexcept

Default move assignment operator.

Returns
statistics_resource_adaptor& Reference to the assigned object

◆ pop_counters()

template<typename Upstream >
std::pair<counter, counter> rmm::mr::statistics_resource_adaptor< Upstream >::pop_counters ( )
inline

Pop a pair of counters from the stack.

Returns
top pair of counters <bytes, allocations> from the stack before the pop
Exceptions
std::out_of_rangeif the counter stack has fewer than two entries.

◆ push_counters()

template<typename Upstream >
std::pair<counter, counter> rmm::mr::statistics_resource_adaptor< Upstream >::push_counters ( )
inline

Push a pair of zero counters on the stack, which becomes the new counters returned by get_bytes_counter() and get_allocations_counter()

Returns
top pair of counters <bytes, allocations> from the stack before the push

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