cuda_memory_resource.hpp
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: Copyright (c) 2019-2025, NVIDIA CORPORATION.
3  * SPDX-License-Identifier: Apache-2.0
4  */
5 #pragma once
6 
8 #include <rmm/detail/error.hpp>
9 #include <rmm/detail/export.hpp>
11 
12 #include <cstddef>
13 
14 namespace RMM_NAMESPACE {
15 namespace mr {
26  public:
27  cuda_memory_resource() = default;
28  ~cuda_memory_resource() override = default;
32  default;
34  default;
35 
36  private:
48  void* do_allocate(std::size_t bytes, [[maybe_unused]] cuda_stream_view stream) override
49  {
50  void* ptr{nullptr};
51  RMM_CUDA_TRY_ALLOC(cudaMalloc(&ptr, bytes), bytes);
52  return ptr;
53  }
54 
65  void do_deallocate(void* ptr,
66  [[maybe_unused]] std::size_t bytes,
67  [[maybe_unused]] cuda_stream_view stream) noexcept override
68  {
69  RMM_ASSERT_CUDA_SUCCESS(cudaFree(ptr));
70  }
71 
82  [[nodiscard]] bool do_is_equal(device_memory_resource const& other) const noexcept override
83  {
84  return dynamic_cast<cuda_memory_resource const*>(&other) != nullptr;
85  }
86 }; // end of group
88 } // namespace mr
89 } // namespace RMM_NAMESPACE
Strongly-typed non-owning wrapper for CUDA streams with default constructor.
Definition: cuda_stream_view.hpp:28
device_memory_resource derived class that uses cudaMalloc/Free for allocation/deallocation.
Definition: cuda_memory_resource.hpp:25
cuda_memory_resource(cuda_memory_resource const &)=default
Default copy constructor.
cuda_memory_resource & operator=(cuda_memory_resource const &)=default
Default copy assignment operator.
cuda_memory_resource & operator=(cuda_memory_resource &&)=default
Default move assignment operator.
cuda_memory_resource(cuda_memory_resource &&)=default
Default move constructor.
Base class for all librmm device memory allocation.
Definition: device_memory_resource.hpp:83