All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
Files | Classes | Typedefs | Functions
Device Memory Resources
Collaboration diagram for Device Memory Resources:

Files

file  arena_memory_resource.hpp
 
file  binning_memory_resource.hpp
 
file  callback_memory_resource.hpp
 
file  cuda_async_memory_resource.hpp
 
file  cuda_async_view_memory_resource.hpp
 
file  cuda_memory_resource.hpp
 
file  device_memory_resource.hpp
 
file  fixed_size_memory_resource.hpp
 
file  managed_memory_resource.hpp
 
file  polymorphic_allocator.hpp
 
file  pool_memory_resource.hpp
 
file  sam_headroom_memory_resource.hpp
 
file  system_memory_resource.hpp
 

Classes

class  rmm::mr::arena_memory_resource< Upstream >
 A suballocator that emphasizes fragmentation avoidance and scalable concurrency support. More...
 
class  rmm::mr::binning_memory_resource< Upstream >
 Allocates memory from upstream resources associated with bin sizes. More...
 
class  rmm::mr::callback_memory_resource
 A device memory resource that uses the provided callbacks for memory allocation and deallocation. More...
 
class  rmm::mr::cuda_async_memory_resource
 device_memory_resource derived class that uses cudaMallocAsync/cudaFreeAsync for allocation/deallocation. More...
 
class  rmm::mr::cuda_async_view_memory_resource
 device_memory_resource derived class that uses cudaMallocAsync/cudaFreeAsync for allocation/deallocation. More...
 
class  rmm::mr::cuda_memory_resource
 device_memory_resource derived class that uses cudaMalloc/Free for allocation/deallocation. More...
 
class  rmm::mr::device_memory_resource
 Base class for all librmm device memory allocation. More...
 
class  rmm::mr::fixed_size_memory_resource< Upstream >
 A device_memory_resource which allocates memory blocks of a single fixed size. More...
 
class  rmm::mr::managed_memory_resource
 device_memory_resource derived class that uses cudaMallocManaged/Free for allocation/deallocation. More...
 
class  rmm::mr::polymorphic_allocator< T >
 A stream ordered Allocator using a rmm::mr::device_memory_resource to satisfy (de)allocations. More...
 
class  rmm::mr::stream_allocator_adaptor< Allocator >
 Adapts a stream ordered allocator to provide a standard Allocator interface. More...
 
class  rmm::mr::pool_memory_resource< Upstream >
 A coalescing best-fit suballocator which uses a pool of memory allocated from an upstream memory_resource. More...
 
class  rmm::mr::sam_headroom_memory_resource
 Resource that uses system memory resource to allocate memory with a headroom. More...
 
class  rmm::mr::system_memory_resource
 device_memory_resource derived class that uses malloc/free for allocation/deallocation. More...
 

Typedefs

using rmm::mr::allocate_callback_t = std::function< void *(std::size_t, cuda_stream_view, void *)>
 Callback function type used by callback memory resource for allocation. More...
 
using rmm::mr::deallocate_callback_t = std::function< void(void *, std::size_t, cuda_stream_view, void *)>
 Callback function type used by callback_memory_resource for deallocation. More...
 

Functions

template<typename T , typename U >
bool rmm::mr::operator== (polymorphic_allocator< T > const &lhs, polymorphic_allocator< U > const &rhs)
 Compare two polymorphic_allocators for equality. More...
 
template<typename T , typename U >
bool rmm::mr::operator!= (polymorphic_allocator< T > const &lhs, polymorphic_allocator< U > const &rhs)
 Compare two polymorphic_allocators for inequality. More...
 
template<typename A , typename O >
bool rmm::mr::operator== (stream_allocator_adaptor< A > const &lhs, stream_allocator_adaptor< O > const &rhs)
 Compare two stream_allocator_adaptors for equality. More...
 
template<typename A , typename O >
bool rmm::mr::operator!= (stream_allocator_adaptor< A > const &lhs, stream_allocator_adaptor< O > const &rhs)
 Compare two stream_allocator_adaptors for inequality. More...
 

Detailed Description

Typedef Documentation

◆ allocate_callback_t

using rmm::mr::allocate_callback_t = typedef std::function<void*(std::size_t, cuda_stream_view, void*)>

Callback function type used by callback memory resource for allocation.

The signature of the callback function is: `void* allocate_callback_t(std::size_t bytes, cuda_stream_view stream, void* arg);

  • Returns a pointer to an allocation of at least bytes usable immediately on stream. The stream-ordered behavior requirements are identical to device_memory_resource::allocate.
  • This signature is compatible with do_allocate but adds the extra function parameter arg. The arg is provided to the constructor of the callback_memory_resource and will be forwarded along to every invocation of the callback function.

◆ deallocate_callback_t

using rmm::mr::deallocate_callback_t = typedef std::function<void(void*, std::size_t, cuda_stream_view, void*)>

Callback function type used by callback_memory_resource for deallocation.

The signature of the callback function is: `void deallocate_callback_t(void* ptr, std::size_t bytes, cuda_stream_view stream, void* arg);

  • Deallocates memory pointed to by ptr. bytes specifies the size of the allocation in bytes, and must equal the value of bytes that was passed to the allocate callback function. The stream-ordered behavior requirements are identical to device_memory_resource::deallocate.
  • This signature is compatible with do_deallocate but adds the extra function parameter arg. The arg is provided to the constructor of the callback_memory_resource and will be forwarded along to every invocation of the callback function.

Function Documentation

◆ operator!=() [1/2]

template<typename T , typename U >
bool rmm::mr::operator!= ( polymorphic_allocator< T > const &  lhs,
polymorphic_allocator< U > const &  rhs 
)

Compare two polymorphic_allocators for inequality.

Two polymorphic_allocators are not equal if their underlying memory resources compare not equal.

Template Parameters
TType of the first allocator
UType of the second allocator
Parameters
lhsThe first allocator to compare
rhsThe second allocator to compare
Returns
true if the two allocators are not equal, false otherwise

◆ operator!=() [2/2]

template<typename A , typename O >
bool rmm::mr::operator!= ( stream_allocator_adaptor< A > const &  lhs,
stream_allocator_adaptor< O > const &  rhs 
)

Compare two stream_allocator_adaptors for inequality.

Two stream_allocator_adaptors are not equal if their underlying allocators compare not equal.

Template Parameters
AType of the first allocator
OType of the second allocator
Parameters
lhsThe first allocator to compare
rhsThe second allocator to compare
Returns
true if the two allocators are not equal, false otherwise

◆ operator==() [1/2]

template<typename T , typename U >
bool rmm::mr::operator== ( polymorphic_allocator< T > const &  lhs,
polymorphic_allocator< U > const &  rhs 
)

Compare two polymorphic_allocators for equality.

Two polymorphic_allocators are equal if their underlying memory resources compare equal.

Template Parameters
TType of the first allocator
UType of the second allocator
Parameters
lhsThe first allocator to compare
rhsThe second allocator to compare
Returns
true if the two allocators are equal, false otherwise

◆ operator==() [2/2]

template<typename A , typename O >
bool rmm::mr::operator== ( stream_allocator_adaptor< A > const &  lhs,
stream_allocator_adaptor< O > const &  rhs 
)

Compare two stream_allocator_adaptors for equality.

Two stream_allocator_adaptors are equal if their underlying allocators compare equal.

Template Parameters
AType of the first allocator
OType of the second allocator
Parameters
lhsThe first allocator to compare
rhsThe second allocator to compare
Returns
true if the two allocators are equal, false otherwise