一个不可变的、非拥有的设备数据视图,作为元素列,可平凡地复制并在 CUDA 设备代码中使用。更多...
公共类型 | |
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_view & | operator= (column_device_view const &)=default |
复制赋值运算符。更多... | |
column_device_view & | operator= (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 >()) > | |
T | element (size_type element_index) const noexcept |
返回指定索引处元素的引用。更多... | |
template<typename T , CUDF_ENABLE_IF(std::is_same_v< T, string_view >) > | |
T | element (size_type element_index) const noexcept |
返回指定索引处字符串元素的 string_view 。更多... | |
template<typename T , CUDF_ENABLE_IF(std::is_same_v< T, dictionary32 >) > | |
T | element (size_type element_index) const noexcept |
对于字典列,返回指定索引处的 dictionary32 元素。更多... | |
template<typename T , CUDF_ENABLE_IF(cudf::is_fixed_point< T >()) > | |
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_nulls > | pair_begin () const |
返回指向列第一个元素的对迭代器。更多... | |
template<typename T , bool has_nulls, CUDF_ENABLE_IF(column_device_view::has_element_accessor< T >()) > | |
const_pair_rep_iterator< T, has_nulls > | pair_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_nulls > | pair_end () const |
返回指向列最后一个元素后一个位置的对迭代器。更多... | |
template<typename T , bool has_nulls, CUDF_ENABLE_IF(column_device_view::has_element_accessor< T >()) > | |
const_pair_rep_iterator< T, has_nulls > | pair_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 |
返回子列的数量。更多... | |
![]() | |
column_device_view_base (column_device_view_base const &)=default | |
复制构造函数。 | |
column_device_view_base (column_device_view_base &&)=default | |
移动构造函数。 | |
column_device_view_base & | operator= (column_device_view_base const &)=default |
复制赋值运算符。更多... | |
column_device_view_base & | operator= (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_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_view * | d_children {} |
size_type | _num_children {} |
子列的数量。 | |
![]() | |
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.cuh 的 355 行。
using cudf::column_device_view::const_pair_rep_iterator = thrust::transform_iterator<detail::pair_rep_accessor<T, has_nulls>, count_it> |
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 | 用于作为任何子指针基地址的设备内存指针。 |
|
protected |
从 column_view
构造一个 column_device_view
,填充除子列之外的所有内容。
column_view
创建 column_device_view
,应使用 column_device_view::create()
函数。source | 用于此构造的 column_view |
|
inline |
返回指向列第一个元素的迭代器。
此迭代器仅支持 has_nulls() == false
的列。将其用于 has_nulls() == true
的列时,访问空元素将导致未定义行为。
如果 column_device_view::has_element_accessor<T>()
为假,则此函数不参与重载决议。
对于包含空元素的列,请使用 make_null_replacement_iterator
。
T | 列中元素的类型 |
定义于文件 column_device_view.cuh 的 569 行。
|
inlinenoexcept |
返回指定的子列。
child_index | 所需子列的索引 |
column_view
定义于文件 column_device_view.cuh 的 852 行。
|
inlinenoexcept |
|
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_view
的 unique_ptr
,它使得 source_view
的数据在设备内存中可用。void cudf::column_device_view::destroy | ( | ) |
销毁 column_device_view
对象。
|
inlinenoexcept |
返回指定索引处元素的引用。
如果指定索引处的元素为 NULL,即 is_null(element_index) == true
,则任何使用结果的尝试都将导致未定义行为。
此函数考虑了偏移量。
如果 is_rep_layout_compatible<T>
为假,则此函数不参与重载决议。对于 is_rep_layout_compatible<T>
为假的类型 T
,此函数可能存在特化版本。
T | 元素类型 |
element_index | 所需元素的位置 |
定义于文件 column_device_view.cuh 的 431 行。
|
inlinenoexcept |
返回指定索引处字符串元素的 string_view
。
如果指定索引处的元素为 NULL,即 is_null(element_index) == true
,则任何使用结果的尝试都将导致未定义行为。
此函数考虑了偏移量。
element_index | 所需字符串元素的位置 |
定义于文件 column_device_view.cuh 的 448 行。
|
inlinenoexcept |
对于字典列,返回指定索引处的 dictionary32
元素。
dictionary32
是一个强类型包装器,封装了一个 int32_t
值,该值保存指定元素在字典键中的偏移量。
例如,给定一个字典列 d
,其键和索引如下:
如果指定索引处的元素为 NULL,即 is_null(element_index) == true
,则任何使用结果的尝试都将导致未定义行为。
此函数考虑了偏移量。
element_index | 所需元素的位置 |
定义于文件 column_device_view.cuh 的 507 行。
|
inlinenoexcept |
对于 fixed_point
列,返回指定索引处的 numeric::fixed_point
元素。
如果指定索引处的元素为 NULL,即 is_null(element_index) == true
,则任何使用结果的尝试都将导致未定义行为。
element_index | 所需元素的位置 |
定义于文件 column_device_view.cuh 的 525 行。
|
inline |
返回指向列最后一个元素后一个位置的迭代器。
此迭代器仅支持 has_nulls() == false
的列。将其用于 has_nulls() == true
的列时,访问空元素将导致未定义行为。
如果 column_device_view::has_element_accessor<T>()
为假,则此函数不参与重载决议。
对于包含空元素的列,请使用 make_null_replacement_iterator
。
定义于文件 column_device_view.cuh 的 589 行。
|
static |
|
inlinestaticconstexpr |
对于给定的 T
,指示 column_device_view::element<T>()
是否有有效的重载。
T | 元素类型 |
column_device_view::element<T>()
有有效的重载,则返回 true
,否则返回 false
。定义于文件 column_device_view.cuh 的 540 行。
|
inlinenoexcept |
|
default |
移动赋值运算符。
|
default |
复制赋值运算符。
|
inline |
返回指向列第一个元素的可选迭代器。
解引用返回的迭代器将返回 cuda::std::optional<T>
。
此迭代器的元素可在上下文上转换为布尔值。如果对象包含值,则转换返回 true;如果对象不包含值,则返回 false。
使用 nullate::DYNAMIC
调用此方法将 nullability 的确定推迟到运行时,由调用者指示列是否包含 null。nullate::DYNAMIC
在算法将在多个迭代器上执行且编译时不需要所有迭代器类型组合的情况下非常有用。
使用 nullate::YES
调用此方法意味着该列支持 null,并且返回的可选对象可能不包含值。
使用 nullate::NO
调用此方法意味着该列没有 null 值,并且返回的可选对象将始终包含值。
如果 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.cuh 的 674 行。
|
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.cuh 的 761 行。
|
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 == true 且 nullable() == false |
cudf::logic_error | 如果列数据类型和元素类型不匹配。 |
定义于文件 column_device_view.cuh 的 704 行。
|
inline |
返回指向列最后一个元素后一个位置的对迭代器。
如果 column_device_view::has_element_accessor<T>()
为假,则此函数不参与重载决议。
cudf::logic_error | 如果模板参数 has_nulls == true 且 nullable() == false |
cudf::logic_error | 如果列数据类型和元素类型不匹配。 |
定义于文件 column_device_view.cuh 的 781 行。
|
inline |
返回指向列第一个元素的对迭代器。
解引用返回的迭代器将返回一个 thrust::pair<rep_type, bool>
,其中 rep_type
是 device_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 == true 且 nullable() == false |
cudf::logic_error | 如果列数据类型和元素类型不匹配。 |
定义于文件 column_device_view.cuh 的 736 行。
|
inline |
返回指向列最后一个元素后一个位置的对迭代器。
如果 column_device_view::has_element_accessor<T>()
为假,则此函数不参与重载决议。
cudf::logic_error | 如果模板参数 has_nulls == true 且 nullable() == false |
cudf::logic_error | 如果列数据类型和元素类型不匹配。 |
定义于文件 column_device_view.cuh 的 802 行。
|
inlinenoexcept |
获取一个新的 column_device_view,它是此列的一个切片。
示例
offset | 切片中第一个元素的索引 |
size | 切片中元素的数量 |
定义于文件 column_device_view.cuh 的 401 行。
|
protected |
设备内存中的 column_device_view
对象数组。根据元素类型,子列可能包含额外数据。
定义于文件 column_device_view.cuh 的 904 行。