公共成员函数 | 受保护成员函数 | 友元 | 所有成员列表
cudf::column_view 类参考
»

cudf::column_view 是一个非拥有、不可变的设备数据视图,作为元素列,其中一些元素可能为空,由位掩码指示。 更多...

#include <column_view.hpp>

cudf::column_view 的继承图
cudf::detail::column_view_base cudf::dictionary_column_view cudf::lists_column_view cudf::strings_column_view cudf::structs_column_view cudf::tdigest::tdigest_column_view

公共成员函数

 column_view (column_view const &)=default
 复制构造函数。
 
 column_view (column_view &&)=default
 移动构造函数。
 
column_viewoperator= (column_view const &)=default
 复制赋值运算符。 更多...
 
column_viewoperator= (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。 更多...
 
- 继承自 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_baseoperator= (column_view_base const &)=default
 复制赋值运算符。 更多...
 
column_view_baseoperator= (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)
 在大小相同且底层表示兼容的类型之间进行零拷贝转换。 更多...
 

附加继承成员

- 继承自 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 {}
 

详细描述

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 行。

构造函数与析构函数文档

◆ column_view() [1/2]

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 是可选的。

如果 typeEMPTY,则指定的 null_count 将被忽略,且 null_count() 将始终返回与 size() 相同的值

异常
cudf::logic_error如果 size < 0
cudf::logic_error如果 size > 0data == nullptr
cudf::logic_error如果 type.id() == EMPTYdata != nullptrnull_mask != nullptr
cudf::logic_error如果 null_count > 0null_mask == nullptr
cudf::logic_error如果 offset < 0
参数
type元素类型
size元素数量
data指向包含列元素的设备内存的指针
null_mask指向包含空值指示位掩码的设备内存的指针
null_count空元素的数量。
offset可选,第一个元素的索引
children可选,根据元素类型,子列可能包含附加数据

◆ column_view() [2/2]

template<typename T , CUDF_ENABLE_IF(cudf::is_numeric< T >() or cudf::is_chrono< T >()) >
cudf::column_view::column_view ( device_span< T const >  data)
inline

从 device_span<T> 构造一个 column view。

仅支持数值类型和时间类型。

模板参数
Tdevice span 类型。必须是 const 且与 column view 的类型匹配。
参数
data包含 column view 数据的类型化 device span。

定义于文件 column_view.hpp 的第 434 行。

成员函数文档

◆ child()

column_view cudf::column_view::child ( size_type  child_index) const
inlinenoexcept

返回指定的子列。

参数
child_index所需子列的索引
返回
请求的子 column_view

定义于文件 column_view.hpp 的第 399 行。

◆ child_begin()

auto cudf::column_view::child_begin ( ) const
inlinenoexcept

返回指向子 column-view 有序序列开头的迭代器。

返回
指向引用第一个子列的 column_view 的迭代器

定义于文件 column_view.hpp 的第 416 行。

◆ child_end()

auto cudf::column_view::child_end ( ) const
inlinenoexcept

返回指向子 column-view 有序序列末尾的迭代器。

返回
指向子列末尾之后一个位置的 column_view 的迭代器

定义于文件 column_view.hpp 的第 423 行。

◆ get_data()

void const* cudf::column_view::get_data ( ) const
overrideprotectedvirtualnoexcept

返回指向基设备内存分配的指针。

此函数的主要目的是允许派生类重写内存访问的基本属性,而无需更改底层指针的所有不同访问器。

返回
指向底层数据的类型化指针

重写自 cudf::detail::column_view_base

◆ num_children()

size_type cudf::column_view::num_children ( ) const
inlinenoexcept

返回子列的数量。

返回
子列的数量

定义于文件 column_view.hpp 的第 409 行。

◆ operator device_span< T const >()

template<typename T , CUDF_ENABLE_IF(cudf::is_numeric< T >() or cudf::is_chrono< T >()) >
cudf::column_view::operator device_span< T const > ( ) const
inline

将 column view 转换为 device span。

仅支持数值类型和时间数据类型。column view 不能包含空值。

模板参数
Tdevice span 类型。必须是 const 且与 column view 的类型匹配。
异常
cudf::logic_error如果 column view 类型与 span 类型不匹配。
cudf::logic_error如果 column view 可包含空值。
返回
column view 数据的类型化 device span。

定义于文件 column_view.hpp 的第 456 行。

◆ operator=() [1/2]

column_view& cudf::column_view::operator= ( column_view &&  )
default

移动赋值运算符。

返回
对此对象的引用

◆ operator=() [2/2]

column_view& cudf::column_view::operator= ( column_view const &  )
default

复制赋值运算符。

返回
对此对象的引用

友元和相关函数文档

◆ bit_cast

column_view bit_cast ( column_view const &  input,
data_type  type 
)
friend

在大小相同且底层表示兼容的类型之间进行零拷贝转换。

这类似于 reinterpret_castbit_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

本类的文档生成自以下文件