Public Member Functions | Friends | List of all members
rmm::mr::sam_headroom_memory_resource Class Referencefinal

Resource that uses system memory resource to allocate memory with a headroom. More...

#include <sam_headroom_memory_resource.hpp>

Inheritance diagram for rmm::mr::sam_headroom_memory_resource:
Inheritance graph
[legend]
Collaboration diagram for rmm::mr::sam_headroom_memory_resource:
Collaboration graph
[legend]

Public Member Functions

 sam_headroom_memory_resource (std::size_t headroom)
 Construct a headroom memory resource. More...
 
 sam_headroom_memory_resource (sam_headroom_memory_resource const &)=default
 Default copy constructor.
 
 sam_headroom_memory_resource (sam_headroom_memory_resource &&)=default
 Default move constructor.
 
sam_headroom_memory_resourceoperator= (sam_headroom_memory_resource const &)=default
 Default copy assignment operator. More...
 
sam_headroom_memory_resourceoperator= (sam_headroom_memory_resource &&)=default
 Default move assignment operator. More...
 

Friends

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

Detailed Description

Resource that uses system memory resource to allocate memory with a headroom.

System allocated memory (SAM) can be migrated to the GPU, but is never migrated back the host. If GPU memory is over-subscribed, this can cause other CUDA calls to fail with out-of-memory errors. To work around this problem, when using a system memory resource, we reserve some GPU memory as headroom for other CUDA calls, and only conditionally set its preferred location to the GPU if the allocation would not eat into the headroom.

Since doing this check on every allocation can be expensive, the caller may choose to use other allocators (e.g. binning_memory_resource) for small allocations, and use this allocator for large allocations only.

Constructor & Destructor Documentation

◆ sam_headroom_memory_resource()

rmm::mr::sam_headroom_memory_resource::sam_headroom_memory_resource ( std::size_t  headroom)
explicit

Construct a headroom memory resource.

Parameters
headroomSize of the reserved GPU memory as headroom

Member Function Documentation

◆ operator=() [1/2]

sam_headroom_memory_resource& rmm::mr::sam_headroom_memory_resource::operator= ( sam_headroom_memory_resource &&  )
default

Default move assignment operator.

Returns
sam_headroom_memory_resource& Reference to the assigned object

◆ operator=() [2/2]

sam_headroom_memory_resource& rmm::mr::sam_headroom_memory_resource::operator= ( sam_headroom_memory_resource const &  )
default

Default copy assignment operator.

Returns
sam_headroom_memory_resource& Reference to the assigned object

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