一个非拥有、可变的设备数据视图,以列元素形式表示,其中一些元素可能为空(由位掩码指示)。更多...
#include <column_view.hpp>
公有成员函数 | |
| mutable_column_view (mutable_column_view const &)=default | |
| 拷贝构造函数。 | |
| mutable_column_view (mutable_column_view &&)=default | |
| 移动构造函数。 | |
| mutable_column_view & | operator= (mutable_column_view const &)=default |
| 拷贝赋值运算符。更多... | |
| mutable_column_view & | operator= (mutable_column_view &&)=default |
| 移动赋值运算符。更多... | |
| 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,包含列的元素和位掩码。更多... | |
| template<typename T = void, CUDF_ENABLE_IF(std::is_same_v< T, void > or is_rep_layout_compatible< T >()) > | |
| T * | head () const noexcept |
| 返回指向基础设备内存分配的指针,并转换为指定类型。更多... | |
| template<typename T , CUDF_ENABLE_IF(is_rep_layout_compatible< T >()) > | |
| T * | data () const noexcept |
| 返回转换为指定类型并加上偏移量的底层数据。更多... | |
| template<typename T , CUDF_ENABLE_IF(is_rep_layout_compatible< T >()) > | |
| T * | begin () const noexcept |
| 返回底层数据转换为指定类型后的第一个元素(考虑偏移量)。更多... | |
| template<typename T , CUDF_ENABLE_IF(is_rep_layout_compatible< T >()) > | |
| T * | end () const noexcept |
| 返回底层数据转换为指定类型后的最后一个元素之后的位置。更多... | |
| bitmask_type * | null_mask () const noexcept |
| 返回指向底层位掩码分配的原始指针。更多... | |
| void | set_null_count (size_type new_null_count) |
| 设置空值计数。更多... | |
| mutable_column_view | child (size_type child_index) const noexcept |
| 返回对指定子列的引用。更多... | |
| size_type | num_children () const noexcept |
| 返回子列的数量。更多... | |
| auto | child_begin () const noexcept |
| 返回指向有序子列视图序列开头的迭代器。更多... | |
| auto | child_end () const noexcept |
| 返回指向有序子列视图序列末尾的迭代器。更多... | |
| operator column_view () const | |
| 将可变视图转换为不可变视图。更多... | |
继承自 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 |
| 返回指向基础设备内存分配的指针,并转换为指定类型。更多... | |
| 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 |
| 返回指向基础设备内存分配的指针。更多... | |
继承自 cudf::detail::column_view_base 的保护成员函数 | |
| 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,包含列的元素和位掩码。更多... | |
友元 | |
| mutable_column_view | bit_cast (mutable_column_view const &input, data_type type) |
| 在具有相同大小和兼容底层表示的类型之间进行零拷贝转换。更多... | |
额外继承成员 | |
继承自 cudf::detail::column_view_base 的保护属性 | |
| data_type | _type {type_id::EMPTY} |
| 元素类型。 | |
| size_type | _size {} |
| 元素数量。 | |
| void const * | _data {} |
| 指向包含元素的设备内存的指针。 | |
| bitmask_type const * | _null_mask {} |
| size_type | _null_count {} |
| 空元素的数量。 | |
| size_type | _offset {} |
一个非拥有、可变的设备数据视图,以列元素形式表示,其中一些元素可能为空(由位掩码指示)。
mutable_column_view 可以从 cudf::column 隐式构造,也可以从指向预先存在的设备内存的指针显式构造。
除非另有说明,否则 mutable_column_view 的数据和位掩码内存布局应遵循 Arrow 物理内存布局规范:https://arrow.apache.ac.cn/docs/memory_layout.html
由于 mutable_column_view 是非拥有的,在创建或销毁 mutable_column_view 对象时不会分配或释放设备内存。
为了启用零拷贝切片,mutable_column_view 有一个 offset,指示列中第一个元素相对于基础设备内存分配的索引。默认情况下,offset() 为零。
定义在文件 column_view.hpp 的 503 行。
| cudf::mutable_column_view::mutable_column_view | ( | data_type | 类型, |
| size_type | 大小, | ||
| void * | 数据, | ||
| bitmask_type * | 空值掩码, | ||
| size_type | 空值数量, | ||
| size_type | 偏移量 = 0, |
||
| std::vector< mutable_column_view > const & | 子列 = {} |
||
| ) |
从指向设备内存的指针构造一个 mutable_column_view,包含列的元素和位掩码。
如果 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 |
| 类型 | 元素类型 |
| 大小 | 元素数量 |
| 数据 | 指向包含列元素的设备内存的指针 |
| 空值掩码 | 指向包含空值指示位掩码的设备内存的指针 |
| 空值数量 | 空元素的数量。 |
| 偏移量 | 可选,第一个元素的索引 |
| 子列 | 可选,根据元素类型,子列可能包含额外数据 |
|
inlinenoexcept |
返回底层数据转换为指定类型后的第一个元素(考虑偏移量)。
如果 is_rep_layout_compatible<T> 为 false,则此函数不参与重载决议。
| T | 期望的类型 |
定义在文件 column_view.hpp 的 611 行。
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
返回转换为指定类型并加上偏移量的底层数据。
如果 is_rep_layout_compatible<T> 为 false,则此函数不参与重载决议。
offset() == 0,则 head<T>() == data<T>()| T | 要转换到的类型 |
定义在文件 column_view.hpp 的 595 行。
|
inlinenoexcept |
返回底层数据转换为指定类型后的最后一个元素之后的位置。
如果 is_rep_layout_compatible<T> 为 false,则此函数不参与重载决议。
| T | 期望的类型 |
定义在文件 column_view.hpp 的 627 行。
|
overrideprotectedvirtualnoexcept |
返回指向基础设备内存分配的指针。
此函数的主要目的是允许派生类覆盖内存访问的基本属性,而无需更改底层指针的所有不同访问器。
|
inlinenoexcept |
返回指向基础设备内存分配的指针,并转换为指定类型。
当且仅当 is_rep_layout_compatible<T>() 或 std::is_same_v<T,void> 为 true 时,此函数才会参与重载决议。
offset() == 0,则 head<T>() == data<T>()head<T>() 分配,而应通过 data<T>() 访问元素。| 要转换到的 | 类型 |
定义在文件 column_view.hpp 的 577 行。
|
inlinenoexcept |
返回指向底层位掩码分配的原始指针。
offset()。null_count() == 0,这可能返回 nullptr。定义在文件 column_view.hpp 的 641 行。
|
inlinenoexcept |
| cudf::mutable_column_view::operator column_view | ( | ) | const |
将可变视图转换为不可变视图。
|
default |
移动赋值运算符。
|
default |
拷贝赋值运算符。
| void cudf::mutable_column_view::set_null_count | ( | size_type | 新空值数量 | ) |
|
友元 |
在具有相同大小和兼容底层表示的类型之间进行零拷贝转换。
这类似于 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。 |
| 输入 | 要从中转换的 mutable_column_view |
| 类型 | 要转换到的 data_type |
mutable_column_view,包装与 input 相同的数据,但转换为 type