文件 | |
| 文件 | 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 | 用于分配返回列的设备内存的设备内存资源 |