8 #include <rmm/detail/error.hpp>
9 #include <rmm/detail/export.hpp>
14 namespace RMM_NAMESPACE {
48 void* do_allocate(std::size_t bytes, [[maybe_unused]]
cuda_stream_view stream)
override
52 if (bytes == 0) {
return nullptr; }
55 RMM_CUDA_TRY_ALLOC(cudaMallocManaged(&ptr, bytes), bytes);
69 void do_deallocate(
void* ptr,
70 [[maybe_unused]] std::size_t bytes,
73 RMM_ASSERT_CUDA_SUCCESS(cudaFree(ptr));
86 [[nodiscard]]
bool do_is_equal(device_memory_resource
const& other)
const noexcept
override
88 return dynamic_cast<managed_memory_resource const*
>(&other) !=
nullptr;
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 cudaMallocManaged/Free for allocation/deallocation.
Definition: managed_memory_resource.hpp:25
managed_memory_resource(managed_memory_resource &&)=default
Default move constructor.
managed_memory_resource & operator=(managed_memory_resource &&)=default
Default move assignment operator.
managed_memory_resource & operator=(managed_memory_resource const &)=default
Default copy assignment operator.
managed_memory_resource(managed_memory_resource const &)=default
Default copy constructor.