20 #include <rmm/detail/error.hpp>
21 #include <rmm/detail/export.hpp>
24 namespace RMM_NAMESPACE {
36 int pageableMemoryAccess;
37 RMM_CUDA_TRY(cudaDeviceGetAttribute(
38 &pageableMemoryAccess, cudaDevAttrPageableMemoryAccess, device_id.
value()));
39 return pageableMemoryAccess == 1;
75 "System memory allocator is not supported with this hardware/software version.");
97 void* do_allocate(std::size_t bytes, [[maybe_unused]]
cuda_stream_view stream)
override
100 return rmm::detail::aligned_host_allocate(
102 }
catch (std::bad_alloc
const& e) {
117 void do_deallocate(
void* ptr,
118 [[maybe_unused]] std::size_t bytes,
127 rmm::detail::aligned_host_deallocate(
141 [[nodiscard]]
bool do_is_equal(device_memory_resource
const& other)
const noexcept
override
143 return dynamic_cast<system_memory_resource const*
>(&other) !=
nullptr;
161 static_assert(cuda::mr::async_resource_with<system_memory_resource, cuda::mr::device_accessible>);
162 static_assert(cuda::mr::async_resource_with<system_memory_resource, cuda::mr::host_accessible>);
Strongly-typed non-owning wrapper for CUDA streams with default constructor.
Definition: cuda_stream_view.hpp:41
void synchronize() const
Synchronize the viewed CUDA stream.
Definition: cuda_stream_view.hpp:108
Base class for all libcudf device memory allocation.
Definition: device_memory_resource.hpp:94
device_memory_resource derived class that uses malloc/free for allocation/deallocation.
Definition: system_memory_resource.hpp:70
system_memory_resource(system_memory_resource const &)=default
Default copy constructor.
system_memory_resource(system_memory_resource &&)=default
Default copy constructor.
system_memory_resource & operator=(system_memory_resource const &)=default
Default copy assignment operator.
friend void get_property(system_memory_resource const &, cuda::mr::device_accessible) noexcept
Enables the cuda::mr::device_accessible property.
Definition: system_memory_resource.hpp:150
friend void get_property(system_memory_resource const &, cuda::mr::host_accessible) noexcept
Enables the cuda::mr::host_accessible property.
Definition: system_memory_resource.hpp:157
system_memory_resource & operator=(system_memory_resource &&)=default
Default move assignment operator.
Exception thrown when RMM runs out of memory.
Definition: error.hpp:87
cuda_device_id get_current_cuda_device()
Returns a cuda_device_id for the current device.
Definition: cuda_device.hpp:96
static constexpr std::size_t CUDA_ALLOCATION_ALIGNMENT
Default alignment used for CUDA memory allocation.
Definition: aligned.hpp:43
Strong type for a CUDA device identifier.
Definition: cuda_device.hpp:38
constexpr value_type value() const noexcept
The wrapped integer value.
Definition: cuda_device.hpp:54
static bool is_system_memory_supported(cuda_device_id device_id)
Check if system allocated memory (SAM) is supported on the specified device.
Definition: system_memory_resource.hpp:34