20 #include <cudf/utilities/prefetch.hpp>
26 #include <type_traits>
33 namespace CUDF_EXPORT
cudf {
71 template <
typename T = void,
72 CUDF_ENABLE_IF(std::is_same_v<T, void> or is_rep_layout_compatible<T>())>
73 T
const*
head() const noexcept
75 return static_cast<T const*
>(get_data());
90 template <typename T, CUDF_ENABLE_IF(is_rep_layout_compatible<T>())>
91 T
const*
data()
const noexcept
93 return head<T>() + _offset;
106 template <typename T, CUDF_ENABLE_IF(is_rep_layout_compatible<T>())>
122 template <typename T, CUDF_ENABLE_IF(is_rep_layout_compatible<T>())>
123 T
const*
end()
const noexcept
125 return begin<T>() + size();
140 [[nodiscard]]
bool is_empty() const noexcept {
return size() == 0; }
158 [[nodiscard]]
bool nullable() const noexcept {
return nullptr != _null_mask; }
244 [[nodiscard]]
virtual void const*
get_data() const noexcept {
return _data; }
338 #pragma nv_exec_check_disable
342 #pragma nv_exec_check_disable
391 std::vector<column_view>
const& children = {});
401 return _children[child_index];
423 auto child_end() const noexcept {
return _children.cend(); }
433 template <typename T, CUDF_ENABLE_IF(cudf::is_numeric<T>() or
cudf::
is_chrono<T>())>
436 cudf::
data_type{cudf::type_to_id<T>()}, data.size(), data.data(),
nullptr, 0, 0, {})
439 data.size() <=
static_cast<std::size_t
>(std::numeric_limits<cudf::size_type>::max()),
440 "Data exceeds the column size limit",
441 std::overflow_error);
455 template <typename T, CUDF_ENABLE_IF(cudf::is_numeric<T>() or
cudf::
is_chrono<T>())>
459 "Device span type must match column view type.");
558 std::vector<mutable_column_view>
const& children = {});
575 template <
typename T = void,
576 CUDF_ENABLE_IF(std::is_same_v<T, void> or is_rep_layout_compatible<T>())>
579 return const_cast<T*
>(detail::column_view_base::head<T>());
594 template <typename T, CUDF_ENABLE_IF(is_rep_layout_compatible<T>())>
597 return const_cast<T*
>(detail::column_view_base::data<T>());
610 template <typename T, CUDF_ENABLE_IF(is_rep_layout_compatible<T>())>
613 return const_cast<T*
>(detail::column_view_base::begin<T>());
626 template <typename T, CUDF_ENABLE_IF(is_rep_layout_compatible<T>())>
629 return const_cast<T*
>(detail::column_view_base::end<T>());
643 return const_cast<bitmask_type*
>(detail::column_view_base::null_mask());
663 return mutable_children[child_index];
678 auto child_begin() const noexcept {
return mutable_children.begin(); }
685 auto child_end() const noexcept {
return mutable_children.cend(); }
704 [[nodiscard]]
void const*
get_data() const noexcept override;
设备的非拥有、不可变数据视图,表示为一个元素列,其中一些元素可能为空,指示...(此描述已截断)
column_view(column_view &&)=default
移动构造函数。
size_type num_children() const noexcept
返回子列的数量。
auto child_begin() const noexcept
返回指向按顺序排列的子 column-view 序列开头的迭代器。
column_view & operator=(column_view &&)=default
移动赋值运算符。
column_view & operator=(column_view const &)=default
复制赋值运算符。
void const * get_data() const noexcept override
返回指向基础设备内存分配的指针。
auto child_end() const noexcept
返回指向按顺序排列的子 column-view 序列末尾的迭代器。
column_view child(size_type child_index) const noexcept
返回指定的子列。
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={})
从指向列元素和位掩码的设备内存指针构造 column_view。
column_view(column_view const &)=default
复制构造函数。
设备的非拥有、不可变数据视图,表示为一个元素列,其中一些元素可能为空,指示...(此描述已截断)
T const * end() const noexcept
将基础数据转换为指定类型后,返回指向最后一个元素之后的指针。
data_type type() const noexcept
返回元素 data_type
bool has_nulls(size_type begin, size_type end, rmm::cuda_stream_view stream=cudf::get_default_stream()) const
指示列是否在范围 [begin, end) 内包含 null 元素,即 null_count(begin,...(此描述已截断)
column_view_base(column_view_base &&)=default
移动构造函数。
column_view_base(data_type type, size_type size, void const *data, bitmask_type const *null_mask, size_type null_count, size_type offset=0)
从指向列元素和位掩码的设备内存指针构造 column_view_base。(此描述已截断)
size_type null_count() const
返回 null 元素的数量。
size_type null_count(size_type begin, size_type end, rmm::cuda_stream_view stream=cudf::get_default_stream()) const
返回范围 [begin, end) 内 null 元素的数量。
column_view_base & operator=(column_view_base const &)=default
复制赋值运算符。
column_view_base & operator=(column_view_base &&)=default
移动赋值运算符。
size_type size() const noexcept
返回列中的元素数量。
T const * begin() const noexcept
将基础数据转换为指定类型后,返回第一个元素(考虑偏移量)。
T const * data() const noexcept
返回转换为指定类型的基础数据,加上偏移量。
size_type offset() const noexcept
返回相对于基础内存分配的第一个元素的索引,即...(此描述已截断)
virtual void const * get_data() const noexcept
返回指向基础设备内存分配的指针。
T const * head() const noexcept
返回转换为指定类型的基础设备内存分配的指针。
bool has_nulls() const
指示列是否包含 null 元素,即 null_count() > 0
bitmask_type const * null_mask() const noexcept
返回指向基础位掩码分配的原始指针。
bool nullable() const noexcept
指示列是否可以包含 null 元素,即是否已分配位掩码。
column_view_base(column_view_base const &)=default
复制构造函数。
bool is_empty() const noexcept
如果 size() 返回零,则返回 true,否则返回 false。
设备的非拥有、可变数据视图,表示为一个元素列,其中一些元素可能为空,指示...(此描述已截断)
T * head() const noexcept
返回转换为指定类型的基础设备内存分配的指针。
size_type num_children() const noexcept
返回子列的数量。
T * begin() const noexcept
将基础数据转换为指定类型后,返回第一个元素(考虑偏移量)。
void set_null_count(size_type new_null_count)
设置 null 计数。
auto child_begin() const noexcept
返回指向按顺序排列的子 column-view 序列开头的迭代器。
mutable_column_view(data_type type, size_type size, void *data, bitmask_type *null_mask, size_type null_count, size_type offset=0, std::vector< mutable_column_view > const &children={})
从指向列元素和位掩码的设备内存指针构造 mutable_column_view。(此描述已截断)
T * data() const noexcept
返回转换为指定类型的基础数据,加上偏移量。
mutable_column_view(mutable_column_view const &)=default
复制构造函数。
mutable_column_view & operator=(mutable_column_view &&)=default
移动赋值运算符。
mutable_column_view & operator=(mutable_column_view const &)=default
复制赋值运算符。
auto child_end() const noexcept
返回指向按顺序排列的子 column-view 序列末尾的迭代器。
bitmask_type * null_mask() const noexcept
返回指向基础位掩码分配的原始指针。
void const * get_data() const noexcept override
返回指向基础设备内存分配的指针。
mutable_column_view child(size_type child_index) const noexcept
返回指定子列的引用。
mutable_column_view(mutable_column_view &&)=default
移动构造函数。
T * end() const noexcept
将基础数据转换为指定类型后,返回指向最后一个元素之后的指针。
std::size_t shallow_hash(column_view const &input)
根据指定列的浅层状态计算哈希值。
bool is_shallow_equivalent(column_view const &lhs, column_view const &rhs)
仅使用浅层状态确定两个 column_view 是否视图等效列。
cudf::size_type null_count(bitmask_type const *bitmask, size_type start, size_type stop, rmm::cuda_stream_view stream=cudf::get_default_stream())
给定一个有效性位掩码,计算范围 [start,...(此描述已截断)内 null 元素的数量(未设置的位)。
rmm::cuda_stream_view const get_default_stream()
获取当前默认流。
#define CUDF_EXPECTS(...)
用于检查(前置)条件的宏,当条件被违反时抛出异常。
int32_t size_type
列和表的行索引类型。
uint32_t bitmask_type
存储为 32 位无符号整数的位掩码类型。
constexpr CUDF_HOST_DEVICE bool is_chrono()
指示类型 T 是否为 chrono 类型。
#define CUDF_ENABLE_IF(...)
作为匿名模板参数的 SFINAE 的便捷宏。
bool nullable(table_view const &view)
如果表中的任何列可为空,则返回 True。(不包括整个层次结构)
mutable_column_view bit_cast(mutable_column_view const &input, data_type type)
在具有相同大小和兼容基础表示的类型之间进行零拷贝转换。
size_type count_descendants(column_view parent)
计算指定父元素的后代数量。
C++20 std::span 的设备版本,功能集已简化。
定义 cudf::type_id 运行时类型信息与具体 C++ 类型之间的映射。