9 #include <rmm/detail/error.hpp>
10 #include <rmm/detail/export.hpp>
11 #include <rmm/detail/format.hpp>
17 namespace RMM_NAMESPACE {
30 int pageableMemoryAccess;
31 RMM_CUDA_TRY(cudaDeviceGetAttribute(
32 &pageableMemoryAccess, cudaDevAttrPageableMemoryAccess, device_id.
value()));
33 return pageableMemoryAccess == 1;
69 "System memory allocator is not supported with this hardware/software version.");
91 void* do_allocate(std::size_t bytes, [[maybe_unused]]
cuda_stream_view stream)
override
94 return rmm::detail::aligned_host_allocate(
96 }
catch (std::bad_alloc
const& e) {
97 auto const msg = std::string(
"Failed to allocate ") + rmm::detail::format_bytes(bytes) +
98 std::string(
"of memory: ") + e.what();
113 void do_deallocate(
void* ptr,
114 [[maybe_unused]] std::size_t bytes,
121 stream.synchronize();
123 rmm::detail::aligned_host_deallocate(
137 [[nodiscard]]
bool do_is_equal(device_memory_resource
const& other)
const noexcept
override
139 return dynamic_cast<system_memory_resource const*
>(&other) !=
nullptr;
158 rmm::detail::polyfill::async_resource_with<system_memory_resource, cuda::mr::device_accessible>);
160 rmm::detail::polyfill::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:28
Base class for all librmm device memory allocation.
Definition: device_memory_resource.hpp:83
device_memory_resource derived class that uses malloc/free for allocation/deallocation.
Definition: system_memory_resource.hpp:64
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:146
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:153
system_memory_resource & operator=(system_memory_resource &&)=default
Default move assignment operator.
Exception thrown when RMM runs out of memory.
Definition: error.hpp:76
cuda_device_id get_current_cuda_device()
Returns a cuda_device_id for the current device.
static constexpr std::size_t CUDA_ALLOCATION_ALIGNMENT
Default alignment used for CUDA memory allocation.
Definition: aligned.hpp:31
Strong type for a CUDA device identifier.
Definition: cuda_device.hpp:27
constexpr value_type value() const noexcept
The wrapped integer value.
Definition: cuda_device.hpp:43
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:27