列空值掩码#

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:
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:
Parameters:
  • bitmask – 位于设备内存中的有效性位掩码。

  • start – 开始计数的第一个位的索引(包含)。

  • stop – 要计数的最后一位的索引(不包括在内)。

  • stream – 用于设备内存操作和内核启动的CUDA流

Returns:

指定范围内的空元素数量。