29 #include <type_traits>
38 namespace CUDF_EXPORT
cudf {
85 template <typename T, CUDF_ENABLE_IF(cudf::is_numeric<T>() or
cudf::
is_chrono<T>())>
90 other.
size() <=
static_cast<std::size_t
>(std::numeric_limits<size_type>::max()),
91 "The device_uvector size exceeds the column size limit",
96 _null_mask{std::move(null_mask)},
116 template <
typename B1,
typename B2 = rmm::device_buffer>
122 std::vector<std::unique_ptr<column>>&& children = {})
125 _data{std::forward<B1>(data)},
126 _null_mask{std::forward<B2>(null_mask)},
128 _children{std::move(children)}
130 CUDF_EXPECTS(size >= 0,
"Column size cannot be negative.");
218 [[nodiscard]]
bool nullable() const noexcept {
return (_null_mask.size() > 0); }
251 return *_children[child_index];
260 std::unique_ptr<rmm::device_buffer>
data;
329 std::vector<std::unique_ptr<column>> _children{};
设备数据的一个非拥有、不可变视图,数据以列形式组织,其中一些元素可能为空...
data_type type() const noexcept
返回列的逻辑元素类型。
bool has_nulls() const noexcept
指示列是否包含空元素。
column(column_view view, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
通过深度复制 column_view 的内容构造新的列。
size_type null_count() const
返回空元素的数量。
size_type num_children() const noexcept
返回子列的数量。
void set_null_mask(rmm::device_buffer const &new_null_mask, size_type new_null_count, rmm::cuda_stream_view stream=cudf::get_default_stream())
将列的空值指示器位掩码设置为 new_null_mask。
mutable_column_view mutable_view()
创建列的数据、空掩码和子列的可变、非拥有视图。
column(column &&other) noexcept
移动 other 的内容以创建新的列。
column const & child(size_type child_index) const noexcept
返回指定子列的 const 引用。
column & child(size_type child_index) noexcept
返回指定子列的引用。
column(data_type dtype, size_type size, B1 &&data, B2 &&null_mask, size_type null_count, std::vector< std::unique_ptr< column >> &&children={})
从现有设备内存构造新的列。
void set_null_mask(rmm::device_buffer &&new_null_mask, size_type new_null_count)
将列的空值指示器位掩码设置为 new_null_mask。
column(column const &other, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
通过深度复制 other 的内容构造新的列对象。
bool nullable() const noexcept
指示列是否可能包含空值,即是否已分配空掩码...
contents release() noexcept
释放列内容的拥有权。
size_type size() const noexcept
返回元素的数量。
void set_null_count(size_type new_null_count)
更新空元素的数量。
设备数据的一个非拥有、可变视图,数据以列形式组织,其中一些元素可能为空...
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,... 内空元素(未设置位)的数量...
rmm::cuda_stream_view const get_default_stream()
获取当前默认流。
rmm::device_async_resource_ref get_current_device_resource_ref()
获取当前设备内存资源的引用。
cuda::mr::async_resource_ref< cuda::mr::device_accessible > device_async_resource_ref
#define CUDF_EXPECTS(...)
用于检查(前置)条件并在此条件被违反时抛出异常的宏。
int32_t size_type
列和表的行索引类型。
constexpr CUDF_HOST_DEVICE bool is_chrono()
指示类型 T 是否为 chrono 类型。
std::unique_ptr< rmm::device_buffer > data
数据设备内存缓冲区
std::unique_ptr< rmm::device_buffer > null_mask
空掩码设备内存缓冲区
std::vector< std::unique_ptr< column > > children
子列