19 #include <rmm/detail/error.hpp>
20 #include <rmm/detail/export.hpp>
25 namespace RMM_NAMESPACE {
59 void* do_allocate(std::size_t bytes, [[maybe_unused]]
cuda_stream_view stream)
override
63 if (bytes == 0) {
return nullptr; }
66 RMM_CUDA_TRY_ALLOC(cudaMallocManaged(&ptr, bytes), bytes);
80 void do_deallocate(
void* ptr,
81 [[maybe_unused]] std::size_t bytes,
84 RMM_ASSERT_CUDA_SUCCESS(cudaFree(ptr));
97 [[nodiscard]]
bool do_is_equal(device_memory_resource
const& other)
const noexcept
override
99 return dynamic_cast<managed_memory_resource const*
>(&other) !=
nullptr;
用于 CUDA 流的强类型非拥有封装器,带默认构造函数。
定义: cuda_stream_view.hpp:39
所有 librmm 设备内存分配的基类。
定义: device_memory_resource.hpp:92
使用 cudaMallocManaged/Free 进行分配/解除分配的 device_memory_resource 派生类。
定义: managed_memory_resource.hpp:36
managed_memory_resource(managed_memory_resource &&)=default
默认移动构造函数。
managed_memory_resource & operator=(managed_memory_resource &&)=default
默认移动赋值运算符。
managed_memory_resource & operator=(managed_memory_resource const &)=default
默认复制赋值运算符。
managed_memory_resource(managed_memory_resource const &)=default
默认复制构造函数。