20 #include <rmm/detail/error.hpp>
21 #include <rmm/detail/export.hpp>
25 #include <cuda_runtime_api.h>
30 namespace RMM_NAMESPACE {
262 [[nodiscard]]
void const* data() const noexcept {
return _data; }
267 void*
data() noexcept {
return _data; }
272 [[nodiscard]] std::size_t
size() const noexcept {
return _size; }
277 [[nodiscard]] std::int64_t
ssize() const noexcept
279 assert(size() <
static_cast<std::size_t
>(std::numeric_limits<int64_t>::max()) &&
280 "Size overflows signed integer");
281 return static_cast<int64_t
>(size());
290 [[nodiscard]]
bool is_empty() const noexcept {
return 0 == size(); }
299 [[nodiscard]] std::size_t
capacity() const noexcept {
return _capacity; }
325 void* _data{
nullptr};
327 std::size_t _capacity{};
328 cuda_stream_view _stream{};
344 void allocate_async(std::size_t bytes);
355 void deallocate_async() noexcept;
369 void copy_async(
void const* source, std::
size_t bytes);
Strongly-typed non-owning wrapper for CUDA streams with default constructor.
Definition: cuda_stream_view.hpp:39
RAII construct for device memory allocation.
Definition: device_buffer.hpp:81
cuda_stream_view stream() const noexcept
The stream most recently specified for allocation/deallocation.
Definition: device_buffer.hpp:304
void * data() noexcept
Pointer to the device memory allocation.
Definition: device_buffer.hpp:267
~device_buffer() noexcept
Destroy the device buffer object.
device_buffer & operator=(device_buffer &&other) noexcept
Move assignment operator moves the contents from other.
device_buffer()
Default constructor creates an empty device_buffer
std::size_t capacity() const noexcept
Returns actual size in bytes of device memory allocation.
Definition: device_buffer.hpp:299
device_buffer(std::size_t size, cuda_stream_view stream, device_async_resource_ref mr=mr::get_current_device_resource_ref())
Constructs a new device buffer of size uninitialized bytes.
void set_stream(cuda_stream_view stream) noexcept
Sets the stream to be used for deallocation.
Definition: device_buffer.hpp:317
std::size_t size() const noexcept
The number of bytes.
Definition: device_buffer.hpp:272
device_buffer(void const *source_data, std::size_t size, cuda_stream_view stream, device_async_resource_ref mr=mr::get_current_device_resource_ref())
Construct a new device buffer by copying from a raw pointer to an existing host or device memory allo...
device_buffer(device_buffer &&other) noexcept
Constructs a new device_buffer by moving the contents of another device_buffer into the newly constru...
device_buffer(device_buffer const &other, cuda_stream_view stream, device_async_resource_ref mr=mr::get_current_device_resource_ref())
Construct a new device_buffer by deep copying the contents of another device_buffer,...
std::int64_t ssize() const noexcept
The signed number of bytes.
Definition: device_buffer.hpp:277
bool is_empty() const noexcept
Whether or not the buffer currently holds any data.
Definition: device_buffer.hpp:290
rmm::device_async_resource_ref memory_resource() const noexcept
The resource used to allocate and deallocate.
Definition: device_buffer.hpp:322
cuda_device_id get_current_cuda_device()
Returns a cuda_device_id for the current device.
cuda::mr::async_resource_ref< cuda::mr::device_accessible > device_async_resource_ref
Alias for a cuda::mr::async_resource_ref with the property cuda::mr::device_accessible.
Definition: resource_ref.hpp:40
device_async_resource_ref get_current_device_resource_ref()
Get the device_async_resource_ref for the current device.
Definition: per_device_resource.hpp:411
Management of per-device device_memory_resources.