模块 | |
连接 | |
收集 | |
散布 | |
切片 | |
分割 | |
移位 | |
文件 | |
文件 | 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 } |
指示一行是否可以被多次采样。 更多... | |
|
strong |
指示何时根据现有掩码分配掩码。
枚举器 | |
---|---|
NEVER | 不分配空掩码,无论输入如何。 |
RETAIN | 如果输入包含空掩码,则分配一个。 |
ALWAYS | 分配空掩码,无论输入如何。 |
定义位于文件 copying.hpp 的 226 行。
|
strong |
用于处理可能越界索引的策略。
NULLIFY
表示将对应于越界 gather_map 值的输出值置空。DONT_CHECK
表示不检查索引是否越界,以获得更好的性能。
枚举器 | |
---|---|
NULLIFY | 对应于越界索引的输出值为 null。 |
DONT_CHECK | 不执行边界检查,性能更好。 |
定义位于文件 copying.hpp 的 48 行。
|
strong |
std::unique_ptr<column> cudf::allocate_like | ( | column_view const & | 输入, |
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
大小和类型相同但未初始化的新列。
仅支持固定宽度类型。
如果 mask_alloc
分配了一个有效性掩码,该掩码也将未初始化,有效性位和空计数应由调用者设置。
cudf::data_type_error | 如果输入类型不是固定宽度。 |
输入 | 输入列的不可变视图,用于模拟 |
mask_alloc | 可选,用于分配空掩码的策略。默认为 RETAIN |
mr | 用于分配返回列设备内存的设备内存资源 |
stream | 用于设备内存操作和内核启动的 CUDA 流 |
input
相同数量的元素,并且类型与 input.type()
相同std::unique_ptr<column> cudf::allocate_like | ( | column_view const & | 输入, |
size_type const | 大小, | ||
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
类型相同但未初始化的新列。
仅支持固定宽度类型。
如果 mask_alloc
分配了一个有效性掩码,该掩码也将未初始化,有效性位和空计数应由调用者设置。
输入 | 输入列的不可变视图,用于模拟 |
大小 | 新列应具有容量的期望元素数量 |
mask_alloc | 可选,用于分配空掩码的策略。默认为 RETAIN |
stream | 用于设备内存操作和内核启动的 CUDA 流 |
mr | 用于分配返回列设备内存的设备内存资源 |
input
的 input.type()
相同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
中相应元素的值从 lhs
或 rhs
中选择。
使用以下规则从 rhs
或 lhs
中选择输出列中的每个元素 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_mask | type_id::BOOL8 类型的列,表示每个元素的“左侧(真)/右侧(假)”布尔值。空元素表示假。 |
stream | 用于设备内存操作和内核启动的 CUDA 流 |
mr | 用于分配返回列设备内存的设备内存资源 |
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
中相应元素的值从 lhs
或 rhs
中选择。
使用以下规则从 rhs
或 lhs
中选择输出列中的每个元素 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_mask | type_id::BOOL8 类型的列,表示每个元素的“左侧(真)/右侧(假)”布尔值。空元素表示假。 |
stream | 用于设备内存操作和内核启动的 CUDA 流 |
mr | 用于分配返回列设备内存的设备内存资源 |
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
中相应元素的值从 lhs
或 rhs
中选择。
使用以下规则从 rhs
或 lhs
中选择输出列中的每个元素 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_mask | type_id::BOOL8 类型的列,表示每个元素的“左侧(真)/右侧(假)”布尔值。空元素表示假。 |
stream | 用于设备内存操作和内核启动的 CUDA 流 |
mr | 用于分配返回列设备内存的设备内存资源 |
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
中相应元素的值从 lhs
或 rhs
中选择。
使用以下规则从 rhs
或 lhs
中选择输出列中的每个元素 i:output[i] = (boolean_mask.valid(i) and boolean_mask[i]) ? lhs : rhs
cudf::logic_error | 如果布尔掩码不是 bool 类型 |
lhs | 左侧 scalar |
rhs | 右侧 scalar |
boolean_mask | type_id::BOOL8 类型的列,表示每个元素的“左侧(真)/右侧(假)”布尔值。空元素表示假。 |
stream | 用于设备内存操作和内核启动的 CUDA 流 |
mr | 用于分配返回列设备内存的设备内存资源 |
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 中。
如果 source
和 target
指代相同的元素且范围重叠,则行为未定义。
范围无效的情况包括
std::out_of_range | 对于任何无效范围。 |
cudf::data_type_error | 如果 target 和 source 类型不同。 |
cudf::data_type_error | 如果数据类型不是固定宽度、字符串或字典 |
source | 范围内要复制的列 |
target | 范围外要复制的列 |
源范围的起始索引 | 源范围的起始索引(包含) |
源范围的结束索引 | 源范围的最后一个元素的索引(不包含) |
目标范围的起始索引 | 目标范围的起始索引(包含) |
stream | 用于设备内存操作和内核启动的 CUDA 流 |
mr | 用于分配返回列设备内存的设备内存资源 |
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> 的非原地复制函数。例如,对于字符串列和其他变长类型。
如果 source
和 target
指代相同的元素且范围重叠,则行为未定义。
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 | 如果 target 和 source 类型不同。 |
std::invalid_argument | 如果 source 包含 null 值而 target 不可为空。 |
source | 要复制的列 |
target | 要复制到的预分配列 |
源范围的起始索引 | 源范围的起始索引(包含) |
源范围的结束索引 | 源范围的最后一个元素的索引(不包含) |
目标范围的起始索引 | 目标范围的起始索引(包含) |
stream | 用于设备内存操作和内核启动的 CUDA 流 |
std::unique_ptr<column> cudf::empty_like | ( | column_view const & | 输入 | ) |
初始化并返回一个与 input
类型相同的空列。
[in] | 输入 | 输入列的不可变视图,用于模拟 |
input
类型相同的空列初始化并返回一个与 input
类型相同的空列。
[in] | 输入 | 要模拟的 Scalar |
input
类型相同的空列std::unique_ptr<table> cudf::empty_like | ( | table_view const & | input_table | ) |
创建一个由空列组成的表,其类型与 input_table
中的列相同
创建 cudf::column
对象,但不为列的数据或位掩码分配任何底层设备内存。
[in] | input_table | 要模拟的输入表的不可变视图 |
input_table
中的列相同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 的设备内存的设备内存资源 |
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 流 |
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 行的列(及其后代) |
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 类型的子列。
示例
输入 | 要检查和清除其 null 行的列 |
stream | 用于设备内存操作和内核启动的 CUDA 流 |
mr | 用于分配返回列设备内存的设备内存资源 |
input
但已清除 null 行的新列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_column | 将要反转的列 |
stream | 用于设备内存操作和内核启动的 CUDA 流 |
mr | 用于分配返回表的设备内存的设备内存资源 |
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_table | 将要反转的表 |
stream | 用于设备内存操作和内核启动的 CUDA 流 |
mr | 用于分配返回表的设备内存的设备内存资源 |
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
个样本。
cudf::logic_error | 如果 n > input.num_rows() 且 replacement == FALSE。 |
cudf::logic_error | 如果 n < 0。 |
输入 | 要采样的表的视图 |
n | 期望从 input 中采样的非负样本数 |
replacement | 允许或不允许多次采样同一行 |
seed | 用于启动随机数生成器的种子值 |
stream | 用于设备内存操作和内核启动的 CUDA 流 |
mr | 用于分配返回表的设备内存的设备内存资源 |
input
中采样的样本的表