列类#
- group column_classes
-
class column#
- #include <column.hpp>
一个包含可空设备数据的容器,作为一列元素。
公共函数
-
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的内容来构造一个新的列对象。使用指定的
stream和 device_memory_resource 进行所有分配和复制。- Parameters:
other – 要复制的
columnstream – 用于设备内存操作的CUDA流。
mr – 用于所有设备内存分配的设备内存资源
-
column(column &&other) noexcept#
将内容从
other移动到新列。移动后,
other.size() == 0并且other.type() = {EMPTY}- Parameters:
other – 其内容将被移动到新列中的列
-
template<typename T>
inline column(rmm::device_uvector<T> &&other, rmm::device_buffer &&null_mask, size_type null_count)# 通过获取device_uvector内容的所有权来构造一个新列。
- Parameters:
other – 其内容将被移动到新列的 device_uvector。
null_mask – 列的空值指示位掩码。如果
null_count为 0,则可能为空。null_count – 空元素的数量。
-
template<typename B1, typename B2 = rmm::device_buffer>
inline column(data_type dtype, size_type size, B1 &&data, B2 &&null_mask, size_type null_count, std::vector<std::unique_ptr<column>> &&children = {})# 从现有的设备内存中构造一个新列。
注意
此构造函数主要用于列工厂函数中。
- Throws:
cudf::logic_error – 如果
size < 0- Parameters:
dtype – 元素类型
size – 列中的元素数量
data – 列的数据
null_mask – 列的空值指示位掩码。如果
null_count为 0,则可能为空。null_count – 可选,空元素的数量。
children – 可选项,子列的向量
-
explicit 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的内容来构造一个新列。这解释了
column_view的偏移量。- Parameters:
view – 要复制的视图
stream – 用于设备内存操作的CUDA流。
mr – 用于所有设备内存分配的设备内存资源
-
void set_null_mask(rmm::device_buffer &&new_null_mask, size_type new_null_count)#
将列的空值指示器位掩码设置为
new_null_mask。- Throws:
cudf::logic_error – 如果 new_null_count 大于 0 并且
new_null_mask的大小与此列的大小不匹配。- Parameters:
new_null_mask – 新的空值指示位掩码(右值重载和移动)用于设置列的空值指示掩码。如果
new_null_count为 0,则可能为空。new_null_count – 空元素的数量。
-
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。- Throws:
cudf::logic_error – 如果 new_null_count 大于 0 并且
new_null_mask的大小与此列的大小不匹配。- Parameters:
new_null_mask – 新的空值指示位掩码(左值重载和复制)用于设置列的空值指示掩码。如果
new_null_count为 0,则可能为空。new_null_count – 空元素的数量
stream – 执行分配和复制的流。如果未指定,则使用默认的CUDF流。
-
void set_null_count(size_type new_null_count)#
更新空元素的数量。
- Throws:
cudf::logic_error – 如果
new_null_count > 0 and nullable() == false- Parameters:
new_null_count – 新的空值计数。
-
inline bool nullable() const noexcept#
指示该列是否可能包含空值,即它有一个分配的空值掩码。
这可能返回
false当且仅当null_count() == 0。即使
null_count() == 0,也可能返回true。此函数仅指示列是否分配了空值掩码。- Returns:
true 该列可以包含空值
- Returns:
false 该列不能包含空值
-
inline bool has_nulls() const noexcept#
指示该列是否包含空元素。
- Returns:
true 一个或多个元素为空
- Returns:
false 零元素为空
-
inline column &child(size_type child_index) noexcept#
返回对指定子项的引用。
- Parameters:
child_index – 所需子项的索引
- Returns:
引用所需的子项
-
inline column const &child(size_type child_index) const noexcept#
返回指定子元素的常量引用。
- Parameters:
child_index – 所需子项的索引
- Returns:
对所需子项的常量引用
-
contents release() noexcept#
释放列内容的所有权。
调用者有责任在调用
release()之前查询size(), null_count(), type()。在调用
release()后,该列将为空,即:size() == 0null_count() == 0num_children() == 0
- Returns:
一个包含数据、空掩码和列子元素的
contents结构体。
-
column_view view() const#
创建列数据及其子项的不可变、非拥有视图。
- Returns:
不可变的、非拥有的视图
-
inline operator column_view() const#
隐式转换为
column_view的运算符。这允许将
column对象直接传递给需要column_view的函数。转换是自动的。- Returns:
不可变的、非拥有的
column_view
-
mutable_column_view mutable_view()#
创建一个可变的、非拥有的列数据视图,包括空值掩码和子列。
- Returns:
可变的、非拥有的视图
-
inline operator mutable_column_view()#
隐式转换为
mutable_column_view的运算符。这允许将
column对象传递给接受mutable_column_view的函数。转换是自动的。如果修改了空值掩码,调用者应适当地更新空值计数。
- Returns:
可变的、非拥有的
mutable_column_view
-
struct contents#
- #include <column.hpp>
列的包装器。
由
column::release()返回。公共成员
-
std::unique_ptr<rmm::device_buffer> data#
数据设备内存缓冲区
-
std::unique_ptr<rmm::device_buffer> null_mask#
空掩码设备内存缓冲区
-
std::unique_ptr<rmm::device_buffer> data#
-
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())#
-
struct nullate#
指示在编译时或运行时存在空值。
如果在编译时使用,此指示器可以告诉优化器包含或排除任何空值检查子句。
-
struct DYNAMIC#
nullate::DYNAMIC将空值的确定推迟到运行时而不是编译时。调用代码负责在运行时使用构造函数参数指定是否存在空值。公共函数
-
inline explicit constexpr DYNAMIC(bool b) noexcept#
创建一个运行时无效对象。
另请参阅
- Parameters:
b – 如果在应用此对象的操作中预期有空值,则为True。
-
inline constexpr operator bool() const noexcept#
如果在此对象应用的操作中预期有空值,则返回 true。
- Returns:
true如果在应用此对象的操作中预期有空值,则为 true,否则为 false
公共成员
-
bool value#
如果预期为空,则为True。
-
inline explicit constexpr DYNAMIC(bool b) noexcept#
-
struct NO : public std::bool_constant<false>#
-
struct YES : public std::bool_constant<true>#
-
struct DYNAMIC#
-
class column_device_view : public cudf::detail::column_device_view_base#
设备数据的不可变、非拥有视图,作为一列元素,可在CUDA设备代码中轻松复制和使用。
由 cudf::detail::lists_column_device_view, cudf::detail::structs_column_device_view 子类化
公共类型
-
template<typename T>
using const_iterator = thrust::transform_iterator<detail::value_accessor<T>, count_it># 用于导航此列的迭代器。
-
template<typename T, typename Nullate>
using const_optional_iterator = thrust::transform_iterator<detail::optional_accessor<T, Nullate>, count_it># 用于导航此列的可选迭代器。
公共函数
-
column_device_view(column_device_view const&) = default#
复制构造函数。
-
column_device_view(column_device_view&&) = default#
移动构造函数。
-
column_device_view &operator=(column_device_view const&) = default#
复制赋值运算符。
- Returns:
引用此对象
-
column_device_view &operator=(column_device_view&&) = default#
移动赋值运算符。
- Returns:
对此对象的引用(在转移所有权后)
-
column_device_view(column_view column, void *h_ptr, void *d_ptr)#
使用指定的主机内存指针(h_ptr)来存储子对象,并使用设备内存指针(d_ptr)作为任何子对象指针的基础,创建此类的实例。
- Parameters:
column – 从中创建此实例的列视图。
h_ptr – 用于放置任何子数据的主机内存指针。
d_ptr – 设备内存指针,用于基于此指针创建任何子指针。
-
inline column_device_view slice(size_type offset, size_type size) const noexcept#
获取一个新的column_device_view,它是此列的一个切片。
示例:
// column = column_device_view([1, 2, 3, 4, 5, 6, 7]) auto c = column.slice(1, 3); // c = column_device_view([2, 3, 4]) auto c1 = column.slice(2, 3); // c1 = column_device_view([3, 4, 5])
- Parameters:
offset – 切片中第一个元素的索引
size – 切片中的元素数量
- Returns:
此列的一部分
-
template<typename T>
inline T element(size_type element_index) const noexcept# 返回指定索引处元素的引用。
如果指定索引处的元素为NULL,即
is_null(element_index) == true,则任何尝试使用结果的行为都将导致未定义的行为。此函数考虑了偏移量。
如果
is_rep_layout_compatible为false,则此函数不参与重载解析。对于is_rep_layout_compatible为false的类型T,可能存在此函数的特化。- Template Parameters:
T – 元素类型
- Parameters:
element_index – 所需元素的位置
- Returns:
引用指定索引处的元素
-
template<typename T>
inline const_iterator<T> begin() const# 返回指向列的第一个元素的迭代器。
此迭代器仅支持
has_nulls() == false的列。在has_nulls() == true的列上使用它时,访问空元素将导致未定义的行为。如果
column_device_view::has_element_accessor为 false,则此函数不参与重载解析。() 对于包含空元素的列,使用
make_null_replacement_iterator。- Template Parameters:
T – 列中元素的类型
- Returns:
指向列的第一个元素的迭代器
-
template<typename T>
inline const_iterator<T> end() const# 返回一个指向列最后一个元素之后的元素的迭代器。
此迭代器仅支持
has_nulls() == false的列。在has_nulls() == true的列上使用它时,访问空元素将导致未定义的行为。如果
column_device_view::has_element_accessor为假,则此函数不参与重载解析。() 对于包含空元素的列,使用
make_null_replacement_iterator。- Returns:
指向列中最后一个元素之后的元素的迭代器
-
template<typename T, typename Nullate>
inline auto optional_begin(Nullate has_nulls) const# 返回一个可选的迭代器到列的第一个元素。
解引用返回的迭代器会返回一个
cuda::std::optional。此迭代器的元素在上下文中转换为布尔值。如果对象包含值,则转换返回 true;如果不包含值,则返回 false。
使用
nullate::DYNAMIC调用此方法会将空值的假设推迟到运行时,由调用者指示列是否包含空值。当算法将在多个迭代器上执行且不需要在编译时处理所有迭代器类型的组合时,nullate::DYNAMIC非常有用。template<typename T> void some_function(cudf::column_view<T> const& col_view){ auto d_col = cudf::column_device_view::create(col_view); // Create a `DYNAMIC` optional iterator auto optional_iterator = d_col->optional_begin<T>(cudf::nullate::DYNAMIC{col_view.has_nulls()}); }
使用
nullate::YES调用此方法意味着该列支持空值,并且返回的可选值可能不包含值。使用
nullate::NO调用此方法意味着该列没有空值,并且可选返回值将始终包含一个值。template<typename T, bool has_nulls> void some_function(cudf::column_view<T> const& col_view){ auto d_col = cudf::column_device_view::create(col_view); if constexpr(has_nulls) { auto optional_iterator = d_col->optional_begin<T>(cudf::nullate::YES{}); //use optional_iterator } else { auto optional_iterator = d_col->optional_begin<T>(cudf::nullate::NO{}); //use optional_iterator } }
如果
column_device_view::has_element_accessor为假,则此函数不参与重载解析。() - Throws:
cudf::logic_error – 如果列不可为空且
has_nulls评估为真。cudf::logic_error – 如果列数据类型和元素类型不匹配。
- Template Parameters:
T – 列中元素的类型
Nullate – 一种 cudf::nullate 类型,描述如何检查空值
- Parameters:
has_nulls – 一个 cudf::nullate 类型,描述如何检查空值
- Returns:
一个可选的迭代器,指向列的第一个元素
-
template<typename T, bool has_nulls>
inline const_pair_iterator<T, has_nulls> pair_begin() const# 返回指向列的第一个元素的一对迭代器。
解引用返回的迭代器会返回一个
thrust::pair。bool> 如果位置
i的元素是有效的(或has_nulls == false),那么对于p = *(iter + i),p.first包含位置i的元素值,且p.second == true。否则,如果
i位置的元素为空,则p.first的值为未定义,且p.second == false。如果
column_device_view::has_element_accessor为假,则此函数不参与重载解析。() - Throws:
cudf::logic_error – 如果 tparam
has_nulls == true并且nullable() == falsecudf::logic_error – 如果列数据类型和元素类型不匹配。
- Returns:
指向列的第一个元素的一对迭代器
-
template<typename T, bool has_nulls>
inline const_pair_rep_iterator<T, has_nulls> pair_rep_begin() const# 返回指向列的第一个元素的一对迭代器。
解引用返回的迭代器会返回一个
thrust::pair,其中bool> rep_type是device_storage_type,用于在设备上存储值的类型。如果位置
i的元素是有效的(或has_nulls == false),那么对于p = *(iter + i),p.first包含位置i的元素值,且p.second == true。否则,如果
i位置的元素为空,则p.first的值为未定义,且p.second == false。如果
column_device_view::has_element_accessor为假,则此函数不参与重载解析。() - Throws:
cudf::logic_error – 如果 tparam
has_nulls == true并且nullable() == falsecudf::logic_error – 如果列数据类型和元素类型不匹配。
- Returns:
指向列的第一个元素的一对迭代器
-
template<typename T, typename Nullate>
inline auto optional_end(Nullate has_nulls) const# 返回一个可选的迭代器,指向列中最后一个元素之后的元素。
返回的迭代器表示一个
cuda::std::optional元素。如果
column_device_view::has_element_accessor为假,则此函数不参与重载解析。() - Throws:
cudf::logic_error – 如果列不可为空且
has_nulls为真cudf::logic_error – 如果列数据类型和元素类型不匹配。
- Template Parameters:
T – 列中元素的类型
Nullate – 一种 cudf::nullate 类型,描述如何检查空值
- Parameters:
has_nulls – 一个 cudf::nullate 类型,描述如何检查空值
- Returns:
一个可选的迭代器,指向列中最后一个元素之后的元素
-
template<typename T, bool has_nulls>
inline const_pair_iterator<T, has_nulls> pair_end() const# 返回一个指向列中最后一个元素之后的元素的迭代器对。
如果
column_device_view::has_element_accessor为假,则此函数不参与重载解析。() - Throws:
cudf::logic_error – 如果 tparam
has_nulls == true并且nullable() == falsecudf::logic_error – 如果列数据类型和元素类型不匹配。
- Returns:
指向列中最后一个元素之后的元素的一对迭代器
-
template<typename T, bool has_nulls>
inline const_pair_rep_iterator<T, has_nulls> pair_rep_end() const# 返回一个指向列中最后一个元素之后的元素的迭代器对。
如果
column_device_view::has_element_accessor为假,则此函数不参与重载解析。() - Throws:
cudf::logic_error – 如果 tparam
has_nulls == true并且nullable() == falsecudf::logic_error – 如果列数据类型和元素类型不匹配。
- Returns:
指向列中最后一个元素之后的元素的一对迭代器
-
void destroy()#
销毁
column_device_view对象。注意
不释放列数据,仅释放为保存子视图而分配的设备内存。
-
inline column_device_view child(size_type child_index) const noexcept#
返回指定的子项。
- Parameters:
child_index – 所需子项的索引
- Returns:
column_view 请求的子
column_view
-
inline device_span<column_device_view const> children() const noexcept#
返回包含此列子元素的span。
- Returns:
包含此列子元素的 span
公共静态函数
-
template<typename T>
static inline constexpr bool has_element_accessor()# 对于给定的
T,指示column_device_view::element是否具有有效的重载。() - Template Parameters:
T – 元素类型
- Returns:
true如果column_device_view::element有一个有效的重载,() false否则
-
static std::unique_ptr<column_device_view, std::function<void(column_device_view*)>> create(column_view source_view, rmm::cuda_stream_view stream = cudf::get_default_stream())#
用于构建可在设备内存中使用的列视图的工厂。
分配并复制
source_view的子视图到设备内存中,以便在设备代码中访问它们。如果
source_view.num_children() == 0,则不会分配设备内存。返回一个
std::unique_ptr<column_device_view>,带有自定义删除器以释放为子项分配的设备内存。应将
column_device_view通过值传递给 GPU 内核。- Parameters:
source_view – 使
column_view在设备代码中可用stream – 用于子列设备内存操作的CUDA流。
- Returns:
一个指向
column_device_view的unique_ptr,使得来自source_view的数据在设备内存中可用。
-
static std::size_t extent(column_view const &source_view)#
返回保存指定列及其子列的设备视图所需内存的大小(以字节为单位)。
- Parameters:
source_view – 用于此计算的
column_view。- Returns:
存储在GPU内存中的设备视图的字节数
-
template<typename T>
-
class mutable_column_device_view : public cudf::detail::column_device_view_base#
一个可变的、非拥有的设备数据视图,作为一列元素,这些元素在CUDA设备代码中可轻松复制和使用。
公共类型
公共函数
-
mutable_column_device_view(mutable_column_device_view const&) = default#
复制构造函数。
-
mutable_column_device_view(mutable_column_device_view&&) = default#
移动构造函数。
-
mutable_column_device_view &operator=(mutable_column_device_view const&) = default#
复制赋值运算符。
- Returns:
引用此对象
-
mutable_column_device_view &operator=(mutable_column_device_view&&) = default#
移动赋值运算符。
- Returns:
对此对象的引用(在转移所有权后)
-
mutable_column_device_view(mutable_column_view column, void *h_ptr, void *d_ptr)#
使用指定的主机内存指针(h_ptr)来存储子对象,并使用设备内存指针(d_ptr)作为任何子对象指针的基础,创建此类的实例。
- Parameters:
column – 从中创建此实例的列视图。
h_ptr – 用于放置任何子数据的主机内存指针。
d_ptr – 设备内存指针,用于基于此指针创建任何子指针。
-
template<typename T = void>
inline T *head() const noexcept# 返回指向基础设备内存分配的指针,并将其转换为指定类型。
此函数仅在
is_rep_layout_compatible或() std::is_same_v为真时参与重载解析。注意
如果
offset() == 0,那么head() == data() 注意
很少需要访问列的
head分配,而应该通过() data来访问元素。() - Template Parameters:
类型 – 要转换的类型
- Returns:
指向基础数据的类型化指针
-
template<typename T>
inline T *data() const noexcept# 返回转换为指定类型的基础数据,加上偏移量。
如果
is_rep_layout_compatible为false,则此函数不参与重载解析。注意
如果
offset() == 0,那么head() == data() - Template Parameters:
T – 要转换的类型
- Returns:
指向基础数据的类型化指针,包括偏移量
-
template<typename T>
inline T &element(size_type element_index) const noexcept# 返回指定索引处元素的引用。
此函数考虑了偏移量。
如果
is_rep_layout_compatible为false,则此函数不参与重载解析。对于is_rep_layout_compatible为false的类型T,可能存在此函数的特化。- Template Parameters:
T – 元素类型
- Parameters:
element_index – 所需元素的位置
- Returns:
引用指定索引处的元素
-
inline bitmask_type *null_mask() const noexcept#
返回指向底层位掩码分配的原始指针。
注意
此函数不考虑
offset()。注意
如果
null_count() == 0,这可能返回nullptr。- Returns:
指向底层位掩码分配的原始指针
-
template<typename T>
inline iterator<T> begin()# 返回在基础数据转换为指定类型后的第一个元素(考虑偏移量)。
如果
mutable_column_device_view::has_element_accessor为 false,则此函数不参与重载解析。() - Template Parameters:
T – 所需的类型
- Returns:
指向转换后的第一个元素的指针
-
template<typename T>
inline iterator<T> end()# 在基础数据转换为指定类型后,返回最后一个元素之后的一个元素。
如果
mutable_column_device_view::has_element_accessor为 false,则此函数不参与重载解析。() - Template Parameters:
T – 所需的类型
- Returns:
指向转换后最后一个元素之后的一个元素
-
inline mutable_column_device_view child(size_type child_index) const noexcept#
返回指定的子项。
- Parameters:
child_index – 所需子项的索引
- Returns:
请求的子
column_view
-
inline void set_mask_word(size_type word_index, bitmask_type new_word) const noexcept#
使用新单词更新
null_mask()中指定的位掩码单词。注意
如果
nullable() == false,调用此函数是未定义行为。- Parameters:
word_index – 要更新的单词的索引
new_word – 新的位掩码字
-
void destroy()#
销毁
mutable_column_device_view对象。注意
不释放列数据,仅释放为保存子视图而分配的设备内存。
公共静态函数
-
static std::unique_ptr<mutable_column_device_view, std::function<void(mutable_column_device_view*)>> create(mutable_column_view source_view, rmm::cuda_stream_view stream = cudf::get_default_stream())#
用于构建可在设备内存中使用的列视图的工厂。
分配并复制
source_view的子视图到设备内存中,以便在设备代码中访问它们。如果
source_view.num_children() == 0,则不会分配设备内存。返回一个
std::unique_ptr<mutable_column_device_view>,带有自定义删除器以释放为子项分配的设备内存。应将
mutable_column_device_view通过值传递给 GPU 内核。- Parameters:
source_view – 使
column_view在设备代码中可用stream – 用于子列设备内存操作的CUDA流。
- Returns:
一个指向
mutable_column_device_view的unique_ptr,使得来自source_view的数据在设备内存中可用。
-
template<typename T>
static inline constexpr bool has_element_accessor()# 对于给定的
T,指示mutable_column_device_view::element是否具有有效的重载。() - Returns:
true如果mutable_column_device_view::element有一个有效的重载,() false
-
static std::size_t extent(mutable_column_view source_view)#
返回保存指定列及其子列的设备视图所需内存的大小(以字节为单位)。
- Parameters:
source_view – 用于此计算的
column_view。- Returns:
保存指定列及其子列的设备视图所需的内存大小(以字节为单位)
-
mutable_column_device_view(mutable_column_device_view const&) = default#
-
class column_view : public cudf::detail::column_view_base#
- #include <column_view.hpp>
设备数据的非拥有、不可变视图,作为一列元素,其中一些元素可能为空,由位掩码指示。
一个
column_view可以从cudf::column隐式构造,也可以从指向预先存在的设备内存的指针显式构造。除非另有说明,
column_view的数据和位掩码的内存布局应遵循 Arrow 物理内存布局规范:https://arrow.apache.org/docs/memory_layout.html因为
column_view是非拥有的,所以当column_view对象被创建或销毁时,不会分配或释放设备内存。要启用零拷贝切片,
column_view有一个offset,它表示列中第一个元素相对于基础设备内存分配的索引。默认情况下,offset()为零。由 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_view &operator=(column_view const&) = default#
复制赋值运算符。
- Returns:
引用此对象
-
column_view &operator=(column_view&&) = default#
移动赋值运算符。
- Returns:
引用此对象
-
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()相同的值- Throws:
cudf::logic_error – 如果
size < 0cudf::logic_error – 如果
size > 0但data == nullptrcudf::logic_error – 如果
type.id() == EMPTY但data != nullptr或null_mask != nullptrcudf::logic_error – 如果
null_count > 0,但null_mask == nullptrcudf::logic_error – 如果
offset < 0
- Parameters:
type – 元素类型
size – 元素的数量
data – 指向包含列元素的设备内存的指针
null_mask – 指向设备内存的指针,包含空指示器位掩码
null_count – 空元素的数量。
offset – 可选的,第一个元素的索引
children – 可选的,根据元素类型,子列可能包含额外的数据
-
inline column_view child(size_type child_index) const noexcept#
返回指定的子项。
- Parameters:
child_index – 所需子项的索引
- Returns:
请求的子
column_view
-
inline auto child_begin() const noexcept#
返回指向子列视图有序序列开头的迭代器。
- Returns:
一个迭代器,指向引用第一个子列的
column_view
-
inline auto child_end() const noexcept#
返回指向子列视图有序序列末尾的迭代器。
- Returns:
一个迭代器,指向
column_view的子列末尾之后的位置
-
template<typename T>
inline column_view(device_span<T const> data)# 从 device_span
构造一个列视图。 仅支持数字和日期类型。
- Template Parameters:
T – 设备跨度类型。必须是常量并且与列视图的类型匹配。
- Parameters:
data – 一个包含列视图数据的类型化设备跨度。
-
template<typename T>
inline operator device_span<T const>() const# 将列视图转换为设备跨度。
仅支持数值和日期时间数据类型。列视图不能为空。
- Template Parameters:
T – 设备跨度类型。必须是常量并且与列视图的类型匹配。
- Throws:
cudf::logic_error – 如果列视图类型与跨度类型不匹配。
cudf::logic_error – 如果列视图可为空。
- Returns:
列视图数据的类型化设备跨度。
-
column_view(column_view const&) = default#
-
class mutable_column_view : public cudf::detail::column_view_base#
- #include <column_view.hpp>
设备数据的非拥有、可变视图,作为一列元素,其中一些元素可能为空,由位掩码指示。
一个
mutable_column_view可以从cudf::column隐式构造,也可以从指向预先存在的设备内存的指针显式构造。除非另有说明,
mutable_column_view的数据和位掩码的内存布局预计将遵循Arrow物理内存布局规范:https://arrow.apache.org/docs/memory_layout.html因为
mutable_column_view是非拥有的,所以在创建或销毁mutable_column_view对象时,不会分配或释放设备内存。要启用零拷贝切片,
mutable_column_view有一个offset,它表示列中第一个元素相对于基础设备内存分配的索引。默认情况下,offset()为零。公共函数
-
mutable_column_view(mutable_column_view const&) = default#
复制构造函数。
-
mutable_column_view(mutable_column_view&&) = default#
移动构造函数。
-
mutable_column_view &operator=(mutable_column_view const&) = default#
复制赋值运算符。
- Returns:
引用此对象
-
mutable_column_view &operator=(mutable_column_view&&) = default#
移动赋值运算符。
- Returns:
对此对象的引用(在转移所有权后)
-
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。如果
type是EMPTY,指定的null_count将被忽略,并且null_count()将始终返回与size()相同的值- Throws:
cudf::logic_error – 如果
size < 0cudf::logic_error – 如果
size > 0但data == nullptrcudf::logic_error – 如果
type.id() == EMPTY但data != nullptr或null_mask != nullptrcudf::logic_error – 如果
null_count > 0,但null_mask == nullptrcudf::logic_error – 如果
offset < 0
- Parameters:
type – 元素类型
size – 元素的数量
data – 指向包含列元素的设备内存的指针
null_mask – 指向设备内存的指针,包含空指示器位掩码
null_count – 空元素的数量。
offset – 可选的,第一个元素的索引
children – 可选的,根据元素类型,子列可能包含额外的数据
-
template<typename T = void>
inline T *head() const noexcept# 返回指向基础设备内存分配的指针,并将其转换为指定类型。
此函数仅在
is_rep_layout_compatible或() std::is_same_v为真时参与重载解析。注意
如果
offset() == 0,那么head() == data() 注意
很少需要访问列的
head分配,而应该通过() data来访问元素。() - Template Parameters:
类型 – 要转换的类型
- Returns:
指向基础数据的类型化指针
-
template<typename T>
inline T *data() const noexcept# 返回转换为指定类型的基础数据,加上偏移量。
如果
is_rep_layout_compatible为false,则此函数不参与重载解析。注意
如果
offset() == 0,那么head() == data() - Template Parameters:
T – 要转换的类型
- Returns:
指向基础数据的类型化指针,包括偏移量
-
template<typename T>
inline T *begin() const noexcept# 返回在基础数据转换为指定类型后的第一个元素(考虑偏移量)。
如果
is_rep_layout_compatible为false,则此函数不参与重载解析。- Template Parameters:
T – 所需的类型
- Returns:
指向转换后的第一个元素的指针
-
template<typename T>
inline T *end() const noexcept# 在基础数据转换为指定类型后,返回最后一个元素之后的一个元素。
如果
is_rep_layout_compatible为false,则此函数不参与重载解析。- Template Parameters:
T – 所需的类型
- Returns:
指向转换后最后一个元素之后的一个元素
-
inline bitmask_type *null_mask() const noexcept#
返回指向底层位掩码分配的原始指针。
注意
此函数不考虑
offset()。注意
如果
null_count() == 0,这可能返回nullptr。- Returns:
指向底层位掩码分配的原始指针
-
void set_null_count(size_type new_null_count)#
设置空值计数。
- Throws:
cudf::logic_error – 如果
new_null_count > 0并且nullable() == false- Parameters:
new_null_count – 新的空值计数
-
inline mutable_column_view child(size_type child_index) const noexcept#
返回对指定子项的引用。
- Parameters:
child_index – 所需子项的索引
- Returns:
请求的子项
mutable_column_view
-
inline auto child_begin() const noexcept#
返回指向子列视图有序序列开头的迭代器。
- Returns:
一个迭代器,指向引用第一个子列的
mutable_column_view
-
inline auto child_end() const noexcept#
返回指向子列视图有序序列末尾的迭代器。
- Returns:
一个迭代器,指向
mutable_column_view中最后一个子列之后的元素
-
operator column_view() const#
将可变视图转换为不可变视图。
- Returns:
可变视图元素的不可变视图
-
mutable_column_view(mutable_column_view const&) = default#
-
class column#