文件 | |
文件 | transform.hpp |
用于行转换的列API。 | |
std::pair<std::unique_ptr<rmm::device_buffer>, cudf::size_type> cudf::bools_to_mask | ( | 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
中的元素 i
是 true
,则结果掩码中的位 i
被设置 (1
)。否则,如果元素 i
是 false
或 null,则位 i
被取消设置 (0
)。
cudf::logic_error | 如果 input.type() 不是布尔类型 |
input | 要转换为位掩码的布尔元素 |
stream | 用于设备内存操作和内核启动的CUDA流 |
mr | 用于分配返回的位掩码的设备内存资源 |
device_buffer
的对,其中包含新的位掩码及其从输入获得的 null 计数,其中考虑 true
表示 valid
/1
,false
表示 invalid
/0
。std::unique_ptr<column> cudf::compute_column | ( | table_view const & | table, |
ast::expression const & | expr, | ||
rmm::cuda_stream_view | stream = cudf::get_default_stream() , |
||
rmm::device_async_resource_ref | mr = cudf::get_current_device_resource_ref() |
||
) |
通过在表上计算表达式树来计算新列。
这会计算表上的表达式以生成新列。也称为 n 元转换。
cudf::logic_error | 如果传递了一个在 table_reference::RIGHT 上操作的表达式。 |
table | 用于表达式计算的表 |
expr | 表达式树的根 |
stream | 用于设备内存操作和内核启动的CUDA流 |
mr | 设备内存资源 |
std::pair<std::unique_ptr<cudf::table>, std::unique_ptr<cudf::column> > cudf::encode | ( | cudf::table_view const & | input, |
rmm::cuda_stream_view | stream = cudf::get_default_stream() , |
||
rmm::device_async_resource_ref | mr = cudf::get_current_device_resource_ref() |
||
) |
将给定表的行编码为整数。
编码的值是 [0, n) 范围内的整数,其中 n
是输入表中不同行的数量。结果表满足 keys[result[i]] == input[i]
,其中 keys
是一个包含 input
中不同行的表,按升序排列。Null(如果有)会排序到 keys
表的末尾。
示例
input | 包含要编码值的表 |
stream | 用于设备内存操作和内核启动的CUDA流 |
mr | 用于分配返回表的设备内存的设备内存资源 |
std::unique_ptr<column> cudf::mask_to_bools | ( | bitmask_type const * | bitmask, |
size_type | begin_bit, | ||
size_type | end_bit, | ||
rmm::cuda_stream_view | stream = cudf::get_default_stream() , |
||
rmm::device_async_resource_ref | mr = cudf::get_current_device_resource_ref() |
||
) |
从给定的位掩码创建布尔列。
返回 [begin_bit, end_bit)
中每个位的 bool
值。如果在最低有效位编号中的位 i
被设置 (1),则输出中的元素 i
为 true
,否则为 false
。
cudf::logic_error | 如果 bitmask 为 null 且 end_bit-begin_bit > 0 |
cudf::logic_error | 如果 begin_bit > end_bit |
示例
bitmask | 指向需要转换的位掩码的设备指针 |
begin_bit | 转换应从哪个位开始的位置 |
end_bit | 转换应在哪个位之前停止的位置 |
stream | 用于设备内存操作和内核启动的CUDA流 |
mr | 用于分配返回列的设备内存的设备内存资源 |
std::pair<std::unique_ptr<rmm::device_buffer>, size_type> cudf::nans_to_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() |
||
) |
通过将 NaN
转换为 null 并保留现有的 null 值,从 input
创建一个 null_mask,并返回新的 null 计数。
cudf::logic_error | 如果 input.type() 不是浮点类型 |
input | 输入浮点类型列的不可变视图 |
stream | 用于设备内存操作和内核启动的CUDA流 |
mr | 用于分配返回的位掩码的设备内存资源 |
device_buffer
的对,其中包含新的位掩码及其通过将 input
中的 NaN
替换为 null 获得的 null 计数。std::pair<std::unique_ptr<column>, table_view> cudf::one_hot_encode | ( | column_view const & | input, |
column_view const & | categories, | ||
rmm::cuda_stream_view | stream = cudf::get_default_stream() , |
||
rmm::device_async_resource_ref | mr = cudf::get_current_device_resource_ref() |
||
) |
通过为 categories
中的每个值生成一个新列来编码 input
,指示该值在 input
中的存在。
结果的每个类别列连接起来作为一个单一列返回,通过 table_view
查看。
如果 input[i] == categories[j]
,则输出表中第 j
列的第 i
行等于 1,否则为 0。
如果 input[i] == categories[j],则输出表中第 j 列的第 i 行等于 1,否则为 0。
示例
cudf::logic_error | 如果 input 和 categories 的类型不同。 |
input | 包含要编码值的列 |
categories | 包含类别的列 |
stream | 用于设备内存操作和内核启动的CUDA流 |
mr | 用于分配返回表的设备内存的设备内存资源 |
std::unique_ptr<column> cudf::row_bit_count | ( | table_view const & | t, |
rmm::cuda_stream_view | stream = cudf::get_default_stream() , |
||
rmm::device_async_resource_ref | mr = cudf::get_current_device_resource_ref() |
||
) |
返回 table_view
中所有列的每行的近似累计大小(以位为单位)。
此函数计算位而不是字节,以考虑 null 掩码,后者每行只有一个位。
返回列中的每一行是表中每列的每行大小的总和。
在某些情况下,这是一种不精确的近似。特别是列表和字符串列需要 N+1 个偏移量来表示 N 行。对于任何正在考虑的行组,计算终止偏移量的少量额外开销取决于调用者。
此函数返回列当前形成的每行大小。这可能最终大于通过聚集行获得的大小。具体来说,struct 列有效性掩码的下推可以使包含字符串或列表列数据的行无效。在这些情况下,返回的大小是保守的。
row_bit_count(column(x)) >= row_bit_count(gather(column(x)))
t | 要执行计算的表视图 |
stream | 用于设备内存操作和内核启动的CUDA流 |
mr | 用于分配返回列的设备内存的设备内存资源 |
std::unique_ptr<column> cudf::segmented_row_bit_count | ( | table_view const & | t, |
size_type | segment_length, | ||
rmm::cuda_stream_view | stream = cudf::get_default_stream() , |
||
rmm::device_async_resource_ref | mr = cudf::get_current_device_resource_ref() |
||
) |
返回 table_view
中所有列的每个行段的近似累计大小(以位为单位)。
这类似于在 cudf::row_bit_count
中计算输入表的每行位大小,不同之处在于行大小按段累积。
目前仅支持固定长度的段。如果输入表的行数不能被 segment_length
整除,则其最后一个段被认为比其他段短。
std::invalid_argument | 如果输入的 segment_length 非正数或大于输入表的行数。 |
t | 要执行计算的表视图 |
segment_length | 计算总大小的每个段中的行数 |
stream | 用于设备内存操作和内核启动的CUDA流 |
mr | 用于分配返回列的设备内存的设备内存资源 |
std::unique_ptr<column> cudf::transform | ( | std::vector< column_view > const & | inputs, |
std::string const & | transform_udf, | ||
data_type | output_type, | ||
bool | is_ptx, | ||
rmm::cuda_stream_view | stream = cudf::get_default_stream() , |
||
rmm::device_async_resource_ref | mr = cudf::get_current_device_resource_ref() |
||
) |
通过对输入列的每个元素应用转换函数来创建新列。
计算: out[i] = F(inputs[i]...)
。
注意,对于 inputs
中的每个标量(大小为 1 的列),input[i] == input[0]
输出 null 掩码与输入列的 null 掩码相同,因此如果 input[i] 为 null,则 output[i] 也为 null。结果列的大小是最大列的大小。所有输入列必须具有等效的 null 掩码。
inputs | 要转换的输入列的不可变视图 |
transform_udf | 要应用的转换函数的 PTX/CUDA 字符串 |
output_type | 与 UDF 中输出类型兼容的输出类型 |
is_ptx | true:UDF 被视为 PTX 代码;false:UDF 被视为 CUDA 代码 |
stream | 用于设备内存操作和内核启动的CUDA流 |
mr | 用于分配返回列的设备内存的设备内存资源 |