模块 | 文件 | 枚举 | 函数
复制

模块

 连接
 
 收集
 
 散布
 
 切片
 
 分割
 
 移位
 

文件

文件  copying.hpp
 用于收集、散布、分割、切片等的列 API。
 

枚举

enum class  cudf::out_of_bounds_policy : bool { cudf::NULLIFY , cudf::DONT_CHECK }
 用于处理可能越界索引的策略。 更多...
 
enum class  cudf::mask_allocation_policy : int32_t { cudf::NEVER , cudf::RETAIN , cudf::ALWAYS }
 指示何时根据现有掩码分配掩码。 更多...
 
enum class  cudf::sample_with_replacement : bool { cudf::FALSE , cudf::TRUE }
 指示一行是否可以被多次采样。 更多...
 

函数

std::unique_ptr< tablecudf::reverse (table_view const &source_table, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
 反转表中的行。 更多...
 
std::unique_ptr< columncudf::reverse (column_view const &source_column, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
 反转列中的元素。 更多...
 
std::unique_ptr< columncudf::empty_like (column_view const &input)
 初始化并返回一个与 input 类型相同的空列。 更多...
 
std::unique_ptr< columncudf::empty_like (scalar const &input)
 初始化并返回一个与 input 类型相同的空列。 更多...
 
std::unique_ptr< columncudf::allocate_like (column_view const &input, mask_allocation_policy mask_alloc=mask_allocation_policy::RETAIN, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
 创建一个与 input 大小和类型相同但未初始化的新列。 更多...
 
std::unique_ptr< columncudf::allocate_like (column_view const &input, size_type size, mask_allocation_policy mask_alloc=mask_allocation_policy::RETAIN, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
 创建一个指定大小且与 input 类型相同但未初始化的新列。 更多...
 
std::unique_ptr< tablecudf::empty_like (table_view const &input_table)
 创建一个由空列组成的表,其类型与 input_table 中的列相同 更多...
 
void cudf::copy_range_in_place (column_view const &source, mutable_column_view &target, size_type source_begin, size_type source_end, size_type target_begin, rmm::cuda_stream_view stream=cudf::get_default_stream())
 将一部分元素从一列原地复制到另一列。 更多...
 
std::unique_ptr< columncudf::copy_range (column_view const &source, column_view const &target, size_type source_begin, size_type source_end, size_type target_begin, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
 将一部分元素从一列复制到另一列(非原地)。 更多...
 
std::unique_ptr< columncudf::copy_if_else (column_view const &lhs, column_view const &rhs, column_view const &boolean_mask, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
 返回一个新列,其中每个元素根据 boolean_mask 中相应元素的值从 lhsrhs 中选择。 更多...
 
std::unique_ptr< columncudf::copy_if_else (scalar const &lhs, column_view const &rhs, column_view const &boolean_mask, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
 返回一个新列,其中每个元素根据 boolean_mask 中相应元素的值从 lhsrhs 中选择。 更多...
 
std::unique_ptr< columncudf::copy_if_else (column_view const &lhs, scalar const &rhs, column_view const &boolean_mask, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
 返回一个新列,其中每个元素根据 boolean_mask 中相应元素的值从 lhsrhs 中选择。 更多...
 
std::unique_ptr< columncudf::copy_if_else (scalar const &lhs, scalar const &rhs, column_view const &boolean_mask, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
 返回一个新列,其中每个元素根据 boolean_mask 中相应元素的值从 lhsrhs 中选择。 更多...
 
std::unique_ptr< scalarcudf::get_element (column_view const &input, size_type index, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
 从列中获取指定索引处的元素。 更多...
 
std::unique_ptr< tablecudf::sample (table_view const &input, size_type const n, sample_with_replacement replacement=sample_with_replacement::FALSE, int64_t const seed=0, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
 从给定的 input 中随机收集 n 个样本。 更多...
 
bool cudf::has_nonempty_nulls (column_view const &input, rmm::cuda_stream_view stream=cudf::get_default_stream())
 检查列或其后代是否包含非空 null 行。 更多...
 
bool cudf::may_have_nonempty_nulls (column_view const &input)
 估计列或其后代 *可能* 包含非空 null 元素。 更多...
 
std::unique_ptr< columncudf::purge_nonempty_nulls (column_view const &input, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
 input 复制到输出中,同时清除列或其后代中的任何非空 null 行。 更多...
 

详细描述

枚举类型文档

◆ mask_allocation_policy

enum cudf::mask_allocation_policy : int32_t
strong

指示何时根据现有掩码分配掩码。

枚举器
NEVER 

不分配空掩码,无论输入如何。

RETAIN 

如果输入包含空掩码,则分配一个。

ALWAYS 

分配空掩码,无论输入如何。

定义位于文件 copying.hpp226 行。

◆ out_of_bounds_policy

enum cudf::out_of_bounds_policy : bool
strong

用于处理可能越界索引的策略。

NULLIFY 表示将对应于越界 gather_map 值的输出值置空。DONT_CHECK 表示不检查索引是否越界,以获得更好的性能。

枚举器
NULLIFY 

对应于越界索引的输出值为 null。

DONT_CHECK 

不执行边界检查,性能更好。

定义位于文件 copying.hpp48 行。

◆ sample_with_replacement

enum cudf::sample_with_replacement : bool
strong

指示一行是否可以被多次采样。

枚举器
FALSE 

一行只能被采样一次。

TRUE 

一行可以被多次采样。

定义位于文件 copying.hpp815 行。

函数文档

◆ allocate_like() [1/2]

创建一个与 input 大小和类型相同但未初始化的新列。

仅支持固定宽度类型。

如果 mask_alloc 分配了一个有效性掩码,该掩码也将未初始化,有效性位和空计数应由调用者设置。

异常
cudf::data_type_error如果输入类型不是固定宽度。
参数
输入输入列的不可变视图,用于模拟
mask_alloc可选,用于分配空掩码的策略。默认为 RETAIN
mr用于分配返回列设备内存的设备内存资源
stream用于设备内存操作和内核启动的 CUDA 流
返回
一个具有足够的未初始化容量的新列,可以容纳与 input 相同数量的元素,并且类型与 input.type() 相同

◆ allocate_like() [2/2]

创建一个指定大小且与 input 类型相同但未初始化的新列。

仅支持固定宽度类型。

如果 mask_alloc 分配了一个有效性掩码,该掩码也将未初始化,有效性位和空计数应由调用者设置。

参数
输入输入列的不可变视图,用于模拟
大小新列应具有容量的期望元素数量
mask_alloc可选,用于分配空掩码的策略。默认为 RETAIN
stream用于设备内存操作和内核启动的 CUDA 流
mr用于分配返回列设备内存的设备内存资源
返回
一个具有足够的未初始化容量的新列,可以容纳指定数量的元素,并且类型与 inputinput.type() 相同

◆ copy_if_else() [1/4]

std::unique_ptr<column> cudf::copy_if_else ( column_view const &  lhs,
column_view const &  rhs,
column_view const &  boolean_mask,
rmm::cuda_stream_view  stream = cudf::get_default_stream(),
rmm::device_async_resource_ref  mr = cudf::get_current_device_resource_ref() 
)

返回一个新列,其中每个元素根据 boolean_mask 中相应元素的值从 lhsrhs 中选择。

使用以下规则从 rhslhs 中选择输出列中的每个元素 i:output[i] = (boolean_mask.valid(i) and boolean_mask[i]) ? lhs[i] : rhs[i]

异常
cudf::data_type_error如果 lhs 和 rhs 类型不同
std::invalid_argument如果 lhs 和 rhs 长度不同
cudf::data_type_error如果布尔掩码不是 bool 类型
std::invalid_argument如果布尔掩码与 lhs 和 rhs 长度不同
参数
lhs左侧 column_view
rhs右侧 column_view
boolean_masktype_id::BOOL8 类型的列,表示每个元素的“左侧(真)/右侧(假)”布尔值。空元素表示假。
stream用于设备内存操作和内核启动的 CUDA 流
mr用于分配返回列设备内存的设备内存资源
返回
包含所选元素的新列

◆ copy_if_else() [2/4]

std::unique_ptr<column> cudf::copy_if_else ( column_view const &  lhs,
scalar const &  rhs,
column_view const &  boolean_mask,
rmm::cuda_stream_view  stream = cudf::get_default_stream(),
rmm::device_async_resource_ref  mr = cudf::get_current_device_resource_ref() 
)

返回一个新列,其中每个元素根据 boolean_mask 中相应元素的值从 lhsrhs 中选择。

使用以下规则从 rhslhs 中选择输出列中的每个元素 i:output[i] = (boolean_mask.valid(i) and boolean_mask[i]) ? lhs[i] : rhs

异常
cudf::data_type_error如果 lhs 和 rhs 类型不同
cudf::data_type_error如果布尔掩码不是 bool 类型
std::invalid_argument如果布尔掩码与 lhs 和 rhs 长度不同
参数
lhs左侧 column_view
rhs右侧 scalar
boolean_masktype_id::BOOL8 类型的列,表示每个元素的“左侧(真)/右侧(假)”布尔值。空元素表示假。
stream用于设备内存操作和内核启动的 CUDA 流
mr用于分配返回列设备内存的设备内存资源
返回
包含所选元素的新列

◆ copy_if_else() [3/4]

std::unique_ptr<column> cudf::copy_if_else ( scalar const &  lhs,
column_view const &  rhs,
column_view const &  boolean_mask,
rmm::cuda_stream_view  stream = cudf::get_default_stream(),
rmm::device_async_resource_ref  mr = cudf::get_current_device_resource_ref() 
)

返回一个新列,其中每个元素根据 boolean_mask 中相应元素的值从 lhsrhs 中选择。

使用以下规则从 rhslhs 中选择输出列中的每个元素 i:output[i] = (boolean_mask.valid(i) and boolean_mask[i]) ? lhs : rhs[i]

异常
cudf::data_type_error如果 lhs 和 rhs 类型不同
cudf::data_type_error如果布尔掩码不是 bool 类型
std::invalid_argument如果布尔掩码与 lhs 和 rhs 长度不同
参数
lhs左侧 scalar
rhs右侧 column_view
boolean_masktype_id::BOOL8 类型的列,表示每个元素的“左侧(真)/右侧(假)”布尔值。空元素表示假。
stream用于设备内存操作和内核启动的 CUDA 流
mr用于分配返回列设备内存的设备内存资源
返回
包含所选元素的新列

◆ copy_if_else() [4/4]

std::unique_ptr<column> cudf::copy_if_else ( scalar const &  lhs,
scalar const &  rhs,
column_view const &  boolean_mask,
rmm::cuda_stream_view  stream = cudf::get_default_stream(),
rmm::device_async_resource_ref  mr = cudf::get_current_device_resource_ref() 
)

返回一个新列,其中每个元素根据 boolean_mask 中相应元素的值从 lhsrhs 中选择。

使用以下规则从 rhslhs 中选择输出列中的每个元素 i:output[i] = (boolean_mask.valid(i) and boolean_mask[i]) ? lhs : rhs

异常
cudf::logic_error如果布尔掩码不是 bool 类型
参数
lhs左侧 scalar
rhs右侧 scalar
boolean_masktype_id::BOOL8 类型的列,表示每个元素的“左侧(真)/右侧(假)”布尔值。空元素表示假。
stream用于设备内存操作和内核启动的 CUDA 流
mr用于分配返回列设备内存的设备内存资源
返回
包含所选元素的新列

◆ copy_range()

std::unique_ptr<column> cudf::copy_range ( column_view const &  source,
column_view const &  target,
size_type const  源范围的起始索引,
size_type const  源范围的结束索引,
size_type const  目标范围的起始索引,
rmm::cuda_stream_view  stream = cudf::get_default_stream(),
rmm::device_async_resource_ref  mr = cudf::get_current_device_resource_ref() 
)

将一部分元素从一列复制到另一列(非原地)。

创建一个新列,就像在 target 中执行了原地复制一样。首先创建 target 的副本,然后将索引范围 [source_begin, source_end) 中 source 的元素复制到索引范围 [target_begin, target_begin + N) 中 (其中 N = (source_end - source_begin))。范围之外的元素则从 target 复制到返回的新列 target 中。

如果 sourcetarget 指代相同的元素且范围重叠,则行为未定义。

范围无效的情况包括

  • 起始或结束索引超出对应列的边界
  • 源或目标范围的起始大于结束
  • 源范围的大小从 target_begin 开始将超出目标列的容量
异常
std::out_of_range对于任何无效范围。
cudf::data_type_error如果 targetsource 类型不同。
cudf::data_type_error如果数据类型不是固定宽度、字符串或字典
参数
source范围内要复制的列
target范围外要复制的列
源范围的起始索引源范围的起始索引(包含)
源范围的结束索引源范围的最后一个元素的索引(不包含)
目标范围的起始索引目标范围的起始索引(包含)
stream用于设备内存操作和内核启动的 CUDA 流
mr用于分配返回列设备内存的设备内存资源
返回
结果目标列

◆ copy_range_in_place()

void cudf::copy_range_in_place ( column_view const &  source,
mutable_column_view &target, target,
size_type const  源范围的起始索引,
size_type const  源范围的结束索引,
size_type const  目标范围的起始索引,
rmm::cuda_stream_view  stream = cudf::get_default_stream() 
)

将一部分元素从一列原地复制到另一列。

source 中索引范围 [source_begin, source_end) 的元素覆盖 target 中索引范围 [target_begin, target_begin + N) 的元素 (其中 N = (source_end - source_begin))。对于需要重新分配内存的情况,请使用返回 std::unique_ptr<column> 的非原地复制函数。例如,对于字符串列和其他变长类型。

如果 sourcetarget 指代相同的元素且范围重叠,则行为未定义。

异常
cudf::data_type_error如果需要重新分配内存(例如对于变长类型)。
std::out_of_range对于无效范围(如果 source_begin > source_end, source_begin < 0, source_begin >= source.size(), source_end > source.size(), target_begin < 0, target_begin >= target.size(), 或 target_begin + (source_end - source_begin) > target.size())。
cudf::data_type_error如果 targetsource 类型不同。
std::invalid_argument如果 source 包含 null 值而 target 不可为空。
参数
source要复制的列
target要复制到的预分配列
源范围的起始索引源范围的起始索引(包含)
源范围的结束索引源范围的最后一个元素的索引(不包含)
目标范围的起始索引目标范围的起始索引(包含)
stream用于设备内存操作和内核启动的 CUDA 流

◆ empty_like() [1/3]

std::unique_ptr<column> cudf::empty_like ( column_view const &  输入)

初始化并返回一个与 input 类型相同的空列。

参数
[in]输入输入列的不可变视图,用于模拟
返回
input 类型相同的空列

◆ empty_like() [2/3]

std::unique_ptr<column> cudf::empty_like ( scalar const &  输入)

初始化并返回一个与 input 类型相同的空列。

参数
[in]输入要模拟的 Scalar
返回
input 类型相同的空列

◆ empty_like() [3/3]

std::unique_ptr<table> cudf::empty_like ( table_view const &  input_table)

创建一个由空列组成的表,其类型与 input_table 中的列相同

创建 cudf::column 对象,但不为列的数据或位掩码分配任何底层设备内存。

参数
[in]input_table要模拟的输入表的不可变视图
返回
一个由空列组成的表,其类型与 input_table 中的列相同

◆ get_element()

std::unique_ptr<scalar> cudf::get_element ( column_view const &  输入,
size_type const  索引,
rmm::cuda_stream_view  stream = cudf::get_default_stream(),
rmm::device_async_resource_ref  mr = cudf::get_current_device_resource_ref() 
)

从列中获取指定索引处的元素。

警告
此函数开销较大(会调用内核启动)。因此,不建议在对性能敏感的代码或循环中使用它。
异常
std::out_of_range如果 index 不在范围 [0, input.size())
参数
输入用于获取元素的 Column view
索引input 中要获取元素的索引
stream用于设备内存操作和内核启动的 CUDA 流
mr用于分配返回 scalar 的设备内存的设备内存资源
返回
包含单个值的 Scalar

◆ has_nonempty_nulls()

bool cudf::has_nonempty_nulls ( column_view const &  输入,
rmm::cuda_stream_view  stream = cudf::get_default_stream() 
)

检查列或其后代是否包含非空 null 行。

注意
此函数是精确的。如果返回 true,则存在一个或多个非空 null 元素。

LIST 或 STRING 列可能包含标记为 null 的非空行。STRUCT 或 LIST 列可能包含具有非空 null 行的子列。其他类型的列被认为不可能包含非空 null 行。例如,固定宽度列没有“空”行的概念。

参数
输入要检查非空 null 行的列(及其后代)。
stream用于设备内存操作和内核启动的 CUDA 流
返回
true 如果列或其后代包含非空 null 行
false 如果列或其后代都不包含非空 null 行

◆ may_have_nonempty_nulls()

bool cudf::may_have_nonempty_nulls ( column_view const &  输入)

估计列或其后代 *可能* 包含非空 null 元素。

注意
此函数是近似的。
  • true: 非空 null 元素可能存在
  • false: 非空 null 元素肯定不存在

可能出现误报,但不会漏报。

与精确的 has_nonempty_nulls() 函数相比,此函数通常更高效。

复杂度

  • 最佳情况: O(count_descendants(input))
  • 最差情况: O(count_descendants(input)) * m, 其中 m 是最大后代中的行数
参数
输入要检查非空 null 行的列(及其后代)
返回
true 如果列或其后代包含 null 行
false 如果列或其后代都不包含 null 行

◆ purge_nonempty_nulls()

std::unique_ptr<column> cudf::purge_nonempty_nulls ( column_view const &  输入,
rmm::cuda_stream_view  stream = cudf::get_default_stream(),
rmm::device_async_resource_ref  mr = cudf::get_current_device_resource_ref() 
)

input 复制到输出中,同时清除列或其后代中的任何非空 null 行。

如果输入列不是复合类型(LIST/STRING/STRUCT/DICTIONARY),则输出将与输入相同。

清除操作仅直接应用于 LIST 和 STRING 列,但也会间接应用于 STRUCT/DICTIONARY 列,因为这些列可能包含 LIST 或 STRING 类型的子列。

示例

auto const lists = lists_column_wrapper<int32_t>{ {0,1}, {2,3}, {4,5} }.release();
cudf::set_null_mask(lists->null_mask(), 1, 2, false);
lists[1] 现在是 null,但 lists 子列仍然存储 `{2,3}`。
lists 列内容将是
有效性: 101
偏移量: [0, 2, 4, 6]
子列: [0, 1, 2, 3, 4, 5]
清除列表的 null 行内容后,列内容将是
有效性: 101
偏移量: [0, 2, 2, 4]
子列: [0, 1, 4, 5]
auto const strings = strings_column_wrapper{ "AB", "CD", "EF" }.release();
cudf::set_null_mask(strings->null_mask(), 1, 2, false);
strings[1] 现在是 null,但 strings 列仍然存储 `"CD"`。
lists 列内容将是
有效性: 101
偏移量: [0, 2, 4, 6]
子列: [A, B, C, D, E, F]
清除列表的 null 行内容后,列内容
将是
有效性: 101
偏移量: [0, 2, 2, 4]
子列: [A, B, E, F]
auto const lists = lists_column_wrapper<int32_t>{ {0,1}, {2,3}, {4,5} };
auto const structs = structs_column_wrapper{ {lists}, null_at(1) };
structs[1].child 现在是 null,但 lists 列仍然存储 `{2,3}`。
lists 列内容将是
有效性: 101
偏移量: [0, 2, 4, 6]
子列: [0, 1, 2, 3, 4, 5]
清除列表的 null 行内容后,列内容
将是
有效性: 101
偏移量: [0, 2, 2, 4]
子列: [0, 1, 4, 5]
参数
输入要检查和清除其 null 行的列
stream用于设备内存操作和内核启动的 CUDA 流
mr用于分配返回列设备内存的设备内存资源
返回
一个内容等同于 input 但已清除 null 行的新列

◆ reverse() [1/2]

std::unique_ptr<column> cudf::reverse ( column_view const &  source_column,
rmm::cuda_stream_view  stream = cudf::get_default_stream(),
rmm::device_async_resource_ref  mr = cudf::get_current_device_resource_ref() 
)

反转列中的元素。

创建一个与 source_column 相反的新列。示例

source = [4,5,6]
返回 = [6,5,4]
参数
source_column将要反转的列
stream用于设备内存操作和内核启动的 CUDA 流
mr用于分配返回表的设备内存的设备内存资源
返回
反转后的列

◆ reverse() [2/2]

std::unique_ptr<table> cudf::reverse ( table_view const &  source_table,
rmm::cuda_stream_view  stream = cudf::get_default_stream(),
rmm::device_async_resource_ref  mr = cudf::get_current_device_resource_ref() 
)

反转表中的行。

创建一个与 source_table 相反的新表。示例

source = [[4,5,6], [7,8,9], [10,11,12]]
返回 = [[6,5,4], [9,8,7], [12,11,10]]
参数
source_table将要反转的表
stream用于设备内存操作和内核启动的 CUDA 流
mr用于分配返回表的设备内存的设备内存资源
返回
反转后的表

◆ sample()

std::unique_ptr<table> cudf::sample ( table_view const &  输入,
size_type const  n,
sample_with_replacement  replacement = sample_with_replacement::FALSE,
int64_t const  seed = 0,
rmm::cuda_stream_view  stream = cudf::get_default_stream(),
rmm::device_async_resource_ref  mr = cudf::get_current_device_resource_ref() 
)

从给定的 input 中随机收集 n 个样本。

示例
input: {col1: {1, 2, 3, 4, 5}, col2: {6, 7, 8, 9, 10}}
n: 3
replacement: false
output: {col1: {3, 1, 4}, col2: {8, 6, 9}}
replacement: true
output: {col1: {3, 1, 1}, col2: {8, 6, 6}}
异常
cudf::logic_error如果 n > input.num_rows()replacement == FALSE。
cudf::logic_error如果 n < 0。
参数
输入要采样的表的视图
n期望从 input 中采样的非负样本数
replacement允许或不允许多次采样同一行
seed用于启动随机数生成器的种子值
stream用于设备内存操作和内核启动的 CUDA 流
mr用于分配返回表的设备内存的设备内存资源
返回
包含从 input 中采样的样本的表