RMM  23.12
RAPIDS Memory Manager
Public Member Functions | Static Public Member Functions | Friends | List of all members
rmm::mr::logging_resource_adaptor< Upstream > Class Template Referencefinal

Resource that uses Upstream to allocate memory and logs information about the requested allocation/deallocations. More...

#include <logging_resource_adaptor.hpp>

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

Public Member Functions

 logging_resource_adaptor (Upstream *upstream, std::string const &filename=get_default_filename(), bool auto_flush=false)
 Construct a new logging resource adaptor using upstream to satisfy allocation requests and logging information about each allocation/free to the file specified by filename. More...
 
 logging_resource_adaptor (Upstream *upstream, std::ostream &stream, bool auto_flush=false)
 Construct a new logging resource adaptor using upstream to satisfy allocation requests and logging information about each allocation/free to the ostream specified by stream. More...
 
 logging_resource_adaptor (Upstream *upstream, spdlog::sinks_init_list sinks, bool auto_flush=false)
 Construct a new logging resource adaptor using upstream to satisfy allocation requests and logging information about each allocation/free to the ostream specified by stream. More...
 
 logging_resource_adaptor (logging_resource_adaptor const &)=delete
 
logging_resource_adaptoroperator= (logging_resource_adaptor const &)=delete
 
 logging_resource_adaptor (logging_resource_adaptor &&) noexcept=default
 Default move constructor.
 
logging_resource_adaptoroperator= (logging_resource_adaptor &&) noexcept=default
 Default move assignment operator. More...
 
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...
 
void flush ()
 Flush logger contents.
 
std::string header () const
 Return the CSV header string. 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...
 
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...
 

Static Public Member Functions

static std::string get_default_filename ()
 Return the value of the environment variable RMM_LOG_FILE. More...
 

Friends

template<typename T >
logging_resource_adaptor< T > make_logging_adaptor (T *upstream, std::string const &filename, bool auto_flush)
 

Detailed Description

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

Resource that uses Upstream to allocate memory and logs information about the requested allocation/deallocations.

An instance of this resource can be constructed with an existing, upstream resource in order to satisfy allocation requests and log allocation/deallocation activity.

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

Constructor & Destructor Documentation

◆ logging_resource_adaptor() [1/3]

template<typename Upstream >
rmm::mr::logging_resource_adaptor< Upstream >::logging_resource_adaptor ( Upstream *  upstream,
std::string const &  filename = get_default_filename(),
bool  auto_flush = false 
)
inline

Construct a new logging resource adaptor using upstream to satisfy allocation requests and logging information about each allocation/free to the file specified by filename.

The logfile will be written using CSV formatting.

Clears the contents of filename if it already exists.

Creating multiple logging_resource_adaptors with the same filename will result in undefined behavior.

Exceptions
rmm::logic_errorif upstream == nullptr
spdlog::spdlog_exif opening filename failed
Parameters
upstreamThe resource used for allocating/deallocating device memory
filenameName of file to write log info. If not specified, retrieves the file name from the environment variable "RMM_LOG_FILE".
auto_flushIf true, flushes the log for every (de)allocation. Warning, this will degrade performance.

◆ logging_resource_adaptor() [2/3]

template<typename Upstream >
rmm::mr::logging_resource_adaptor< Upstream >::logging_resource_adaptor ( Upstream *  upstream,
std::ostream &  stream,
bool  auto_flush = false 
)
inline

Construct a new logging resource adaptor using upstream to satisfy allocation requests and logging information about each allocation/free to the ostream specified by stream.

The logfile will be written using CSV formatting.

Exceptions
rmm::logic_errorif upstream == nullptr
Parameters
upstreamThe resource used for allocating/deallocating device memory
streamThe ostream to write log info.
auto_flushIf true, flushes the log for every (de)allocation. Warning, this will degrade performance.

◆ logging_resource_adaptor() [3/3]

template<typename Upstream >
rmm::mr::logging_resource_adaptor< Upstream >::logging_resource_adaptor ( Upstream *  upstream,
spdlog::sinks_init_list  sinks,
bool  auto_flush = false 
)
inline

Construct a new logging resource adaptor using upstream to satisfy allocation requests and logging information about each allocation/free to the ostream specified by stream.

The logfile will be written using CSV formatting.

Exceptions
rmm::logic_errorif upstream == nullptr
Parameters
upstreamThe resource used for allocating/deallocating device memory
sinksA list of logging sinks to which log output will be written.
auto_flushIf true, flushes the log for every (de)allocation. Warning, this will degrade performance.

Member Function Documentation

◆ get_default_filename()

template<typename Upstream >
static std::string rmm::mr::logging_resource_adaptor< Upstream >::get_default_filename ( )
inlinestatic

Return the value of the environment variable RMM_LOG_FILE.

Exceptions
rmm::logic_errorif RMM_LOG_FILE is not set.
Returns
The value of RMM_LOG_FILE as std::string.

◆ get_upstream()

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

Return pointer to the upstream resource.

Returns
Upstream* Pointer to the upstream resource.

◆ header()

template<typename Upstream >
std::string rmm::mr::logging_resource_adaptor< Upstream >::header ( ) const
inline

Return the CSV header string.

Returns
CSV formatted header string of column names

◆ operator=()

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

Default move assignment operator.

Returns
logging_resource_adaptor& Reference to the assigned object

◆ supports_get_mem_info()

template<typename Upstream >
bool rmm::mr::logging_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::logging_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: