标量类#

group Scalar
class scalar#
#include <scalar.hpp>

一个表示单一值的拥有类。

标量是 cudf 中任何受支持数据类型的单一值。派生自此类的类用于表示标量。将派生类对象传递给外部 libcudf API 时,应将其向上转型为此类。

派生自 cudf::detail::fixed_width_scalar< T >, cudf::fixed_point_scalar< T >, cudf::list_scalar, cudf::string_scalar, cudf::struct_scalar

公共函数

data_type type() const noexcept#

返回标量的逻辑值类型。

返回:

标量的逻辑值类型

void set_valid_async(bool is_valid, rmm::cuda_stream_view stream = cudf::get_default_stream())#

更新值的有效性。

参数:
  • is_valid – true: 将值设置为有效。false: 将值设置为 null。

  • stream – 用于设备内存操作的 CUDA 流。

bool is_valid(rmm::cuda_stream_view stream = cudf::get_default_stream()) const#

指示标量是否包含有效值。

注意

is_valid() == false 时使用该值是未定义行为。此外,此函数会进行流同步。

参数:

stream – 用于设备内存操作的 CUDA 流。

返回:

true 值有效

返回:

false 值无效/null

bool *validity_data()#

返回设备内存中有效性布尔值的原始指针。

返回:

设备内存中有效性布尔值的原始指针

bool const *validity_data() const#

返回设备内存中有效性布尔值的 const 原始指针。

返回:

设备内存中有效性布尔值的原始指针

template<typename T>
class numeric_scalar : public cudf::detail::fixed_width_scalar<T>#
#include <scalar.hpp>

一个表示设备内存中数值的拥有类。

模板参数:

T – 数值的原始数据类型。

公共函数

numeric_scalar(numeric_scalar &&other) = default#

numeric_scalar 的移动构造函数。

参数:

other – 要从中移动的另一个 numeric_scalar

numeric_scalar(numeric_scalar 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 – 用于设备内存操作的 CUDA 流。

  • mr – 用于设备内存分配的设备内存资源。

numeric_scalar(T value, bool is_valid = true, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

构造新的数值标量对象。

参数:
  • value – 标量的初始值。

  • is_valid – 标量持有的值是否有效。

  • stream – 用于设备内存操作的 CUDA 流。

  • mr – 用于设备内存分配的设备内存资源。

numeric_scalar(rmm::device_scalar<T> &&data, bool is_valid = true, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

从现有设备内存构造新的数值标量对象。

参数:
  • data – 标量在设备内存中的数据。

  • is_valid – 标量持有的值是否有效。

  • stream – 用于设备内存操作的 CUDA 流。

  • mr – 用于设备内存分配的设备内存资源。

template<typename T>
class fixed_point_scalar : public cudf::scalar#
#include <scalar.hpp>

一个表示设备内存中定点数的拥有类。

模板参数:

T – 定点数的原始数据类型。

公共类型

using rep_type = typename T::rep#

定点数的表示类型。

using value_type = T#

定点数的值类型。

公共函数

fixed_point_scalar(fixed_point_scalar &&other) = default#

fixed_point_scalar 的移动构造函数。

参数:

other – 要从中移动的另一个 fixed_point_scalar

fixed_point_scalar(fixed_point_scalar 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 – 用于设备内存操作的 CUDA 流。

  • mr – 用于设备内存分配的设备内存资源。

fixed_point_scalar(rep_type value, numeric::scale_type scale, bool is_valid = true, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

从已偏移的值和比例构造新的定点标量对象。

参数:
  • value – 定点标量的初始偏移值。

  • scale – 定点标量的比例。

  • is_valid – 标量持有的值是否有效。

  • stream – 用于设备内存操作的 CUDA 流。

  • mr – 用于设备内存分配的设备内存资源。

fixed_point_scalar(rep_type value, bool is_valid = true, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

从一个值和默认 0 比例构造新的定点标量对象。

参数:
  • value – 定点标量的初始值。

  • is_valid – 标量持有的值是否有效。

  • stream – 用于设备内存操作的 CUDA 流。

  • mr – 用于设备内存分配的设备内存资源。

fixed_point_scalar(T value, bool is_valid = true, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

从一个定点数构造新的定点标量对象。

参数:
  • value – 用于初始化定点标量的定点数。

  • is_valid – 标量持有的值是否有效。

  • stream – 用于设备内存操作的 CUDA 流。

  • mr – 用于设备内存分配的设备内存资源。

fixed_point_scalar(rmm::device_scalar<rep_type> &&data, numeric::scale_type scale, bool is_valid = true, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

从现有设备内存构造新的定点标量对象。

参数:
  • data – 标量在设备内存中的数据。

  • scale – 定点标量的比例。

  • is_valid – 标量持有的值是否有效。

  • stream – 用于设备内存操作的 CUDA 流。

  • mr – 用于设备内存分配的设备内存资源。

rep_type value(rmm::cuda_stream_view stream = cudf::get_default_stream()) const#

获取标量的值。

参数:

stream – 用于设备内存操作的 CUDA 流。

返回:

标量的值

T fixed_point_value(rmm::cuda_stream_view stream = cudf::get_default_stream()) const#

获取 decimal32, decimal64 或 decimal128。

参数:

stream – 用于设备内存操作的 CUDA 流。

返回:

decimal32, decimal64 或 decimal128 的值

rep_type *data()#

返回设备内存中值的原始指针。

返回:

设备内存中值的原始指针

rep_type const *data() const#

返回设备内存中值的 const 原始指针。

返回:

设备内存中值的 const 原始指针

class string_scalar : public cudf::scalar#
#include <scalar.hpp>

一个表示设备内存中字符串的拥有类。

公共类型

using value_type = cudf::string_view#

字符串标量的值类型。

公共函数

string_scalar(string_scalar &&other) = default#

string_scalar 的移动构造函数。

参数:

other – 要从中移动的另一个 string_scalar

string_scalar(string_scalar const &other, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

通过深度复制另一个 string_scalar 对象来构造新的字符串标量对象。

参数:
  • other – 要复制的另一个 string_scalar

  • stream – 用于设备内存操作的 CUDA 流。

  • mr – 用于设备内存分配的设备内存资源。

string_scalar(std::string_view string, bool is_valid = true, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

构造新的字符串标量对象。

抛出:

std::overflow_error – 如果输入字符串的大小超过 cudf::size_type

参数:
  • string – 字符串的值。

  • is_valid – 标量持有的值是否有效。

  • stream – 用于设备内存操作的 CUDA 流。

  • mr – 用于设备内存分配的设备内存资源。

string_scalar(value_type const &source, bool is_valid = true, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

string_view 构造新的字符串标量对象。

注意,此函数会复制 string_view 指向的数据。

参数:
  • source – 指向要复制的字符串值的 string_view

  • is_valid – 标量持有的值是否有效。

  • stream – 用于设备内存操作的 CUDA 流。

  • mr – 用于设备内存分配的设备内存资源。

string_scalar(rmm::device_scalar<value_type> &data, bool is_valid = true, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

从设备内存中的 string_view 构造新的字符串标量对象。

注意,此函数会复制 string_view 指向的数据。

参数:
  • data – 指向要复制的字符串值的 string_view 的 device_scalar。

  • is_valid – 标量持有的值是否有效。

  • stream – 用于设备内存操作的 CUDA 流。

  • mr – 用于设备内存分配的设备内存资源。

string_scalar(rmm::device_buffer &&data, bool is_valid = true, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

通过移动现有字符串数据缓冲区来构造新的字符串标量对象。

注意,此构造函数会将现有缓冲区移动到内部数据缓冲区;不执行复制操作。

参数:
  • data – 要接管的现有缓冲区。

  • is_valid – 标量持有的值是否有效。

  • stream – 用于设备内存操作的 CUDA 流。

  • mr – 用于设备内存分配的设备内存资源。

std::string to_string(rmm::cuda_stream_view stream = cudf::get_default_stream()) const#

获取标量在主机 std::string 中的值。

参数:

stream – 用于设备内存操作的 CUDA 流。

返回:

标量在主机 std::string 中的值

value_type value(rmm::cuda_stream_view stream = cudf::get_default_stream()) const#

将标量的值获取为 string_view

参数:

stream – 用于设备内存操作的 CUDA 流。

返回:

标量作为 string_view 的值

size_type size() const#

返回字符串的大小(以字节为单位)。

返回:

字符串的大小(以字节为单位)

char const *data() const#

返回设备内存中字符串的原始指针。

返回:

设备内存中字符串的原始指针

template<typename T>
class chrono_scalar : public cudf::detail::fixed_width_scalar<T>#
#include <scalar.hpp>

一个表示设备内存中时间戳/持续时间值的拥有类。

另请参阅

cudf/wrappers/timestamps.hpp, cudf/wrappers/durations.hpp 查看允许的类型列表。

模板参数:

T – 时间戳/持续时间值的原始数据类型。

由以下类派生:cudf::duration_scalar< T >, cudf::timestamp_scalar< T >

公共函数

chrono_scalar(chrono_scalar &&other) = default#

chrono_scalar 的移动构造函数。

参数:

other – 要从中移动的另一个 chrono_scalar

chrono_scalar(chrono_scalar const &other, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

通过深度复制另一个对象来构造新的 chrono 标量对象。

参数:
  • other – 要复制的标量。

  • stream – 用于设备内存操作的 CUDA 流。

  • mr – 用于设备内存分配的设备内存资源。

chrono_scalar(T value, bool is_valid = true, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

构造一个新的 chrono scalar 对象。

参数:
  • value – 标量的初始值。

  • is_valid – 标量持有的值是否有效。

  • stream – 用于设备内存操作的 CUDA 流。

  • mr – 用于设备内存分配的设备内存资源。

chrono_scalar(rmm::device_scalar<T> &&data, bool is_valid = true, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

从现有的设备内存构造一个新的 chrono scalar 对象。

参数:
  • data – 标量在设备内存中的数据。

  • is_valid – 标量持有的值是否有效。

  • stream – 用于设备内存操作的 CUDA 流。

  • mr – 用于设备内存分配的设备内存资源。

template<typename T>
class timestamp_scalar : public cudf::chrono_scalar<T>#
#include <scalar.hpp>

一个拥有设备内存中时间戳值的类。

另请参阅

查看 cudf/wrappers/timestamps.hpp 允许的类型列表。

模板参数:

T – 时间戳值的数据类型。

公共类型

using rep_type = typename T::rep#

时间戳的底层表示类型。

公共函数

timestamp_scalar(timestamp_scalar &&other) = default#

timestamp_scalar 的移动构造函数。

参数:

other – 用于移动的另一个 timestamp_scalar

timestamp_scalar(timestamp_scalar const &other, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

通过深度复制另一个 timestamp scalar 对象来构造。

参数:
  • other – 要复制的标量。

  • stream – 用于设备内存操作的 CUDA 流。

  • mr – 用于设备内存分配的设备内存资源。

template<typename Duration2>
timestamp_scalar(Duration2 const &value, bool is_valid, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

从可转换为 T::duration 的持续时间构造新的 timestamp scalar 对象。

参数:
  • value – 表示自 UNIX 纪元以来时间单位数的持续时间,或可转换为时间戳持续时间的另一个持续时间。

  • is_valid – 标量持有的值是否有效。

  • stream – 用于设备内存操作的 CUDA 流。

  • mr – 用于设备内存分配的设备内存资源。

rep_type ticks_since_epoch(rmm::cuda_stream_view stream)#

返回自 UNIX 纪元以来时间单位数表示的持续时间。

参数:

stream – 用于设备内存操作的 CUDA 流。

返回:

自 UNIX 纪元以来时间单位数表示的持续时间

template<typename T>
class duration_scalar : public cudf::chrono_scalar<T>#
#include <scalar.hpp>

一个拥有设备内存中持续时间值的类。

另请参阅

查看 cudf/wrappers/durations.hpp 允许的类型列表。

模板参数:

T – 持续时间值的数据类型。

公共类型

using rep_type = typename T::rep#

持续时间的底层表示类型。

公共函数

duration_scalar(duration_scalar &&other) = default#

duration_scalar 的移动构造函数。

参数:

other – 用于移动的另一个 duration_scalar

duration_scalar(duration_scalar const &other, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

通过深度复制另一个 duration scalar 对象来构造。

参数:
  • other – 要复制的标量。

  • stream – 用于设备内存操作的 CUDA 流。

  • mr – 用于设备内存分配的设备内存资源。

duration_scalar(rep_type value, bool is_valid, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

从时间单位计数构造新的 duration scalar 对象。

参数:
  • value – 表示自 UNIX 纪元以来时间单位数的整数。

  • is_valid – 标量持有的值是否有效。

  • stream – 用于设备内存操作的 CUDA 流。

  • mr – 用于设备内存分配的设备内存资源。

rep_type count(rmm::cuda_stream_view stream)#

返回时间单位数表示的持续时间。

参数:

stream – 用于设备内存操作的 CUDA 流。

返回:

时间单位数表示的持续时间

class list_scalar : public cudf::scalar#
#include <scalar.hpp>

一个拥有设备内存中列表值的类。

公共函数

list_scalar(list_scalar &&other) = default#

list_scalar 的移动构造函数。

参数:

other – 用于移动的另一个 list_scalar

list_scalar(list_scalar const &other, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

通过深度复制另一个 list scalar 对象来构造。

参数:
  • other – 要复制的标量。

  • stream – 用于设备内存操作的 CUDA 流。

  • mr – 用于设备内存分配的设备内存资源。

list_scalar(cudf::column_view const &data, bool is_valid = true, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

column_view 构造新的 list scalar 对象。

输入的 column_view 被复制。

参数:
  • data – 要复制的列数据。

  • is_valid – 标量持有的值是否有效。

  • stream – 用于设备内存操作的 CUDA 流。

  • mr – 用于设备内存分配的设备内存资源。

list_scalar(cudf::column &&data, bool is_valid = true, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

从现有的 column 构造新的 list scalar 对象。

参数:
  • data – 要接管所有权的列。

  • is_valid – 标量持有的值是否有效。

  • stream – 用于设备内存操作的 CUDA 流。

  • mr – 用于设备内存分配的设备内存资源。

column_view view() const#

返回底层设备数据的非拥有、不可变视图。

返回:

底层设备数据的非拥有、不可变视图

class struct_scalar : public cudf::scalar#
#include <scalar.hpp>

一个拥有设备内存中结构体值的类。

公共函数

struct_scalar(struct_scalar &&other) = default#

struct_scalar 的移动构造函数。

参数:

other – 用于移动的另一个 struct_scalar

struct_scalar(struct_scalar const &other, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

通过深度复制另一个 struct scalar 对象来构造。

参数:
  • other – 要复制的标量。

  • stream – 用于设备内存操作的 CUDA 流。

  • mr – 用于设备内存分配的设备内存资源。

struct_scalar(table_view const &data, bool is_valid = true, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

table_view 构造新的 struct scalar 对象。

输入的 table_view 被深度复制。

参数:
  • data – 要复制的表数据。

  • is_valid – 标量持有的值是否有效。

  • stream – 用于设备内存操作的 CUDA 流。

  • mr – 用于设备内存分配的设备内存资源。

struct_scalar(host_span<column_view const> data, bool is_valid = true, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

从 column_views 的 host_span 构造新的 struct scalar 对象。

输入的 column_views 被深度复制。

参数:
  • data – 要复制的 column_views。

  • is_valid – 标量持有的值是否有效。

  • stream – 用于设备内存操作的 CUDA 流。

  • mr – 用于设备内存分配的设备内存资源。

struct_scalar(table &&data, bool is_valid = true, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

从现有的设备内存中的表构造新的 struct scalar 对象。

注意,此构造函数会将现有表数据移动到内部表数据中;不执行复制。

参数:
  • data – 要接管的现有表数据。

  • is_valid – 标量持有的值是否有效。

  • stream – 用于设备内存操作的 CUDA 流。

  • mr – 用于设备内存分配的设备内存资源。

table_view view() const#

返回底层设备数据的非拥有、不可变视图。

返回:

底层设备数据的非拥有、不可变视图