Public Member Functions | Static Public Member Functions | Friends | List of all members
rmm::mr::logging_resource_adaptor Class Reference

Resource that uses an upstream resource 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:
Inheritance graph
[legend]
Collaboration diagram for rmm::mr::logging_resource_adaptor:
Collaboration graph
[legend]

Public Member Functions

 logging_resource_adaptor (cuda::mr::any_resource< cuda::mr::device_accessible > 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 (cuda::mr::any_resource< cuda::mr::device_accessible > 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 (cuda::mr::any_resource< cuda::mr::device_accessible > upstream, std::initializer_list< rapids_logger::sink_ptr > 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 sinks specified. More...
 
rmm::device_async_resource_ref get_upstream_resource () const noexcept
 rmm::device_async_resource_ref to the upstream resource More...
 
void flush ()
 Flush logger contents.
 
std::string header () const
 Return the CSV header string. More...
 

Static Public Member Functions

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

Friends

void get_property (logging_resource_adaptor const &, cuda::mr::device_accessible) noexcept
 Enables the cuda::mr::device_accessible property. More...
 

Detailed Description

Resource that uses an upstream resource 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.

This class is copyable and shares ownership of its internal state, allowing multiple instances to safely reference the same underlying resource and logger.

Constructor & Destructor Documentation

◆ logging_resource_adaptor() [1/3]

rmm::mr::logging_resource_adaptor::logging_resource_adaptor ( cuda::mr::any_resource< cuda::mr::device_accessible >  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.

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
spdlog::spdlog_exif opening filename failed
Parameters
upstreamThe resource_ref 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]

rmm::mr::logging_resource_adaptor::logging_resource_adaptor ( cuda::mr::any_resource< cuda::mr::device_accessible >  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.

The logfile will be written using CSV formatting.

Parameters
upstreamThe resource_ref 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]

rmm::mr::logging_resource_adaptor::logging_resource_adaptor ( cuda::mr::any_resource< cuda::mr::device_accessible >  upstream,
std::initializer_list< rapids_logger::sink_ptr >  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 sinks specified.

The logfile will be written using CSV formatting.

Parameters
upstreamThe resource_ref 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()

static std::string rmm::mr::logging_resource_adaptor::get_default_filename ( )
static

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_resource()

rmm::device_async_resource_ref rmm::mr::logging_resource_adaptor::get_upstream_resource ( ) const
noexcept

rmm::device_async_resource_ref to the upstream resource

Returns
rmm::device_async_resource_ref to the upstream resource

◆ header()

std::string rmm::mr::logging_resource_adaptor::header ( ) const

Return the CSV header string.

Returns
CSV formatted header string of column names

Friends And Related Function Documentation

◆ get_property

void get_property ( logging_resource_adaptor const &  ,
cuda::mr::device_accessible   
)
friend

Enables the cuda::mr::device_accessible property.

This property declares that a logging_resource_adaptor provides device accessible memory


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