cudf::column_view 是一个非拥有、不可变的设备数据视图,作为元素列,其中一些元素可能为空,由位掩码指示。 更多...
#include <column_view.hpp>
公共成员函数 | |
column_view (column_view const &)=default | |
复制构造函数。 | |
column_view (column_view &&)=default | |
移动构造函数。 | |
column_view & | operator= (column_view const &)=default |
复制赋值运算符。 更多... | |
column_view & | operator= (column_view &&)=default |
移动赋值运算符。 更多... | |
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 | child (size_type child_index) const noexcept |
返回指定的子列。 更多... | |
size_type | num_children () const noexcept |
返回子列的数量。 更多... | |
auto | child_begin () const noexcept |
返回指向子 column-view 有序序列开头的迭代器。 更多... | |
auto | child_end () const noexcept |
返回指向子 column-view 有序序列末尾的迭代器。 更多... | |
template<typename T , CUDF_ENABLE_IF(cudf::is_numeric< T >() or cudf::is_chrono< T >()) > | |
column_view (device_span< T const > data) | |
从 device_span<T> 构造一个 column view。 更多... | |
template<typename T , CUDF_ENABLE_IF(cudf::is_numeric< T >() or cudf::is_chrono< T >()) > | |
operator device_span< T const > () const | |
将 column view 转换为 device span。 更多... | |
![]() | |
template<typename T = void, CUDF_ENABLE_IF(std::is_same_v< T, void > or is_rep_layout_compatible< T >()) > | |
T const * | head () const noexcept |
返回指向基设备内存分配的指针,并转换为指定的类型。 更多... | |
template<typename T , CUDF_ENABLE_IF(is_rep_layout_compatible< T >()) > | |
T const * | data () const noexcept |
返回转换为指定类型的基础数据,加上偏移量。 更多... | |
template<typename T , CUDF_ENABLE_IF(is_rep_layout_compatible< T >()) > | |
T const * | begin () const noexcept |
返回基础数据转换为指定类型后的第一个元素(考虑偏移量)。 更多... | |
template<typename T , CUDF_ENABLE_IF(is_rep_layout_compatible< T >()) > | |
T const * | end () const noexcept |
返回基础数据转换为指定类型后的最后一个元素之后的位置。 更多... | |
size_type | size () const noexcept |
返回列中的元素数量。 更多... | |
bool | is_empty () const noexcept |
如果 size() 返回零,则返回 true,否则返回 false。 更多... | |
data_type | type () const noexcept |
返回元素的 data_type 更多... | |
bool | nullable () const noexcept |
指示列是否可以包含空元素,即是否已分配位掩码。 更多... | |
size_type | null_count () const |
返回空元素的数量。 更多... | |
size_type | null_count (size_type begin, size_type end, rmm::cuda_stream_view stream=cudf::get_default_stream()) const |
返回范围 [begin, end) 内空元素的数量 更多... | |
bool | has_nulls () const |
指示列是否包含空元素,即 null_count() > 0 更多... | |
bool | has_nulls (size_type begin, size_type end, rmm::cuda_stream_view stream=cudf::get_default_stream()) const |
指示列在范围 [begin, end) 内是否包含空元素,即 null_count(begin, end) > 0 更多... | |
bitmask_type const * | null_mask () const noexcept |
返回指向基础位掩码分配的原始指针。 更多... | |
size_type | offset () const noexcept |
返回相对于基内存分配的第一个元素的索引,即从 head<T>() 返回的值。 更多... | |
受保护成员函数 | |
void const * | get_data () const noexcept override |
返回指向基设备内存分配的指针。 更多... | |
![]() | |
column_view_base (column_view_base const &)=default | |
复制构造函数。 | |
column_view_base (column_view_base &&)=default | |
移动构造函数。 | |
column_view_base & | operator= (column_view_base const &)=default |
复制赋值运算符。 更多... | |
column_view_base & | operator= (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 ,用于列的元素和位掩码。 更多... | |
友元 | |
column_view | bit_cast (column_view const &input, data_type type) |
在大小相同且底层表示兼容的类型之间进行零拷贝转换。 更多... | |
附加继承成员 | |
![]() | |
data_type | _type {type_id::EMPTY} |
元素类型。 | |
size_type | _size {} |
元素数量。 | |
void const * | _data {} |
指向包含元素的设备内存的指针。 | |
bitmask_type const * | _null_mask {} |
size_type | _null_count {} |
空元素的数量。 | |
size_type | _offset {} |
cudf::column_view 是一个非拥有、不可变的设备数据视图,作为元素列,其中一些元素可能为空,由位掩码指示。
column_view
可以从 cudf::column
隐式构造,也可以从指向预先存在的设备内存的指针显式构造。
除非另有说明,否则 column_view
的数据和位掩码的内存布局应遵循 Arrow 物理内存布局规范:https://arrow.apache.ac.cn/docs/memory_layout.html
由于 column_view
是非拥有的,因此在创建或销毁 column_view
对象时不会分配或释放设备内存。
为了实现零拷贝切片,column_view
有一个 offset
,指示列中相对于基设备内存分配的第一个元素的索引。默认情况下,offset()
为零。
定义于文件 column_view.hpp 的第 327 行。
cudf::column_view::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
,用于列的元素和位掩码。
如果 null_count()
为零,则 null_mask
是可选的。
如果 type
为 EMPTY
,则指定的 null_count
将被忽略,且 null_count()
将始终返回与 size()
相同的值
cudf::logic_error | 如果 size < 0 |
cudf::logic_error | 如果 size > 0 但 data == nullptr |
cudf::logic_error | 如果 type.id() == EMPTY 但 data != nullptr 或 null_mask != nullptr |
cudf::logic_error | 如果 null_count > 0 但 null_mask == nullptr |
cudf::logic_error | 如果 offset < 0 |
type | 元素类型 |
size | 元素数量 |
data | 指向包含列元素的设备内存的指针 |
null_mask | 指向包含空值指示位掩码的设备内存的指针 |
null_count | 空元素的数量。 |
offset | 可选,第一个元素的索引 |
children | 可选,根据元素类型,子列可能包含附加数据 |
|
inline |
从 device_span<T> 构造一个 column view。
仅支持数值类型和时间类型。
T | device span 类型。必须是 const 且与 column view 的类型匹配。 |
data | 包含 column view 数据的类型化 device span。 |
定义于文件 column_view.hpp 的第 434 行。
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
overrideprotectedvirtualnoexcept |
返回指向基设备内存分配的指针。
此函数的主要目的是允许派生类重写内存访问的基本属性,而无需更改底层指针的所有不同访问器。
|
inlinenoexcept |
|
inline |
将 column view 转换为 device span。
仅支持数值类型和时间数据类型。column view 不能包含空值。
T | device span 类型。必须是 const 且与 column view 的类型匹配。 |
cudf::logic_error | 如果 column view 类型与 span 类型不匹配。 |
cudf::logic_error | 如果 column view 可包含空值。 |
定义于文件 column_view.hpp 的第 456 行。
|
default |
移动赋值运算符。
|
default |
复制赋值运算符。
|
friend |
在大小相同且底层表示兼容的类型之间进行零拷贝转换。
这类似于 reinterpret_cast
或 bit_cast
,因为它提供了与不同类型相同的原始位视图。然而,与 reinterpret_cast
不同的是,此转换仅允许用于具有相同宽度和兼容表示的类型。例如,时间戳类型在内存中的布局相当于表示自固定纪元以来持续时间的整数;位转换为相同的整数类型(INT32 用于天,INT64 用于其他)会生成持续时间计数器的原始视图。FLOAT32 也可以位转换为 INT32 并视为整数值。但是,INT32 列不能位转换为 INT64,因为大小不同;string_view 列也不能转换为数值类型列,因为它们的数据表示不兼容。
可以使用 cudf::is_bit_castable()
检查转换的有效性。
cudf::logic_error | 如果指定的转换不可能,即 is_bit_castable(input.type(), type) 为 false。 |
input | 要从中转换的 column_view |
type | 要转换到的 data_type |
input
相同数据但转换为 type
的新 column_view