列空值掩码#

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

抛出:
参数:
  • 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,则假定所有元素都有效,函数返回 ``。

抛出:
参数:
  • bitmask – 驻留在设备内存中的有效性位掩码。

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

  • stop – 要计数的最后一个位的索引(不包含)。

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

返回:

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