A mutable, non-owning view of device data as a column of elements that is trivially copyable and usable in CUDA device code. More...
Public Types | |
using | count_it = thrust::counting_iterator< size_type > |
Counting iterator. | |
template<typename T > | |
using | iterator = thrust::transform_iterator< detail::mutable_value_accessor< T >, count_it > |
Iterator for navigating this column. | |
Public Member Functions | |
mutable_column_device_view (mutable_column_device_view const &)=default | |
Copy constructor. | |
mutable_column_device_view (mutable_column_device_view &&)=default | |
Move constructor. | |
mutable_column_device_view & | operator= (mutable_column_device_view const &)=default |
Copy assignment operator. More... | |
mutable_column_device_view & | operator= (mutable_column_device_view &&)=default |
Move assignment operator. More... | |
mutable_column_device_view (mutable_column_view column, void *h_ptr, void *d_ptr) | |
Creates an instance of this class using the specified host memory pointer (h_ptr) to store child objects and the device memory pointer (d_ptr) as a base for any child object pointers. More... | |
template<typename T = void, CUDF_ENABLE_IF(std::is_same_v< T, void > or is_rep_layout_compatible< T >()) > | |
CUDF_HOST_DEVICE T * | head () const noexcept |
Returns pointer to the base device memory allocation casted to the specified type. More... | |
template<typename T , CUDF_ENABLE_IF(is_rep_layout_compatible< T >()) > | |
CUDF_HOST_DEVICE T * | data () const noexcept |
Returns the underlying data casted to the specified type, plus the offset. More... | |
template<typename T , CUDF_ENABLE_IF(is_rep_layout_compatible< T >()) > | |
T & | element (size_type element_index) const noexcept |
Returns reference to element at the specified index. More... | |
CUDF_HOST_DEVICE bitmask_type * | null_mask () const noexcept |
Returns raw pointer to the underlying bitmask allocation. More... | |
template<typename T , CUDF_ENABLE_IF(mutable_column_device_view::has_element_accessor< T >()) > | |
iterator< T > | begin () |
Return first element (accounting for offset) after underlying data is casted to the specified type. More... | |
template<typename T , CUDF_ENABLE_IF(mutable_column_device_view::has_element_accessor< T >()) > | |
iterator< T > | end () |
Return one past the last element after underlying data is casted to the specified type. More... | |
mutable_column_device_view | child (size_type child_index) const noexcept |
Returns the specified child. More... | |
void | set_mask_word (size_type word_index, bitmask_type new_word) const noexcept |
Updates the specified bitmask word in the null_mask() with a new word. More... | |
void | destroy () |
Destroy the mutable_column_device_view object. More... | |
Public Member Functions inherited from cudf::detail::column_device_view_base | |
column_device_view_base (column_device_view_base const &)=default | |
Copy constructor. | |
column_device_view_base (column_device_view_base &&)=default | |
Move constructor. | |
column_device_view_base & | operator= (column_device_view_base const &)=default |
Copy assignment operator. More... | |
column_device_view_base & | operator= (column_device_view_base &&)=default |
Move assignment operator. More... | |
template<typename T = void, CUDF_ENABLE_IF(std::is_same_v< T, void > or is_rep_layout_compatible< T >()) > | |
CUDF_HOST_DEVICE T const * | head () const noexcept |
Returns pointer to the base device memory allocation casted to the specified type. More... | |
template<typename T , CUDF_ENABLE_IF(is_rep_layout_compatible< T >()) > | |
CUDF_HOST_DEVICE T const * | data () const noexcept |
Returns the underlying data casted to the specified type, plus the offset. More... | |
CUDF_HOST_DEVICE size_type | size () const noexcept |
Returns the number of elements in the column. More... | |
CUDF_HOST_DEVICE data_type | type () const noexcept |
Returns the element type. More... | |
CUDF_HOST_DEVICE bool | nullable () const noexcept |
Indicates whether the column can contain null elements, i.e., if it has an allocated bitmask. More... | |
CUDF_HOST_DEVICE bitmask_type const * | null_mask () const noexcept |
Returns raw pointer to the underlying bitmask allocation. More... | |
CUDF_HOST_DEVICE size_type | offset () const noexcept |
Returns the index of the first element relative to the base memory allocation, i.e., what is returned from head<T>() . More... | |
bool | is_valid (size_type element_index) const noexcept |
Returns whether the specified element holds a valid value (i.e., not null). More... | |
bool | is_valid_nocheck (size_type element_index) const noexcept |
Returns whether the specified element holds a valid value (i.e., not null) More... | |
bool | is_null (size_type element_index) const noexcept |
Returns whether the specified element is null. More... | |
bool | is_null_nocheck (size_type element_index) const noexcept |
Returns whether the specified element is null. More... | |
bitmask_type | get_mask_word (size_type word_index) const noexcept |
Returns the specified bitmask word from the null_mask() . More... | |
Static Public Member Functions | |
static std::unique_ptr< mutable_column_device_view, std::function< void(mutable_column_device_view *)> > | create (mutable_column_view source_view, rmm::cuda_stream_view stream=cudf::get_default_stream()) |
Factory to construct a column view that is usable in device memory. More... | |
template<typename T > | |
static constexpr CUDF_HOST_DEVICE bool | has_element_accessor () |
For a given T , indicates if mutable_column_device_view::element<T>() has a valid overload. More... | |
static std::size_t | extent (mutable_column_view source_view) |
Return the size in bytes of the amount of memory needed to hold a device view of the specified column and it's children. More... | |
Additional Inherited Members | |
Protected Member Functions inherited from cudf::detail::column_device_view_base | |
CUDF_HOST_DEVICE | column_device_view_base (data_type type, size_type size, void const *data, bitmask_type const *null_mask, size_type offset) |
Constructs a column with the specified type, size, data, nullmask and offset. More... | |
Protected Attributes inherited from cudf::detail::column_device_view_base | |
data_type | _type {type_id::EMPTY} |
Element type. | |
cudf::size_type | _size {} |
Number of elements. | |
void const * | _data {} |
Pointer to device memory containing elements. | |
bitmask_type const * | _null_mask {} |
size_type | _offset {} |
A mutable, non-owning view of device data as a column of elements that is trivially copyable and usable in CUDA device code.
Definition at line 928 of file column_device_view.cuh.
cudf::mutable_column_device_view::mutable_column_device_view | ( | mutable_column_view | column, |
void * | h_ptr, | ||
void * | d_ptr | ||
) |
Creates an instance of this class using the specified host memory pointer (h_ptr) to store child objects and the device memory pointer (d_ptr) as a base for any child object pointers.
column | Column view from which to create this instance. |
h_ptr | Host memory pointer on which to place any child data. |
d_ptr | Device memory pointer on which to base any child pointers. |
|
inline |
Return first element (accounting for offset) after underlying data is casted to the specified type.
This function does not participate in overload resolution if mutable_column_device_view::has_element_accessor<T>()
is false.
T | The desired type |
Definition at line 1086 of file column_device_view.cuh.
|
inlinenoexcept |
Returns the specified child.
child_index | The index of the desired child |
column_view
Definition at line 1113 of file column_device_view.cuh.
|
static |
Factory to construct a column view that is usable in device memory.
Allocates and copies views of source_view
's children to device memory to make them accessible in device code.
If source_view.num_children() == 0
, then no device memory is allocated.
Returns a std::unique_ptr<mutable_column_device_view>
with a custom deleter to free the device memory allocated for the children.
A mutable_column_device_view
should be passed by value into GPU kernels.
source_view | The column_view to make usable in device code |
stream | CUDA stream used for device memory operations for children columns. |
unique_ptr
to a mutable_column_device_view
that makes the data from source_view
available in device memory.
|
inlinenoexcept |
Returns the underlying data casted to the specified type, plus the offset.
This function does not participate in overload resolution if is_rep_layout_compatible<T>
is false.
offset() == 0
, then head<T>() == data<T>()
T | The type to cast to |
Definition at line 1017 of file column_device_view.cuh.
void cudf::mutable_column_device_view::destroy | ( | ) |
Destroy the mutable_column_device_view
object.
|
inlinenoexcept |
Returns reference to element at the specified index.
This function accounts for the offset.
This function does not participate in overload resolution if is_rep_layout_compatible<T>
is false. Specializations of this function may exist for types T
where is_rep_layout_compatible<T>
is false.
T | The element type |
element_index | Position of the desired element |
Definition at line 1037 of file column_device_view.cuh.
|
inline |
Return one past the last element after underlying data is casted to the specified type.
This function does not participate in overload resolution if mutable_column_device_view::has_element_accessor<T>()
is false.
T | The desired type |
Definition at line 1102 of file column_device_view.cuh.
|
static |
Return the size in bytes of the amount of memory needed to hold a device view of the specified column and it's children.
source_view | The column_view to use for this calculation. |
|
inlinestaticconstexpr |
For a given T
, indicates if mutable_column_device_view::element<T>()
has a valid overload.
true
if mutable_column_device_view::element<T>()
has a valid overload, false
Definition at line 1049 of file column_device_view.cuh.
|
inlinenoexcept |
Returns pointer to the base device memory allocation casted to the specified type.
This function will only participate in overload resolution if is_rep_layout_compatible<T>()
or std::is_same_v<T,void>
are true.
offset() == 0
, then head<T>() == data<T>()
head<T>()
allocation of a column, and instead, accessing the elements should be done via data<T>()
.The | type to cast to |
Definition at line 999 of file column_device_view.cuh.
|
inlinenoexcept |
Returns raw pointer to the underlying bitmask allocation.
offset()
.null_count() == 0
, this may return nullptr
. Definition at line 1062 of file column_device_view.cuh.
|
default |
Move assignment operator.
|
default |
Copy assignment operator.
|
inlinenoexcept |
Updates the specified bitmask word in the null_mask()
with a new word.
nullable() == false
.word_index | The index of the word to update |
new_word | The new bitmask word |
Definition at line 1168 of file column_device_view.cuh.