文件 | |
文件 | contiguous_split.hpp |
用于 contiguous_split、pack、unpack 和 metadata 的 Table API。 | |
文件 | contiguous_split.hpp |
用于 contiguous_split、pack、unpack 和 metadata 的 Table API。 | |
文件 | copying.hpp |
用于 gather、scatter、split、slice 等操作的 Column API。 | |
类 | |
结构体 | cudf::packed_columns |
序列化格式的列数据。更多... | |
结构体 | cudf::packed_table |
cudf::contiguous_split 的结果。更多... | |
类 | cudf::chunked_pack |
使用用户提供的 user_buffer_size 大小的缓冲区对输入的 table_view 执行分块的 "pack" 操作。更多... | |
std::vector<packed_table> cudf::contiguous_split | ( | cudf::table_view const & | input, |
std::vector< size_type > const & | splits, | ||
rmm::cuda_stream_view | stream = cudf::get_default_stream() , |
||
rmm::device_async_resource_ref | mr = cudf::get_current_device_resource_ref() |
||
) |
对 table_view
执行深拷贝分割,分割结果是一个 packed_table
向量,其中每个 packed_table
使用单个连续内存块存储所有分割出的列数据。
输出视图的内存分配在 packed_table 中返回的单个连续 rmm::device_buffer 中。没有顶层拥有者 table。
返回的 input
视图是根据一组索引向量构造的,这些索引指示每个分割点的位置。第 i 个返回的 table_view
切片方式如下:如果 i=0,则为 [0, splits[i])
;如果 i 是最后一个视图,则为 [splits[i], input.size())
;否则为 [splits[i-1], splits[i]]
。
对于所有 i
,splits[i] <= splits[i+1] <= input.size()
是预期的。对于大小为 N 的 splits
,输出将始终有 N+1 个分割。
all_data
字段中包含的 viewed 设备内存的生命周期。std::out_of_range | 如果 splits 的结束索引 > input 的大小。 |
std::out_of_range | 当 splits 中的值不在范围 [0, input.size()) 内时。 |
std::invalid_argument | 当 splits 中的值“严格递减”时。 |
input | 要分割的 table 的视图 |
splits | 视图将在此处分割的索引向量 |
stream | 用于设备内存操作和内核启动的 CUDA 流 |
mr | 用于所有返回的设备分配的可选内存资源 |
splits
指示的 input
请求视图集以及 viewed 内存缓冲区packed_columns cudf::pack | ( | 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() |
||
) |
将 table_view
深拷贝为序列化的连续内存格式。
table_view
的元数据被复制到 host 字节向量中,table_view
的数据被复制到 device_buffer
中。将此函数的输出传递给 cudf::unpack
进行反序列化。
input | 要打包的 table 的视图 |
stream | 用于设备内存操作和内核启动的 CUDA 流 |
mr | 用于所有返回的设备分配的可选内存资源 |
std::vector<uint8_t> cudf::pack_metadata | ( | table_view const & | table, |
uint8_t const * | contiguous_buffer, | ||
size_t | buffer_size | ||
) |
生成用于打包存储在连续缓冲区中的表的元数据。
table_view
的元数据被复制到 host 字节向量中,可用于构造 packed_columns
或 packed_table
结构。调用者有责任保证 table 中的所有列都指向 contiguous_buffer
。
table | 要打包的 table 的视图 |
contiguous_buffer | 一个连续的设备内存缓冲区,包含 table 中列引用的数据 |
buffer_size | contiguous_buffer 的大小 |
unpack
packed_columns 结构体的元数据的字节向量std::vector<column_view> cudf::split | ( | column_view const & | input, |
host_span< size_type const > | splits, | ||
rmm::cuda_stream_view | stream = cudf::get_default_stream() |
||
) |
根据从预期分割点派生的一组索引,将 column_view
分割为一组 column_view
。
返回的 input
视图是根据 splits
向量构造的,它指示分割应该发生的位置。第 i 个返回的 column_view
切片方式如下:如果 i=0,则为 [0, splits[i])
;如果 i 是最后一个视图,则为 [splits[i], input.size())
;否则为 [splits[i-1], splits[i]]
。
对于所有 i
,splits[i] <= splits[i+1] <= input.size()
是预期的。对于大小为 N 的 splits
,输出将始终有 N+1 个分割
std::out_of_range | 如果 splits 的结束索引 > input 的大小。 |
std::out_of_range | 当 splits 中的值不在范围 [0, input.size()) 内时。 |
std::invalid_argument | 当 splits 中的值“严格递减”时。 |
input | 要分割的 column 的视图 |
splits | 视图将在此处分割的索引 |
stream | 用于设备内存操作和内核启动的 CUDA 流 |
splits
指示的 input
请求视图集std::vector<column_view> cudf::split | ( | column_view const & | input, |
std::initializer_list< size_type > | splits, | ||
rmm::cuda_stream_view | stream = cudf::get_default_stream() |
||
) |
根据从预期分割点派生的一组索引,将 column_view
分割为一组 column_view
。
返回的 input
视图是根据 splits
向量构造的,它指示分割应该发生的位置。第 i 个返回的 column_view
切片方式如下:如果 i=0,则为 [0, splits[i])
;如果 i 是最后一个视图,则为 [splits[i], input.size())
;否则为 [splits[i-1], splits[i]]
。
对于所有 i
,splits[i] <= splits[i+1] <= input.size()
是预期的。对于大小为 N 的 splits
,输出将始终有 N+1 个分割
std::out_of_range | 如果 splits 的结束索引 > input 的大小。 |
std::out_of_range | 当 splits 中的值不在范围 [0, input.size()) 内时。 |
std::invalid_argument | 当 splits 中的值“严格递减”时。 |
input | 要分割的 column 的视图 |
splits | 视图将在此处分割的索引 |
stream | 用于设备内存操作和内核启动的 CUDA 流 |
splits
指示的 input
请求视图集std::vector<table_view> cudf::split | ( | table_view const & | input, |
host_span< size_type const > | splits, | ||
rmm::cuda_stream_view | stream = cudf::get_default_stream() |
||
) |
根据从预期分割点派生的一组索引,将 table_view
分割为一组 table_view
。
返回的 input
视图是根据 splits
向量构造的,它指示分割应该发生的位置。第 i 个返回的 table_view
切片方式如下:如果 i=0,则为 [0, splits[i])
;如果 i 是最后一个视图,则为 [splits[i], input.size())
;否则为 [splits[i-1], splits[i]]
。
对于所有 i
,splits[i] <= splits[i+1] <= input.size()
是预期的。对于大小为 N 的 splits
,输出将始终有 N+1 个分割
std::out_of_range | 如果 splits 的结束索引 > input 的大小。 |
std::out_of_range | 当 splits 中的值不在范围 [0, input.size()) 内时。 |
std::invalid_argument | 当 splits 中的值“严格递减”时。 |
input | 要分割的 table 的视图 |
splits | 视图将在此处分割的索引 |
stream | 用于设备内存操作和内核启动的 CUDA 流 |
splits
指示的 input
请求视图集std::vector<table_view> cudf::split | ( | table_view const & | input, |
std::initializer_list< size_type > | splits, | ||
rmm::cuda_stream_view | stream = cudf::get_default_stream() |
||
) |
根据从预期分割点派生的一组索引,将 table_view
分割为一组 table_view
。
返回的 input
视图是根据 splits
向量构造的,它指示分割应该发生的位置。第 i 个返回的 table_view
切片方式如下:如果 i=0,则为 [0, splits[i])
;如果 i 是最后一个视图,则为 [splits[i], input.size())
;否则为 [splits[i-1], splits[i]]
。
对于所有 i
,splits[i] <= splits[i+1] <= input.size()
是预期的。对于大小为 N 的 splits
,输出将始终有 N+1 个分割
std::out_of_range | 如果 splits 的结束索引 > input 的大小。 |
std::out_of_range | 当 splits 中的值不在范围 [0, input.size()) 内时。 |
std::invalid_argument | 当 splits 中的值“严格递减”时。 |
input | 要分割的 table 的视图 |
splits | 视图将在此处分割的索引 |
stream | 用于设备内存操作和内核启动的 CUDA 流 |
splits
指示的 input
请求视图集table_view cudf::unpack | ( | packed_columns const & | input | ) |
反序列化 cudf::pack
的结果。
将序列化 table 的结果转换为 table_view
,该视图指向 input
中包含的连续设备缓冲区中存储的数据。
调用者有责任确保输出中的 table_view
不会超出输入中数据的生命周期。
此函数中不会分配新的设备内存。
input | 要解包的 packed columns |
table_view
table_view cudf::unpack | ( | uint8_t const * | metadata, |
uint8_t const * | gpu_data | ||
) |
反序列化 cudf::pack
的结果。
使用 host 缓冲区 metadata
中包含的元数据,将序列化 table 的结果转换为 table_view
,该视图指向 gpu_data
中包含的连续设备缓冲区中存储的数据。
调用者有责任确保输出中的 table_view
不会超出输入中数据的生命周期。
此函数中不会分配新的设备内存。
metadata | 初始 pack() 调用产生的 host 端元数据缓冲区 |
gpu_data | device 端连续缓冲区,存储将由结果 table_view 引用的数据 |
table_view