列空值掩码#
- group 位掩码 操作
函数
-
size_type state_null_count(mask_state state, size_type size)#
返回表示
size
个元素的指定state
的空值掩码的空值计数。- 抛出:
std::invalid_argument – 如果 state 是 UNINITIALIZED
- 参数:
state – 空值掩码的状态
size – 掩码表示的元素数量
- 返回:
空元素的数量
-
std::size_t bitmask_allocation_size_bytes(size_type number_of_bits, std::size_t padding_boundary = 64)#
计算表示指定位数量所需的字节数,并考虑给定的填充边界。
注意
Arrow 规范要求空值位掩码使用 64B 填充边界。
- 参数:
number_of_bits – 需要表示的位数
padding_boundary – 返回值将向上舍入到该值的倍数
- 返回:
所需的字节数
-
size_type num_bitmask_words(size_type number_of_bits)#
返回表示指定位数量所需的
bitmask_type
单词数。与返回位掩码分配所需 *字节* 数(包括填充)的
bitmask_allocation_size_bytes
不同,此函数返回表示number_of_bits
所需的 *实际*bitmask_type
元素数量。当希望处理位掩码中的所有位并忽略填充/松弛位时,此函数非常有用。- 参数:
number_of_bits – 需要表示的位数
- 返回:
所需的
bitmask_type
元素数量
-
rmm::device_buffer create_null_mask(size_type size, mask_state state, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#
创建一个
device_buffer
,用作column
的空值指示位掩码。- 参数:
size – 掩码表示的元素数量
state – 掩码的期望状态
stream – 用于设备内存操作和内核启动的 CUDA 流
mr – 用于分配返回的 device_buffer 的设备内存资源
- 返回:
一个
device_buffer
,用作满足期望大小和状态的空值位掩码
-
void set_null_mask(bitmask_type *bitmask, size_type begin_bit, size_type end_bit, bool valid, rmm::cuda_stream_view stream = cudf::get_default_stream())#
将预分配的位掩码缓冲区在范围
[begin_bit, end_bit)
内设置为给定状态如果
valid==true
,将位掩码的[begin_bit, end_bit)
位设置为有效;否则设置为 null。- 参数:
bitmask – 指向位掩码的指针(例如,由
column_viewnull_mask()
返回)begin_bit – 要设置的第一个位的索引(包含)
end_bit – 要设置的最后一个位的索引(不包含)
valid – 如果为 true,则将所有条目设置为有效;否则,将所有条目设置为 null
stream – 用于设备内存操作和内核启动的 CUDA 流
-
rmm::device_buffer copy_bitmask(bitmask_type const *mask, 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)
定义的位掩码切片创建一个device_buffer
。如果
bitmask == nullptr
,则返回空的device_buffer
。- 抛出:
cudf::logic_error – 如果
begin_bit > end_bit
cudf::logic_error – 如果
begin_bit < 0
- 参数:
mask – 驻留在设备内存中的位掩码,其位将被复制
begin_bit – 要复制的第一个位的索引(包含)
end_bit – 要复制的最后一个位的索引(不包含)
stream – 用于设备内存操作和内核启动的 CUDA 流
mr – 用于分配返回的 device_buffer 的设备内存资源
- 返回:
一个
device_buffer
,包含从mask
中复制的[begin_bit, end_bit)
范围内的位。
-
rmm::device_buffer copy_bitmask(column_view const &view, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#
将
view
的位掩码从位[view.offset(), view.offset() + view.size())
复制到device_buffer
如果列不可为空,则返回空的
device_buffer
- 参数:
view – 需要复制位掩码的列视图
stream – 用于设备内存操作和内核启动的 CUDA 流
mr – 用于分配返回的 device_buffer 的设备内存资源
- 返回:
一个
device_buffer
,包含从view
的位掩码中复制的[view.offset(), view.offset() + view.size())
范围内的位。
-
std::pair<rmm::device_buffer, size_type> bitmask_and(table_view const &view, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#
对表中各列的位掩码执行按位 AND 操作。返回结果掩码和未设置位的计数组成的对。
如果任一列不可为空,则认为其全部有效。如果表中没有列可为空,则返回空的位掩码。
- 参数:
view – 列的表
stream – 用于设备内存操作和内核启动的 CUDA 流
mr – 用于分配返回的 device_buffer 的设备内存资源
- 返回:
结果位掩码和未设置位的计数组成的对
-
std::pair<rmm::device_buffer, size_type> bitmask_or(table_view const &view, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#
对表中各列的位掩码执行按位 OR 操作。返回结果掩码和未设置位的计数组成的对。
如果任一列不可为空,则认为其全部有效。如果表中没有列可为空,则返回空的位掩码。
- 参数:
view – 列的表
stream – 用于设备内存操作和内核启动的 CUDA 流
mr – 用于分配返回的 device_buffer 的设备内存资源
- 返回:
结果位掩码和未设置位的计数组成的对
-
cudf::size_type null_count(bitmask_type const *bitmask, size_type start, size_type stop, rmm::cuda_stream_view stream = cudf::get_default_stream())#
给定一个有效性位掩码,计算范围
[start, stop)
中空元素(未设置位)的数量。如果
bitmask == nullptr
,则假定所有元素都有效,函数返回 ``。- 抛出:
cudf::logic_error – 如果
start > stop
cudf::logic_error – 如果
start < 0
- 参数:
bitmask – 驻留在设备内存中的有效性位掩码。
start – 要计数的第一个位的索引(包含)。
stop – 要计数的最后一个位的索引(不包含)。
stream – 用于设备内存操作和内核启动的 CUDA 流
- 返回:
指定范围内的空元素数量。
-
size_type state_null_count(mask_state state, size_type size)#