文件 | | 函数
分割

文件

文件  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_tablecudf::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_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 深拷贝为序列化的连续内存格式。更多...
 
std::vector< uint8_t > cudf::pack_metadata (table_view const &table, uint8_t const *contiguous_buffer, size_t buffer_size)
 生成用于打包存储在连续缓冲区中的表的元数据。更多...
 
table_view cudf::unpack (packed_columns const &input)
 反序列化 cudf::pack 的结果。更多...
 
table_view cudf::unpack (uint8_t const *metadata, uint8_t const *gpu_data)
 反序列化 cudf::pack 的结果。更多...
 
std::vector< column_viewcudf::split (column_view const &input, host_span< size_type const > splits, rmm::cuda_stream_view stream=cudf::get_default_stream())
 根据从预期分割点派生的一组索引,将 column_view 分割为一组 column_view更多...
 
std::vector< column_viewcudf::split (column_view const &input, std::initializer_list< size_type > splits, rmm::cuda_stream_view stream=cudf::get_default_stream())
 根据从预期分割点派生的一组索引,将 column_view 分割为一组 column_view更多...
 
std::vector< table_viewcudf::split (table_view const &input, host_span< size_type const > splits, rmm::cuda_stream_view stream=cudf::get_default_stream())
 根据从预期分割点派生的一组索引,将 table_view 分割为一组 table_view更多...
 
std::vector< table_viewcudf::split (table_view const &input, std::initializer_list< size_type > splits, rmm::cuda_stream_view stream=cudf::get_default_stream())
 根据从预期分割点派生的一组索引,将 table_view 分割为一组 table_view更多...
 

详细描述

函数文档

◆ contiguous_split()

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]]

对于所有 isplits[i] <= splits[i+1] <= input.size() 是预期的。对于大小为 N 的 splits,输出将始终有 N+1 个分割。

注意
调用者有责任确保返回的视图不会超出返回的 packed_tableall_data 字段中包含的 viewed 设备内存的生命周期。
示例
输入: [{10, 12, 14, 16, 18, 20, 22, 24, 26, 28},
{50, 52, 54, 56, 58, 60, 62, 64, 66, 68}]
分割点: {2, 5, 9}
输出: [{{10, 12}, {14, 16, 18}, {20, 22, 24, 26}, {28}},
{{50, 52}, {54, 56, 58}, {60, 62, 64, 66}, {68}}]
异常
std::out_of_range如果 splits 的结束索引 > input 的大小。
std::out_of_rangesplits 中的值不在范围 [0, input.size()) 内时。
std::invalid_argumentsplits 中的值“严格递减”时。
参数
input要分割的 table 的视图
splits视图将在此处分割的索引向量
stream用于设备内存操作和内核启动的 CUDA 流
mr用于所有返回的设备分配的可选内存资源
返回值
splits 指示的 input 请求视图集以及 viewed 内存缓冲区

◆ pack()

table_view 深拷贝为序列化的连续内存格式。

table_view 的元数据被复制到 host 字节向量中,table_view 的数据被复制到 device_buffer 中。将此函数的输出传递给 cudf::unpack 进行反序列化。

参数
input要打包的 table 的视图
stream用于设备内存操作和内核启动的 CUDA 流
mr用于所有返回的设备分配的可选内存资源
返回值
packed_columns 一个结构体,分别包含连续的 host 和 device 内存中的序列化元数据和数据

◆ pack_metadata()

std::vector<uint8_t> cudf::pack_metadata ( table_view const &  table,
uint8_t const *  contiguous_buffer,
size_t  buffer_size 
)

生成用于打包存储在连续缓冲区中的表的元数据。

table_view 的元数据被复制到 host 字节向量中,可用于构造 packed_columnspacked_table 结构。调用者有责任保证 table 中的所有列都指向 contiguous_buffer

参数
table要打包的 table 的视图
contiguous_buffer一个连续的设备内存缓冲区,包含 table 中列引用的数据
buffer_sizecontiguous_buffer 的大小
返回值
表示用于 unpack packed_columns 结构体的元数据的字节向量

◆ split() [1/4]

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]]

对于所有 isplits[i] <= splits[i+1] <= input.size() 是预期的。对于大小为 N 的 splits,输出将始终有 N+1 个分割

注意
调用者有责任确保返回的视图不会超出 viewed 设备内存的生命周期。
示例
输入: {10, 12, 14, 16, 18, 20, 22, 24, 26, 28}
分割点: {2, 5, 9}
输出: {{10, 12}, {14, 16, 18}, {20, 22, 24, 26}, {28}}
异常
std::out_of_range如果 splits 的结束索引 > input 的大小。
std::out_of_rangesplits 中的值不在范围 [0, input.size()) 内时。
std::invalid_argumentsplits 中的值“严格递减”时。
参数
input要分割的 column 的视图
splits视图将在此处分割的索引
stream用于设备内存操作和内核启动的 CUDA 流
返回值
splits 指示的 input 请求视图集

◆ split() [2/4]

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]]

对于所有 isplits[i] <= splits[i+1] <= input.size() 是预期的。对于大小为 N 的 splits,输出将始终有 N+1 个分割

注意
调用者有责任确保返回的视图不会超出 viewed 设备内存的生命周期。
示例
输入: {10, 12, 14, 16, 18, 20, 22, 24, 26, 28}
分割点: {2, 5, 9}
输出: {{10, 12}, {14, 16, 18}, {20, 22, 24, 26}, {28}}
异常
std::out_of_range如果 splits 的结束索引 > input 的大小。
std::out_of_rangesplits 中的值不在范围 [0, input.size()) 内时。
std::invalid_argumentsplits 中的值“严格递减”时。
参数
input要分割的 column 的视图
splits视图将在此处分割的索引
stream用于设备内存操作和内核启动的 CUDA 流
返回值
splits 指示的 input 请求视图集

◆ split() [3/4]

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]]

对于所有 isplits[i] <= splits[i+1] <= input.size() 是预期的。对于大小为 N 的 splits,输出将始终有 N+1 个分割

注意
调用者有责任确保返回的视图不会超出 viewed 设备内存的生命周期。
示例
输入: [{10, 12, 14, 16, 18, 20, 22, 24, 26, 28},
{50, 52, 54, 56, 58, 60, 62, 64, 66, 68}]
分割点: {2, 5, 9}
输出: [{{10, 12}, {14, 16, 18}, {20, 22, 24, 26}, {28}},
{{50, 52}, {54, 56, 58}, {60, 62, 64, 66}, {68}}]
异常
std::out_of_range如果 splits 的结束索引 > input 的大小。
std::out_of_rangesplits 中的值不在范围 [0, input.size()) 内时。
std::invalid_argumentsplits 中的值“严格递减”时。
参数
input要分割的 table 的视图
splits视图将在此处分割的索引
stream用于设备内存操作和内核启动的 CUDA 流
返回值
splits 指示的 input 请求视图集

◆ split() [4/4]

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]]

对于所有 isplits[i] <= splits[i+1] <= input.size() 是预期的。对于大小为 N 的 splits,输出将始终有 N+1 个分割

注意
调用者有责任确保返回的视图不会超出 viewed 设备内存的生命周期。
示例
输入: [{10, 12, 14, 16, 18, 20, 22, 24, 26, 28},
{50, 52, 54, 56, 58, 60, 62, 64, 66, 68}]
分割点: {2, 5, 9}
输出: [{{10, 12}, {14, 16, 18}, {20, 22, 24, 26}, {28}},
{{50, 52}, {54, 56, 58}, {60, 62, 64, 66}, {68}}]
异常
std::out_of_range如果 splits 的结束索引 > input 的大小。
std::out_of_rangesplits 中的值不在范围 [0, input.size()) 内时。
std::invalid_argumentsplits 中的值“严格递减”时。
参数
input要分割的 table 的视图
splits视图将在此处分割的索引
stream用于设备内存操作和内核启动的 CUDA 流
返回值
splits 指示的 input 请求视图集

◆ unpack() [1/2]

table_view cudf::unpack ( packed_columns const &  input)

反序列化 cudf::pack 的结果。

将序列化 table 的结果转换为 table_view,该视图指向 input 中包含的连续设备缓冲区中存储的数据。

调用者有责任确保输出中的 table_view 不会超出输入中数据的生命周期。

此函数中不会分配新的设备内存。

参数
input要解包的 packed columns
返回值
解包后的 table_view

◆ unpack() [2/2]

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_datadevice 端连续缓冲区,存储将由结果 table_view 引用的数据
返回值
解包后的 table_view