A non-owning, immutable view of device data as a column of elements, some of which may be null as indicated by a bitmask.
More...
|
| column_view (column_view const &)=default |
| Copy constructor.
|
|
| column_view (column_view &&)=default |
| Move constructor.
|
|
column_view & | operator= (column_view const &)=default |
| Copy assignment operator. More...
|
|
column_view & | operator= (column_view &&)=default |
| Move assignment operator. More...
|
|
| column_view (data_type type, size_type size, void const *data, bitmask_type const *null_mask, size_type null_count, size_type offset=0, std::vector< column_view > const &children={}) |
| Construct a column_view from pointers to device memory for the elements and bitmask of the column. More...
|
|
column_view | child (size_type child_index) const noexcept |
| Returns the specified child. More...
|
|
size_type | num_children () const noexcept |
| Returns the number of child columns. More...
|
|
auto | child_begin () const noexcept |
| Returns iterator to the beginning of the ordered sequence of child column-views. More...
|
|
auto | child_end () const noexcept |
| Returns iterator to the end of the ordered sequence of child column-views. More...
|
|
template<typename T , CUDF_ENABLE_IF(cudf::is_numeric< T >() or cudf::is_chrono< T >()) > |
| column_view (device_span< T const > data) |
| Construct a column view from a device_span<T>. More...
|
|
template<typename T , CUDF_ENABLE_IF(cudf::is_numeric< T >() or cudf::is_chrono< T >()) > |
| operator device_span< T const > () const |
| Converts a column view into a device span. More...
|
|
Public Member Functions inherited from cudf::detail::column_view_base |
template<typename T = void, CUDF_ENABLE_IF(std::is_same_v< T, void > or is_rep_layout_compatible< T >()) > |
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 >()) > |
T const * | 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 const * | begin () const noexcept |
| Return first element (accounting for offset) after underlying data is casted to the specified type. More...
|
|
template<typename T , CUDF_ENABLE_IF(is_rep_layout_compatible< T >()) > |
T const * | end () const noexcept |
| Return one past the last element after underlying data is casted to the specified type. More...
|
|
size_type | size () const noexcept |
| Returns the number of elements in the column. More...
|
|
bool | is_empty () const noexcept |
| Returns true if size() returns zero, or false otherwise. More...
|
|
data_type | type () const noexcept |
| Returns the element data_type More...
|
|
bool | nullable () const noexcept |
| Indicates if the column can contain null elements, i.e., if it has an allocated bitmask. More...
|
|
size_type | null_count () const |
| Returns the count of null elements. More...
|
|
size_type | null_count (size_type begin, size_type end) const |
| Returns the count of null elements in the range [begin, end) More...
|
|
bool | has_nulls () const |
| Indicates if the column contains null elements, i.e., null_count() > 0 More...
|
|
bool | has_nulls (size_type begin, size_type end) const |
| Indicates if the column contains null elements in the range [begin, end), i.e., null_count(begin, end) > 0 More...
|
|
bitmask_type const * | null_mask () const noexcept |
| Returns raw pointer to the underlying bitmask allocation. More...
|
|
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...
|
|
A non-owning, immutable view of device data as a column of elements, some of which may be null as indicated by a bitmask.
A column_view
can be constructed implicitly from a cudf::column
, or may be constructed explicitly from a pointer to pre-existing device memory.
Unless otherwise noted, the memory layout of the column_view
's data and bitmask is expected to adhere to the Arrow Physical Memory Layout Specification: https://arrow.apache.org/docs/memory_layout.html
Because column_view
is non-owning, no device memory is allocated nor freed when column_view
objects are created or destroyed.
To enable zero-copy slicing, a column_view
has an offset
that indicates the index of the first element in the column relative to the base device memory allocation. By default, offset()
is zero.
Definition at line 313 of file column_view.hpp.
Zero-copy cast between types with the same size and compatible underlying representations.
This is similar to reinterpret_cast
or bit_cast
in that it gives a view of the same raw bits as a different type. Unlike reinterpret_cast
however, this cast is only allowed on types that have the same width and compatible representations. For example, the way timestamp types are laid out in memory is equivalent to an integer representing a duration since a fixed epoch; bit-casting to the same integer type (INT32 for days, INT64 for others) results in a raw view of the duration count. A FLOAT32 can also be bit-casted into INT32 and treated as an integer value. However, an INT32 column cannot be bit-casted to INT64 as the sizes differ, nor can a string_view column be casted into a numeric type column as their data representations are not compatible.
The validity of the conversion can be checked with cudf::is_bit_castable()
.
- Exceptions
-
cudf::logic_error | if the specified cast is not possible, i.e., is_bit_castable(input.type(), type) is false. |
- Parameters
-
- Returns
- New
column_view
wrapping the same data as input
but cast to type