公共成员函数 | 静态公共属性 | 所有成员列表
rmm::mr::aligned_resource_adaptor< Upstream > 类模板参考final

Upstream 内存资源适配为在指定的对齐大小下分配内存的资源。 更多...

#include <aligned_resource_adaptor.hpp>

rmm::mr::aligned_resource_adaptor< Upstream > 的继承图
Inheritance graph
[图例]
rmm::mr::aligned_resource_adaptor< Upstream > 的协作图
Collaboration graph
[图例]

公共成员函数

 aligned_resource_adaptor (device_async_resource_ref upstream, std::size_t alignment=rmm::CUDA_ALLOCATION_ALIGNMENT, std::size_t alignment_threshold=default_alignment_threshold)
 构造一个 aligned resource adaptor,使用 upstream 来满足分配请求。 更多...
 
 aligned_resource_adaptor (Upstream *upstream, std::size_t alignment=rmm::CUDA_ALLOCATION_ALIGNMENT, std::size_t alignment_threshold=default_alignment_threshold)
 构造一个 aligned resource adaptor,使用 upstream 来满足分配请求。 更多...
 
 aligned_resource_adaptor (aligned_resource_adaptor const &)=delete
 
 aligned_resource_adaptor (aligned_resource_adaptor &&)=delete
 
aligned_resource_adaptoroperator= (aligned_resource_adaptor const &)=delete
 
aligned_resource_adaptoroperator= (aligned_resource_adaptor &&)=delete
 
rmm::device_async_resource_ref get_upstream_resource () const noexcept
 指向 upstream 资源的 rmm::device_async_resource_ref。 更多...
 
- 从 rmm::mr::device_memory_resource 继承的公共成员函数
 device_memory_resource (device_memory_resource const &)=default
 默认复制构造函数。
 
 device_memory_resource (device_memory_resource &&) noexcept=default
 默认移动构造函数。
 
device_memory_resourceoperator= (device_memory_resource const &)=default
 默认复制赋值运算符。 更多...
 
device_memory_resourceoperator= (device_memory_resource &&) noexcept=default
 默认移动赋值运算符。 更多...
 
void * allocate (std::size_t bytes, cuda_stream_view stream=cuda_stream_view{})
 分配至少 bytes 大小的内存。 更多...
 
void deallocate (void *ptr, std::size_t bytes, cuda_stream_view stream=cuda_stream_view{})
 解除分配由 ptr 指向的内存。 更多...
 
bool is_equal (device_memory_resource const &other) const noexcept
 将此资源与另一个资源进行比较。 更多...
 
void * allocate (std::size_t bytes, std::size_t alignment)
 分配至少 bytes 大小的内存。 更多...
 
void deallocate (void *ptr, std::size_t bytes, std::size_t alignment)
 解除分配由 ptr 指向的内存。 更多...
 
void * allocate_async (std::size_t bytes, std::size_t alignment, cuda_stream_view stream)
 分配至少 bytes 大小的内存。 更多...
 
void * allocate_async (std::size_t bytes, cuda_stream_view stream)
 分配至少 bytes 大小的内存。 更多...
 
void deallocate_async (void *ptr, std::size_t bytes, std::size_t alignment, cuda_stream_view stream)
 解除分配由 ptr 指向的内存。 更多...
 
void deallocate_async (void *ptr, std::size_t bytes, cuda_stream_view stream)
 解除分配由 ptr 指向的内存。 更多...
 
bool operator== (device_memory_resource const &other) const noexcept
 与另一个 device_memory_resource 的比较运算符。 更多...
 
bool operator!= (device_memory_resource const &other) const noexcept
 与另一个 device_memory_resource 的比较运算符。 更多...
 

静态公共属性

static constexpr std::size_t default_alignment_threshold = 0
 适配器使用的默认对齐方式。
 

详细说明

template<typename Upstream>
class rmm::mr::aligned_resource_adaptor< Upstream >

Upstream 内存资源适配为在指定的对齐大小下分配内存的资源。

此资源的实例可以使用现有的上游资源构造,以满足分配请求。此适配器使用给定的对齐大小封装来自 Upstream 的分配和解除分配操作。

默认情况下,CUDA 驱动程序或运行时 API 的任何内存分配例程返回的任何地址始终至少对齐 256 字节。对于某些用例,例如 GPUDirect Storage (GDS),分配需要对齐到更大的大小(GDS 为 4 KiB),以避免额外复制到跳板缓冲区。

由于更大的对齐大小会带来一些额外的开销,用户可以指定一个阈值大小。如果分配的大小低于阈值,它将对齐到默认大小。只有大小高于阈值的分配才会对齐到自定义的对齐大小。

模板参数
Upstream用于分配/解除分配的上游资源的类型。

构造函数与析构函数文档

◆ aligned_resource_adaptor() [1/2]

template<typename Upstream >
rmm::mr::aligned_resource_adaptor< Upstream >::aligned_resource_adaptor ( device_async_resource_ref  upstream,
std::size_t  alignment = rmm::CUDA_ALLOCATION_ALIGNMENT,
std::size_t  alignment_threshold = default_alignment_threshold 
)
inlineexplicit

构造一个 aligned resource adaptor,使用 upstream 来满足分配请求。

异常
rmm::logic_error如果 allocation_alignment 不是 2 的幂
参数
upstream用于分配/解除分配设备内存的资源。
alignment用于分配对齐的大小。
alignment_threshold只有大小大于或等于此阈值的分配才进行对齐。

◆ aligned_resource_adaptor() [2/2]

template<typename Upstream >
rmm::mr::aligned_resource_adaptor< Upstream >::aligned_resource_adaptor ( Upstream *  upstream,
std::size_t  alignment = rmm::CUDA_ALLOCATION_ALIGNMENT,
std::size_t  alignment_threshold = default_alignment_threshold 
)
inlineexplicit

构造一个 aligned resource adaptor,使用 upstream 来满足分配请求。

异常
rmm::logic_error如果 upstream == nullptr
rmm::logic_error如果 alignment 不是 2 的幂
参数
upstream用于分配/解除分配设备内存的资源。
alignment用于分配对齐的大小。
alignment_threshold只有大小大于或等于此阈值的分配才进行对齐。

成员函数文档

◆ get_upstream_resource()

template<typename Upstream >
rmm::device_async_resource_ref rmm::mr::aligned_resource_adaptor< Upstream >::get_upstream_resource ( ) const
inlinenoexcept

指向 upstream 资源的 rmm::device_async_resource_ref

返回值
指向 upstream 资源的 rmm::device_async_resource_ref

此类的文档生成自以下文件