20 #include <rmm/detail/error.hpp>
21 #include <rmm/detail/export.hpp>
22 #include <rmm/detail/thrust_namespace.h>
25 #include <cuda_runtime_api.h>
30 namespace RMM_NAMESPACE {
55 : cuda_pool_handle_{[valid_pool_handle]() {
56 RMM_EXPECTS(
nullptr != valid_pool_handle,
"Unexpected null pool handle.");
57 return valid_pool_handle;
62 int cuda_pool_supported{};
64 cudaDeviceGetAttribute(&cuda_pool_supported, cudaDevAttrMemoryPoolsSupported, device.value());
65 RMM_EXPECTS(result == cudaSuccess && cuda_pool_supported,
66 "cudaMallocAsync not supported with this CUDA driver/runtime version");
74 [[nodiscard]] cudaMemPool_t
pool_handle() const noexcept {
return cuda_pool_handle_; }
87 cudaMemPool_t cuda_pool_handle_{};
102 RMM_CUDA_TRY_ALLOC(cudaMallocFromPoolAsync(&ptr, bytes, pool_handle(), stream.
value()));
115 void do_deallocate(
void* ptr,
116 [[maybe_unused]] std::size_t bytes,
119 if (ptr !=
nullptr) { RMM_ASSERT_CUDA_SUCCESS(cudaFreeAsync(ptr, stream.
value())); }
129 [[nodiscard]]
bool do_is_equal(device_memory_resource
const& other)
const noexcept
override
131 return dynamic_cast<cuda_async_view_memory_resource const*
>(&other) !=
nullptr;
Strongly-typed non-owning wrapper for CUDA streams with default constructor.
Definition: cuda_stream_view.hpp:41
constexpr cudaStream_t value() const noexcept
Get the wrapped stream.
Definition: cuda_stream_view.hpp:75
device_memory_resource derived class that uses cudaMallocAsync/cudaFreeAsync for allocation/deallocat...
Definition: cuda_async_view_memory_resource.hpp:42
cuda_async_view_memory_resource & operator=(cuda_async_view_memory_resource &&)=default
Default move assignment operator.
cuda_async_view_memory_resource(cudaMemPool_t valid_pool_handle)
Constructs a cuda_async_view_memory_resource which uses an existing CUDA memory pool....
Definition: cuda_async_view_memory_resource.hpp:54
cuda_async_view_memory_resource(cuda_async_view_memory_resource &&)=default
Default move constructor.
cudaMemPool_t pool_handle() const noexcept
Returns the underlying native handle to the CUDA pool.
Definition: cuda_async_view_memory_resource.hpp:74
cuda_async_view_memory_resource(cuda_async_view_memory_resource const &)=default
Default copy constructor.
cuda_async_view_memory_resource & operator=(cuda_async_view_memory_resource const &)=default
Default copy assignment operator.
Base class for all libcudf device memory allocation.
Definition: device_memory_resource.hpp:94
cuda_device_id get_current_cuda_device()
Returns a cuda_device_id for the current device.
Definition: cuda_device.hpp:96