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

Resource that adapts Upstream memory resource adaptor to be thread safe. More...

#include <thread_safe_resource_adaptor.hpp>

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

Public Types

using lock_t = std::lock_guard< std::mutex >
 

Public Member Functions

 thread_safe_resource_adaptor (Upstream *upstream)
 Construct a new thread safe resource adaptor using upstream to satisfy allocation requests. More...
 
 thread_safe_resource_adaptor (thread_safe_resource_adaptor const &)=delete
 
 thread_safe_resource_adaptor (thread_safe_resource_adaptor &&)=delete
 
thread_safe_resource_adaptoroperator= (thread_safe_resource_adaptor const &)=delete
 
thread_safe_resource_adaptoroperator= (thread_safe_resource_adaptor &&)=delete
 
Upstream * get_upstream () const noexcept
 Get the upstream memory resource. More...
 
bool supports_streams () const noexcept override
 Query whether the resource supports use of non-null CUDA streams for allocation/deallocation. More...
 
bool supports_get_mem_info () const noexcept override
 Query whether the resource supports the get_mem_info API. More...
 
- Public Member Functions inherited from rmm::mr::device_memory_resource
 device_memory_resource (device_memory_resource const &)=default
 
device_memory_resourceoperator= (device_memory_resource const &)=default
 
 device_memory_resource (device_memory_resource &&) noexcept=default
 
device_memory_resourceoperator= (device_memory_resource &&) noexcept=default
 
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...
 
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::thread_safe_resource_adaptor< Upstream >

Resource that adapts Upstream memory resource adaptor to be thread safe.

An instance of this resource can be constructured with an existing, upstream resource in order to satisfy allocation requests. This adaptor wraps allocations and deallocations from Upstream in a mutex lock.

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

Constructor & Destructor Documentation

◆ thread_safe_resource_adaptor()

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

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

All allocations and frees are protected by a mutex lock

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

Member Function Documentation

◆ get_upstream()

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

Get the upstream memory resource.

Returns
Upstream* pointer to a memory resource object.

◆ supports_get_mem_info()

template<typename Upstream >
bool rmm::mr::thread_safe_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::thread_safe_resource_adaptor< Upstream >::supports_streams ( ) const
inlineoverridevirtualnoexcept

Query whether the resource supports use of non-null CUDA streams for allocation/deallocation.

Returns
bool true if the resource supports non-null CUDA streams.

Implements rmm::mr::device_memory_resource.


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