All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
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 >
 Type of lock used to synchronize access.
 

Public Member Functions

 thread_safe_resource_adaptor (device_async_resource_ref upstream)
 Construct a new thread safe resource adaptor using upstream to satisfy allocation requests. More...
 
 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
 
rmm::device_async_resource_ref get_upstream_resource () const noexcept
 rmm::device_async_resource_ref to the upstream resource 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::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() [1/2]

template<typename Upstream >
rmm::mr::thread_safe_resource_adaptor< Upstream >::thread_safe_resource_adaptor ( device_async_resource_ref  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

Parameters
upstreamThe resource used for allocating/deallocating device memory.

◆ thread_safe_resource_adaptor() [2/2]

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
rmm::logic_errorif upstream == nullptr
Parameters
upstreamThe resource used for allocating/deallocating device memory.

Member Function Documentation

◆ get_upstream_resource()

template<typename Upstream >
rmm::device_async_resource_ref rmm::mr::thread_safe_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

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