公共类型 | 公共成员函数 | 所有成员列表
rmm::mr::cuda_async_memory_resource 类参考final

device_memory_resource 派生类,使用 cudaMallocAsync/cudaFreeAsync 进行分配/释放。 更多...

#include <cuda_async_memory_resource.hpp>

rmm::mr::cuda_async_memory_resource 的继承图
Inheritance graph
[图例]
rmm::mr::cuda_async_memory_resource 的协作图
Collaboration graph
[图例]

公共类型

enum class  allocation_handle_type {
  none = 0x0 , posix_file_descriptor = 0x1 , win32 = 0x2 , win32_kmt = 0x4 ,
  fabric = 0x8
}
 用于指定内存分配句柄类型的标志。 更多...
 

公共成员函数

 cuda_async_memory_resource (std::optional< std::size_t > initial_pool_size={}, std::optional< std::size_t > release_threshold={}, std::optional< allocation_handle_type > export_handle_type={})
 构造一个 cuda_async_memory_resource,并可选择指定初始池大小和释放阈值。 更多...
 
cudaMemPool_t pool_handle () const noexcept
 返回基础的 CUDA 池原生句柄。 更多...
 
 cuda_async_memory_resource (cuda_async_memory_resource const &)=delete
 
 cuda_async_memory_resource (cuda_async_memory_resource &&)=delete
 
cuda_async_memory_resourceoperator= (cuda_async_memory_resource const &)=delete
 
cuda_async_memory_resourceoperator= (cuda_async_memory_resource &&)=delete
 
- 从 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{})
 释放 p 指向的内存。 更多...
 
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)
 释放 p 指向的内存。 更多...
 
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)
 释放 p 指向的内存。 更多...
 
void deallocate_async (void *ptr, std::size_t bytes, cuda_stream_view stream)
 释放 p 指向的内存。 更多...
 
bool operator== (device_memory_resource const &other) const noexcept
 与另一个 device_memory_resource 的比较运算符。 更多...
 
bool operator!= (device_memory_resource const &other) const noexcept
 与另一个 device_memory_resource 的比较运算符。 更多...
 

详细描述

device_memory_resource 派生类,使用 cudaMallocAsync/cudaFreeAsync 进行分配/释放。

成员枚举文档

◆ allocation_handle_type

用于指定内存分配句柄类型的标志。

注意
这些值完全复制自 cudaMemAllocationHandleType。我们需要在此处定义自己的枚举,因为支持异步内存池的最早 CUDA 运行时版本 (CUDA 11.2) 不支持这些标志,所以我们需要一个占位符,以便在 cuda_async_memory_resource 的构造函数中与所有 CUDA 版本 >= 11.2 保持一致使用。请参阅 https://docs.nvda.net.cn/cuda/cuda-runtime-api/group__CUDART__TYPES.html 上的 cudaMemAllocationHandleType 文档,并确保枚举值与 CUDA 文档保持同步。
枚举项
none 

不允许任何导出机制。

posix_file_descriptor 

允许使用文件描述符进行导出。仅允许在 POSIX 系统上使用。

win32 

允许使用 Win32 NT 句柄进行导出。(HANDLE)

win32_kmt 

允许使用 Win32 KMT 句柄进行导出。(D3DKMT_HANDLE)

fabric 

允许使用 fabric 句柄进行导出。(cudaMemFabricHandle_t)

构造函数和析构函数文档

◆ cuda_async_memory_resource()

rmm::mr::cuda_async_memory_resource::cuda_async_memory_resource ( std::optional< std::size_t >  initial_pool_size = {},
std::optional< std::size_t >  release_threshold = {},
std::optional< allocation_handle_type export_handle_type = {} 
)
inline

构造一个 cuda_async_memory_resource,并可选择指定初始池大小和释放阈值。

如果池大小超出释放阈值,则池持有的未使用内存将在下一次同步事件时释放。

异常
rmm::logic_error如果 CUDA 版本不支持 cudaMallocAsync
参数
initial_pool_size池的可选初始大小(字节)。如果未提供值,则初始池大小为可用 GPU 内存的一半。
release_threshold池的可选释放阈值大小(字节)。如果未提供值,则释放阈值设置为当前设备的总内存量。
export_handle_type可选的 cudaMemAllocationHandleType,指定从此资源进行的分配应支持进程间通信 (IPC)。默认值为 cudaMemHandleTypeNone,表示不支持 IPC。

成员函数文档

◆ pool_handle()

cudaMemPool_t rmm::mr::cuda_async_memory_resource::pool_handle ( ) const
inlinenoexcept

返回基础的 CUDA 池原生句柄。

返回值
cudaMemPool_t 基础 CUDA 池的句柄

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