实用工具

group Utilities

函数

constexpr bool is_pow2(std::size_t value) noexcept

返回 value 是否为 2 的幂。

参数:

value[in] 要检查的值。

返回值:

如果输入值是 2 的非负整数次幂,则返回 true,否则返回 false。

constexpr bool is_supported_alignment(std::size_t alignment) noexcept

返回 alignment 是否为有效的内存对齐。

参数:

alignment[in] 要检查的对齐值

返回值:

如果对齐值有效,则返回 true,否则返回 false。

constexpr std::size_t align_up(std::size_t value, std::size_t alignment) noexcept

向上对齐到指定的 2 的幂的最近倍数。

参数:
  • value[in] 要对齐的值

  • alignment[in] 对齐量(字节),必须是 2 的幂

返回值:

对齐后的值

constexpr std::size_t align_down(std::size_t value, std::size_2 alignment) noexcept

向下对齐到指定的 2 的幂的最近倍数。

参数:
  • value[in] 要对齐的值

  • alignment[in] 对齐量(字节),必须是 2 的幂

返回值:

对齐后的值

constexpr bool is_aligned(std::size_t value, std::size_t alignment) noexcept

检查值是否对齐到指定的 2 的幂的倍数。

参数:
  • value[in] 要检查对齐的值

  • alignment[in] 对齐量(字节),必须是 2 的幂

返回值:

如果对齐则返回 true

inline bool is_pointer_aligned(void *ptr, std::size_t alignment = CUDA_ALLOCATION_ALIGNMENT) noexcept

检查提供的指针是否对齐到指定的 alignment

参数:
  • ptr[in] 要检查对齐的指针

  • alignment[in] 所需的字节对齐量,必须是 2 的幂

返回值:

如果指针对齐则返回 true

void prefetch(void const *ptr, std::size_t size, rmm::cuda_device_id device, rmm::cuda_stream_view stream)

将内存预取到指定设备上的指定流。

如果指针指向的不是 CUDA 管理内存,则此函数为空操作 (no-op)。

抛出:

rmm::cuda_error – 如果预取失败。

参数:
  • ptr – 要预取的内存指针

  • size – 要预取的字节数

  • device – 要预取到的设备

  • stream – 用于预取的流

template<typename T>
void prefetch(cuda::std::span<T const> data, rmm::cuda_device_id device, rmm::cuda_stream_view stream)

将一段内存 (span) 预取到指定设备上的指定流。

如果缓冲区不是由 CUDA 管理内存支持的,则此函数为空操作 (no-op)。

抛出:

rmm::cuda_error – 如果预取失败。

参数:
  • data – 要预取的内存段 (span)

  • device – 要预取到的设备

  • stream – 用于预取的流

变量

static constexpr std::size_t RMM_DEFAULT_HOST_ALIGNMENT = {alignof(std::max_align_t)}

RMM 分配主机内存时使用的默认对齐方式。

static constexpr std::size_t CUDA_ALLOCATION_ALIGNMENT = {256}

CUDA 内存分配时使用的默认对齐方式。