20 #include <rmm/detail/export.hpp>
25 #include <type_traits>
27 namespace RMM_NAMESPACE {
44 static_assert(std::is_trivially_copyable<T>::value,
"Scalar type must be trivially copyable");
55 RMM_EXEC_CHECK_DISABLE
58 RMM_EXEC_CHECK_DISABLE
99 : _storage{1, stream, mr}
122 : _storage{1, stream, mr}
124 set_value_async(initial_value, stream);
142 : _storage{other._storage, stream, mr}
164 return _storage.front_element(stream);
206 _storage.set_element_async(0, value, stream);
229 _storage.set_element_to_zero_async(
value_type{0}, stream);
Strongly-typed non-owning wrapper for CUDA streams with default constructor.
Definition: cuda_stream_view.hpp:41
Container for a single object of type T in device memory.
Definition: device_scalar.hpp:42
typename device_uvector< T >::value_type value_type
T, the type of the scalar element.
Definition: device_scalar.hpp:46
constexpr size_type size() const noexcept
The size of the scalar: always 1.
Definition: device_scalar.hpp:262
const_pointer data() const noexcept
Returns const pointer to object in device memory.
Definition: device_scalar.hpp:254
typename device_uvector< T >::const_reference const_reference
const value_type&
Definition: device_scalar.hpp:49
typename device_uvector< T >::size_type size_type
The type used for the size.
Definition: device_scalar.hpp:47
RMM_EXEC_CHECK_DISABLE device_scalar(device_scalar &&) noexcept=default
Default move constructor.
void set_stream(cuda_stream_view stream) noexcept
Sets the stream to be used for deallocation.
Definition: device_scalar.hpp:274
device_scalar(value_type const &initial_value, cuda_stream_view stream, device_async_resource_ref mr=mr::get_current_device_resource_ref())
Construct a new device_scalar with an initial value.
Definition: device_scalar.hpp:119
device_scalar(device_scalar const &other, cuda_stream_view stream, device_async_resource_ref mr=mr::get_current_device_resource_ref())
Construct a new device_scalar by deep copying the contents of another device_scalar,...
Definition: device_scalar.hpp:139
typename device_uvector< T >::const_pointer const_pointer
Definition: device_scalar.hpp:53
cuda_stream_view stream() const noexcept
Stream associated with the device memory allocation.
Definition: device_scalar.hpp:267
pointer data() noexcept
Returns pointer to object in device memory.
Definition: device_scalar.hpp:242
value_type value(cuda_stream_view stream) const
Copies the value from device to host, synchronizes, and returns the value.
Definition: device_scalar.hpp:162
void set_value_to_zero_async(cuda_stream_view stream)
Sets the value of the device_scalar to zero on the specified stream.
Definition: device_scalar.hpp:227
void set_value_async(value_type const &value, cuda_stream_view stream)
Sets the value of the device_scalar to the value of v.
Definition: device_scalar.hpp:204
typename device_uvector< T >::pointer pointer
The type of the pointer returned by data()
Definition: device_scalar.hpp:51
typename device_uvector< T >::reference reference
value_type&
Definition: device_scalar.hpp:48
An uninitialized vector of elements in device memory.
Definition: device_uvector.hpp:77
value_type * pointer
The type of the pointer returned by data()
Definition: device_uvector.hpp:87
std::size_t size_type
The type used for the size of the vector.
Definition: device_uvector.hpp:83
T value_type
T; stored value type.
Definition: device_uvector.hpp:82
value_type & reference
value_type&; reference type returned by operator[](size_type)
Definition: device_uvector.hpp:84
value_type const * const_pointer
The type of the pointer returned by data() const.
Definition: device_uvector.hpp:88
value_type const & const_reference
Definition: device_uvector.hpp:86
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:41
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.