列空值掩码#
- group column_nullmask
函数
-
size_type state_null_count(mask_state state, size_type size)#
返回表示
size元素的指定state的空掩码的空计数。- Throws:
std::invalid_argument – 如果状态是 UNINITIALIZED
- Parameters:
state – 空掩码的状态
size – 掩码表示的元素数量
- Returns:
空元素的数量
-
std::size_t bitmask_allocation_size_bytes(size_type number_of_bits, std::size_t padding_boundary = 64)#
计算表示指定位数所需的字节数,考虑给定的填充边界。
注意
Arrow规范要求空位掩码需要64B的填充边界。
- Parameters:
number_of_bits – 需要表示的位数
padding_boundary – 返回的值将向上舍入为此值的倍数
- Returns:
所需的字节数
-
size_type num_bitmask_words(size_type number_of_bits)#
返回表示指定位数所需的
bitmask_type字数。与
bitmask_allocation_size_bytes不同,它返回位掩码分配所需的字节数(包括填充),此函数返回表示number_of_bits所需的实际数量的bitmask_type元素。当希望处理位掩码中的所有位并忽略填充/松弛位时,这很有用。- Parameters:
number_of_bits – 需要表示的位数
- Returns:
所需的
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的空值指示位掩码。- Parameters:
size – 掩码表示的元素数量
state – 掩码的期望状态
stream – 用于设备内存操作和内核启动的CUDA流
mr – 用于分配返回的device_buffer的设备内存资源
- Returns:
一个
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)位设置为有效,否则设置为空。- Parameters:
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。- Throws:
cudf::logic_error – 如果
begin_bit > end_bitcudf::logic_error – 如果
begin_bit < 0
- Parameters:
mask – 位于设备内存中的位掩码,其位将被复制
begin_bit – 要复制的第一个位的索引(包含)
end_bit – 要复制的最后一位的索引(不包括)
stream – 用于设备内存操作和内核启动的CUDA流
mr – 用于分配返回的device_buffer的设备内存资源
- Returns:
一个包含来自
mask的位[begin_bit, end_bit)的device_buffer。
-
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- Parameters:
view – 需要复制其位掩码的列视图
stream – 用于设备内存操作和内核启动的CUDA流
mr – 用于分配返回的device_buffer的设备内存资源
- Returns:
一个包含来自
view位掩码的位[view.offset(), view.offset() + view.size())的device_buffer。
-
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())#
对表的列的位掩码执行按位与操作。返回结果掩码和未设置位的计数。
如果任何列不可为空,则认为所有列都有效。如果表中没有可为空的列,则返回一个空的位掩码。
- Parameters:
view – 列的表
stream – 用于设备内存操作和内核启动的CUDA流
mr – 用于分配返回的device_buffer的设备内存资源
- Returns:
一对结果位掩码和未设置位的计数
-
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())#
执行表列的位掩码的按位或操作。返回结果掩码和未设置位的计数对。
如果任何列不可为空,则认为所有列都有效。如果表中没有可为空的列,则返回一个空的位掩码。
- Parameters:
view – 列的表
stream – 用于设备内存操作和内核启动的CUDA流
mr – 用于分配返回的device_buffer的设备内存资源
- Returns:
一对结果位掩码和未设置位的计数
-
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,则假定所有元素都有效,函数返回 ``。- Throws:
cudf::logic_error – 如果
start > stopcudf::logic_error – 如果
start < 0
- Parameters:
bitmask – 位于设备内存中的有效性位掩码。
start – 开始计数的第一个位的索引(包含)。
stop – 要计数的最后一位的索引(不包括在内)。
stream – 用于设备内存操作和内核启动的CUDA流
- Returns:
指定范围内的空元素数量。
-
size_type state_null_count(mask_state state, size_type size)#