| 公共类型 | 公共成员函数 | 静态公共成员函数 | 保护成员函数 | 保护属性 | 所有成员列表
cudf::column_device_view 类参考
»

一个不可变的、非拥有的设备数据视图,作为元素列,可平凡地复制并在 CUDA 设备代码中使用。更多...

cudf::column_device_view 继承图
cudf::detail::column_device_view_base cudf::detail::lists_column_device_view cudf::detail::structs_column_device_view

公共类型

using count_it = thrust::counting_iterator< size_type >
 计数迭代器。
 
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 >
 用于遍历此列的可选迭代器。
 
template<typename T , bool has_nulls>
using const_pair_iterator = thrust::transform_iterator< detail::pair_accessor< T, has_nulls >, count_it >
 用于遍历此列的对迭代器。
 
template<typename T , bool has_nulls>
using const_pair_rep_iterator = thrust::transform_iterator< detail::pair_rep_accessor< T, has_nulls >, count_it >
 用于遍历此列的 Pair rep 迭代器。更多...
 

公共成员函数

 column_device_view (column_device_view const &)=default
 复制构造函数。
 
 column_device_view (column_device_view &&)=default
 移动构造函数。
 
column_device_viewoperator= (column_device_view const &)=default
 复制赋值运算符。更多...
 
column_device_viewoperator= (column_device_view &&)=default
 移动赋值运算符。更多...
 
 column_device_view (column_view column, void *h_ptr, void *d_ptr)
 使用指定的宿主内存指针 (h_ptr) 来存储子对象,并使用设备内存指针 (d_ptr) 作为任何子对象指针的基地址,创建此类的一个实例。更多...
 
CUDF_HOST_DEVICE column_device_view slice (size_type offset, size_type size) const noexcept
 获取一个新的 column_device_view,它是此列的一个切片。更多...
 
template<typename T , CUDF_ENABLE_IF(is_rep_layout_compatible< T >()) >
element (size_type element_index) const noexcept
 返回指定索引处元素的引用。更多...
 
template<typename T , CUDF_ENABLE_IF(std::is_same_v< T, string_view >) >
element (size_type element_index) const noexcept
 返回指定索引处字符串元素的 string_view更多...
 
template<typename T , CUDF_ENABLE_IF(std::is_same_v< T, dictionary32 >) >
element (size_type element_index) const noexcept
 对于字典列,返回指定索引处的 dictionary32 元素。更多...
 
template<typename T , CUDF_ENABLE_IF(cudf::is_fixed_point< T >()) >
element (size_type element_index) const noexcept
 对于 fixed_point 列,返回指定索引处的 numeric::fixed_point 元素。更多...
 
template<typename T , CUDF_ENABLE_IF(column_device_view::has_element_accessor< T >()) >
const_iterator< T > begin () const
 返回指向列第一个元素的迭代器。更多...
 
template<typename T , CUDF_ENABLE_IF(column_device_view::has_element_accessor< T >()) >
const_iterator< T > end () const
 返回指向列最后一个元素后一个位置的迭代器。更多...
 
template<typename T , typename Nullate , CUDF_ENABLE_IF(column_device_view::has_element_accessor< T >()) >
auto optional_begin (Nullate has_nulls) const
 返回指向列第一个元素的可选迭代器。更多...
 
template<typename T , bool has_nulls, CUDF_ENABLE_IF(column_device_view::has_element_accessor< T >()) >
const_pair_iterator< T, has_nullspair_begin () const
 返回指向列第一个元素的对迭代器。更多...
 
template<typename T , bool has_nulls, CUDF_ENABLE_IF(column_device_view::has_element_accessor< T >()) >
const_pair_rep_iterator< T, has_nullspair_rep_begin () const
 返回指向列第一个元素的 Pair rep 迭代器。更多...
 
template<typename T , typename Nullate , CUDF_ENABLE_IF(column_device_view::has_element_accessor< T >()) >
auto optional_end (Nullate has_nulls) const
 返回指向列最后一个元素后一个位置的可选迭代器。更多...
 
template<typename T , bool has_nulls, CUDF_ENABLE_IF(column_device_view::has_element_accessor< T >()) >
const_pair_iterator< T, has_nullspair_end () const
 返回指向列最后一个元素后一个位置的对迭代器。更多...
 
template<typename T , bool has_nulls, CUDF_ENABLE_IF(column_device_view::has_element_accessor< T >()) >
const_pair_rep_iterator< T, has_nullspair_rep_end () const
 返回指向列最后一个元素后一个位置的 Pair rep 迭代器。更多...
 
void destroy ()
 销毁 column_device_view 对象。更多...
 
column_device_view child (size_type child_index) const noexcept
 返回指定的子列。更多...
 
device_span< column_device_view const > children () const noexcept
 返回包含此列子列的 span。更多...
 
CUDF_HOST_DEVICE size_type num_child_columns () const noexcept
 返回子列的数量。更多...
 
- 继承自 cudf::detail::column_device_view_base 的公共成员函数
 column_device_view_base (column_device_view_base const &)=default
 复制构造函数。
 
 column_device_view_base (column_device_view_base &&)=default
 移动构造函数。
 
column_device_view_baseoperator= (column_device_view_base const &)=default
 复制赋值运算符。更多...
 
column_device_view_baseoperator= (column_device_view_base &&)=default
 移动赋值运算符。更多...
 
template<typename T = void, CUDF_ENABLE_IF(std::is_same_v< T, void > or is_rep_layout_compatible< T >()) >
CUDF_HOST_DEVICE T const * head () const noexcept
 返回指向基本设备内存分配的指针,并转换为指定类型。更多...
 
template<typename T , CUDF_ENABLE_IF(is_rep_layout_compatible< T >()) >
CUDF_HOST_DEVICE T const * data () const noexcept
 返回转换为指定类型的底层数据,加上偏移量。更多...
 
CUDF_HOST_DEVICE size_type size () const noexcept
 返回列中元素的数量。更多...
 
CUDF_HOST_DEVICE data_type type () const noexcept
 返回元素类型。更多...
 
CUDF_HOST_DEVICE bool nullable () const noexcept
 指示列是否可以包含空元素,即是否已分配位掩码。更多...
 
CUDF_HOST_DEVICE bitmask_type const * null_mask () const noexcept
 返回指向底层位掩码分配的原始指针。更多...
 
CUDF_HOST_DEVICE size_type offset () const noexcept
 返回相对于基本内存分配的第一个元素的索引,即从 head<T>() 返回的值。更多...
 
bool is_valid (size_type element_index) const noexcept
 返回指定的元素是否包含有效值(即非空)。更多...
 
bool is_valid_nocheck (size_type element_index) const noexcept
 返回指定的元素是否包含有效值(即非空)。更多...
 
bool is_null (size_type element_index) const noexcept
 返回指定的元素是否为空。更多...
 
bool is_null_nocheck (size_type element_index) const noexcept
 返回指定的元素是否为空。更多...
 
bitmask_type get_mask_word (size_type word_index) const noexcept
 null_mask() 返回指定的位掩码字。更多...
 

静态公共成员函数

template<typename T >
static constexpr CUDF_HOST_DEVICE bool has_element_accessor ()
 对于给定的 T,指示 column_device_view::element<T>() 是否有有效的重载。更多...
 
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())
 用于构造可在设备内存中使用的列视图的工厂方法。更多...
 
static std::size_t extent (column_view const &source_view)
 返回存储指定列及其子列的设备视图所需的内存大小(以字节为单位)。更多...
 

保护成员函数

 column_device_view (column_view source)
 column_view 构造一个 column_device_view,填充除子列之外的所有内容。更多...
 
- 继承自 cudf::detail::column_device_view_base 的保护成员函数
CUDF_HOST_DEVICE column_device_view_base (data_type type, size_type size, void const *data, bitmask_type const *null_mask, size_type offset)
 使用指定的类型、大小、数据、空掩码和偏移量构造一个列。更多...
 

保护属性

column_device_viewd_children {}
 
size_type _num_children {}
 子列的数量。
 
- 继承自 cudf::detail::column_device_view_base 的保护属性
data_type _type {type_id::EMPTY}
 元素类型。
 
cudf::size_type _size {}
 元素数量。
 
void const * _data {}
 指向包含元素的设备内存的指针。
 
bitmask_type const * _null_mask {}
 
size_type _offset {}
 

详细描述

一个不可变的、非拥有的设备数据视图,作为元素列,可平凡地复制并在 CUDA 设备代码中使用。

定义于文件 column_device_view.cuh355 行。

成员类型定义文档

◆ const_pair_rep_iterator

template<typename T , bool has_nulls>
using cudf::column_device_view::const_pair_rep_iterator = thrust::transform_iterator<detail::pair_rep_accessor<T, has_nulls>, count_it>

用于遍历此列的 Pair rep 迭代器。

每个行值都以其代表性形式访问。

定义于文件 column_device_view.cuh614 行。

构造函数与析构函数文档

◆ column_device_view() [1/2]

cudf::column_device_view::column_device_view ( column_view  column,
void *  h_ptr,
void *  d_ptr 
)

使用指定的宿主内存指针 (h_ptr) 来存储子对象,并使用设备内存指针 (d_ptr) 作为任何子对象指针的基地址,创建此类的一个实例。

参数
column用于创建此实例的列视图。
h_ptr用于放置任何子数据的宿主内存指针。
d_ptr用于作为任何子指针基地址的设备内存指针。

◆ column_device_view() [2/2]

cudf::column_device_view::column_device_view ( column_view  source)
protected

column_view 构造一个 column_device_view,填充除子列之外的所有内容。

注意
此构造函数仅供内部使用。要从 column_view 创建 column_device_view,应使用 column_device_view::create() 函数。
参数
source用于此构造的 column_view

成员函数文档

◆ begin()

template<typename T , CUDF_ENABLE_IF(column_device_view::has_element_accessor< T >()) >
const_iterator<T> cudf::column_device_view::begin ( ) const
inline

返回指向列第一个元素的迭代器。

此迭代器仅支持 has_nulls() == false 的列。将其用于 has_nulls() == true 的列时,访问空元素将导致未定义行为。

如果 column_device_view::has_element_accessor<T>() 为假,则此函数不参与重载决议。

对于包含空元素的列,请使用 make_null_replacement_iterator

模板参数
T列中元素的类型
返回值
指向列第一个元素的迭代器

定义于文件 column_device_view.cuh569 行。

◆ child()

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

返回指定的子列。

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

定义于文件 column_device_view.cuh852 行。

◆ children()

device_span<column_device_view const> cudf::column_device_view::children ( ) const
inlinenoexcept

返回包含此列子列的 span。

返回值
包含此列子列的 span

定义于文件 column_device_view.cuh862 行。

◆ create()

static std::unique_ptr<column_device_view, std::function<void(column_device_view*)> > cudf::column_device_view::create ( column_view  source_view,
rmm::cuda_stream_view  stream = cudf::get_default_stream() 
)
static

用于构造可在设备内存中使用的列视图的工厂方法。

分配并将 source_view 子列的视图复制到设备内存中,使其可在设备代码中访问。

如果 source_view.num_children() == 0,则不分配设备内存。

返回一个带有自定义删除器的 std::unique_ptr<column_device_view>,用于释放为子列分配的设备内存。

column_device_view 应按值传递到 GPU 核函数。

参数
source_view要使其可在设备代码中使用的 column_view
stream用于子列设备内存操作的 CUDA 流。
返回值
指向 column_device_viewunique_ptr,它使得 source_view 的数据在设备内存中可用。

◆ destroy()

void cudf::column_device_view::destroy ( )

销毁 column_device_view 对象。

注意
不会释放列数据,只会释放为存储子视图而分配的设备内存。

◆ element() [1/4]

template<typename T , CUDF_ENABLE_IF(is_rep_layout_compatible< T >()) >
T cudf::column_device_view::element ( size_type  element_index) const
inlinenoexcept

返回指定索引处元素的引用。

如果指定索引处的元素为 NULL,即 is_null(element_index) == true,则任何使用结果的尝试都将导致未定义行为。

此函数考虑了偏移量。

如果 is_rep_layout_compatible<T> 为假,则此函数不参与重载决议。对于 is_rep_layout_compatible<T> 为假的类型 T,此函数可能存在特化版本。

模板参数
T元素类型
参数
element_index所需元素的位置
返回值
指定索引处元素的引用

定义于文件 column_device_view.cuh431 行。

◆ element() [2/4]

template<typename T , CUDF_ENABLE_IF(std::is_same_v< T, string_view >) >
T cudf::column_device_view::element ( size_type  element_index) const
inlinenoexcept

返回指定索引处字符串元素的 string_view

如果指定索引处的元素为 NULL,即 is_null(element_index) == true,则任何使用结果的尝试都将导致未定义行为。

此函数考虑了偏移量。

参数
element_index所需字符串元素的位置
返回值
在此索引处表示此元素的 string_view 实例

定义于文件 column_device_view.cuh448 行。

◆ element() [3/4]

template<typename T , CUDF_ENABLE_IF(std::is_same_v< T, dictionary32 >) >
T cudf::column_device_view::element ( size_type  element_index) const
inlinenoexcept

对于字典列,返回指定索引处的 dictionary32 元素。

dictionary32 是一个强类型包装器,封装了一个 int32_t 值,该值保存指定元素在字典键中的偏移量。

例如,给定一个字典列 d,其键和索引如下:

{c++}
keys: {"foo", "bar", "baz"}
indices: {2, 0, 2, 1, 0}
d.element<dictionary32>(0) == dictionary32{2};
d.element<dictionary32>(1) == dictionary32{0};
dictionary_wrapper< int32_t > dictionary32
32位整数索引的字典包装器

如果指定索引处的元素为 NULL,即 is_null(element_index) == true,则任何使用结果的尝试都将导致未定义行为。

此函数考虑了偏移量。

参数
element_index所需元素的位置
返回值
在此索引处表示此元素的 dictionary32 实例

定义于文件 column_device_view.cuh507 行。

◆ element() [4/4]

template<typename T , CUDF_ENABLE_IF(cudf::is_fixed_point< T >()) >
T cudf::column_device_view::element ( size_type  element_index) const
inlinenoexcept

对于 fixed_point 列,返回指定索引处的 numeric::fixed_point 元素。

如果指定索引处的元素为 NULL,即 is_null(element_index) == true,则任何使用结果的尝试都将导致未定义行为。

参数
element_index所需元素的位置
返回值
表示此索引处元素的 numeric::fixed_point

定义于文件 column_device_view.cuh525 行。

◆ end()

template<typename T , CUDF_ENABLE_IF(column_device_view::has_element_accessor< T >()) >
const_iterator<T> cudf::column_device_view::end ( ) const
inline

返回指向列最后一个元素后一个位置的迭代器。

此迭代器仅支持 has_nulls() == false 的列。将其用于 has_nulls() == true 的列时,访问空元素将导致未定义行为。

如果 column_device_view::has_element_accessor<T>() 为假,则此函数不参与重载决议。

对于包含空元素的列,请使用 make_null_replacement_iterator

返回值
指向列最后一个元素后一个位置的迭代器

定义于文件 column_device_view.cuh589 行。

◆ extent()

static std::size_t cudf::column_device_view::extent ( column_view const &  source_view)
static

返回存储指定列及其子列的设备视图所需的内存大小(以字节为单位)。

参数
source_view用于此计算的 column_view
返回值
在 GPU 内存中存储设备视图的字节数

◆ has_element_accessor()

template<typename T >
static constexpr CUDF_HOST_DEVICE bool cudf::column_device_view::has_element_accessor ( )
inlinestaticconstexpr

对于给定的 T,指示 column_device_view::element<T>() 是否有有效的重载。

模板参数
T元素类型
返回值
如果 column_device_view::element<T>() 有有效的重载,则返回 true,否则返回 false

定义于文件 column_device_view.cuh540 行。

◆ num_child_columns()

CUDF_HOST_DEVICE size_type cudf::column_device_view::num_child_columns ( ) const
inlinenoexcept

返回子列的数量。

返回值
子列的数量

定义于文件 column_device_view.cuh872 行。

◆ operator=() [1/2]

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

移动赋值运算符。

返回值
此对象的引用(转移所有权后)

◆ operator=() [2/2]

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

复制赋值运算符。

返回值
此对象的引用

◆ optional_begin()

template<typename T , typename Nullate , CUDF_ENABLE_IF(column_device_view::has_element_accessor< T >()) >
auto cudf::column_device_view::optional_begin ( Nullate  has_nulls) const
inline

返回指向列第一个元素的可选迭代器。

解引用返回的迭代器将返回 cuda::std::optional<T>

此迭代器的元素可在上下文上转换为布尔值。如果对象包含值,则转换返回 true;如果对象不包含值,则返回 false。

使用 nullate::DYNAMIC 调用此方法将 nullability 的确定推迟到运行时,由调用者指示列是否包含 null。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);
// 创建一个 `DYNAMIC` 可选迭代器
auto optional_iterator =
d_col->optional_begin<T>(cudf::nullate::DYNAMIC{col_view.has_nulls()});
}
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())
用于构造可在设备内存中使用的列视图的工厂方法。
设备数据的非拥有的、不可变视图,作为元素列,其中一些可能为 null,如 ind...所示
bool has_nulls() const
指示列是否包含 null 元素,即 null_count() > 0
nullate::DYNAMIC 将 nullability 的确定推迟到运行时,而不是编译时....

使用 nullate::YES 调用此方法意味着该列支持 null,并且返回的可选对象可能不包含值。

使用 nullate::NO 调用此方法意味着该列没有 null 值,并且返回的可选对象将始终包含值。

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{});
//使用 optional_iterator
} else {
auto optional_iterator = d_col->optional_begin<T>(cudf::nullate::NO{});
//使用 optional_iterator
}
}
bool has_nulls(table_view const &view)
如果表中的任何列包含 null,则返回 True。

如果 column_device_view::has_element_accessor<T>() 为假,则此函数不参与重载决议。

异常
cudf::logic_error如果列不可为空且 has_nulls 计算为 true。
cudf::logic_error如果列数据类型和元素类型不匹配。
模板参数
T列中元素的类型
Nullate描述如何在编译时或运行时检查 null 的 cudf::nullate 类型
参数
has_nulls描述如何在编译时或运行时检查 null 的 cudf::nullate 类型
返回值
指向列第一个元素的可选迭代器

定义于文件 column_device_view.cuh674 行。

◆ optional_end()

template<typename T , typename Nullate , CUDF_ENABLE_IF(column_device_view::has_element_accessor< T >()) >
auto cudf::column_device_view::optional_end ( Nullate  has_nulls) const
inline

返回指向列最后一个元素后一个位置的可选迭代器。

返回的迭代器表示一个 cuda::std::optional<T> 元素。

如果 column_device_view::has_element_accessor<T>() 为假,则此函数不参与重载决议。

异常
cudf::logic_error如果列不可为空且 has_nulls 为 true
cudf::logic_error如果列数据类型和元素类型不匹配。
模板参数
T列中元素的类型
Nullate描述如何在编译时或运行时检查 null 的 cudf::nullate 类型
参数
has_nulls描述如何在编译时或运行时检查 null 的 cudf::nullate 类型
返回值
指向列最后一个元素后一个位置的可选迭代器

定义于文件 column_device_view.cuh761 行。

◆ pair_begin()

template<typename T , bool has_nulls, CUDF_ENABLE_IF(column_device_view::has_element_accessor< T >()) >
const_pair_iterator<T, has_nulls> cudf::column_device_view::pair_begin ( ) const
inline

返回指向列第一个元素的对迭代器。

解引用返回的迭代器将返回一个 thrust::pair<T, 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<T>() 为假,则此函数不参与重载决议。

异常
cudf::logic_error如果模板参数 has_nulls == truenullable() == false
cudf::logic_error如果列数据类型和元素类型不匹配。
返回值
指向列第一个元素的对迭代器

定义于文件 column_device_view.cuh704 行。

◆ pair_end()

template<typename T , bool has_nulls, CUDF_ENABLE_IF(column_device_view::has_element_accessor< T >()) >
const_pair_iterator<T, has_nulls> cudf::column_device_view::pair_end ( ) const
inline

返回指向列最后一个元素后一个位置的对迭代器。

如果 column_device_view::has_element_accessor<T>() 为假,则此函数不参与重载决议。

异常
cudf::logic_error如果模板参数 has_nulls == truenullable() == false
cudf::logic_error如果列数据类型和元素类型不匹配。
返回值
指向列最后一个元素后一个位置的对迭代器

定义于文件 column_device_view.cuh781 行。

◆ pair_rep_begin()

template<typename T , bool has_nulls, CUDF_ENABLE_IF(column_device_view::has_element_accessor< T >()) >
const_pair_rep_iterator<T, has_nulls> cudf::column_device_view::pair_rep_begin ( ) const
inline

返回指向列第一个元素的对迭代器。

解引用返回的迭代器将返回一个 thrust::pair<rep_type, bool>,其中 rep_typedevice_storage_type<T>,即用于在设备上存储值的类型。

如果位置 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<T>() 为假,则此函数不参与重载决议。

异常
cudf::logic_error如果模板参数 has_nulls == truenullable() == false
cudf::logic_error如果列数据类型和元素类型不匹配。
返回值
指向列第一个元素的对迭代器

定义于文件 column_device_view.cuh736 行。

◆ pair_rep_end()

template<typename T , bool has_nulls, CUDF_ENABLE_IF(column_device_view::has_element_accessor< T >()) >
const_pair_rep_iterator<T, has_nulls> cudf::column_device_view::pair_rep_end ( ) const
inline

返回指向列最后一个元素后一个位置的对迭代器。

如果 column_device_view::has_element_accessor<T>() 为假,则此函数不参与重载决议。

异常
cudf::logic_error如果模板参数 has_nulls == truenullable() == false
cudf::logic_error如果列数据类型和元素类型不匹配。
返回值
指向列最后一个元素后一个位置的对迭代器

定义于文件 column_device_view.cuh802 行。

◆ slice()

CUDF_HOST_DEVICE column_device_view cudf::column_device_view::slice ( size_type  offset,
size_type  size 
) const
inlinenoexcept

获取一个新的 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])
参数
offset切片中第一个元素的索引
size切片中元素的数量
返回值
此列的一个切片

定义于文件 column_device_view.cuh401 行。

成员数据文档

◆ d_children

column_device_view* cudf::column_device_view::d_children {}
protected

设备内存中的 column_device_view 对象数组。根据元素类型,子列可能包含额外数据。

定义于文件 column_device_view.cuh904 行。


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