device_memory_resource
派生类,使用 cudaMallocAsync
/cudaFreeAsync
进行分配/释放。 更多...
#include <cuda_async_memory_resource.hpp>
公共类型 | |
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_resource & | operator= (cuda_async_memory_resource const &)=delete |
cuda_async_memory_resource & | operator= (cuda_async_memory_resource &&)=delete |
![]() | |
device_memory_resource (device_memory_resource const &)=default | |
默认复制构造函数。 | |
device_memory_resource (device_memory_resource &&) noexcept=default | |
默认移动构造函数。 | |
device_memory_resource & | operator= (device_memory_resource const &)=default |
默认复制赋值运算符。 更多... | |
device_memory_resource & | operator= (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
进行分配/释放。
用于指定内存分配句柄类型的标志。
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 文档保持同步。
|
inline |
构造一个 cuda_async_memory_resource,并可选择指定初始池大小和释放阈值。
如果池大小超出释放阈值,则池持有的未使用内存将在下一次同步事件时释放。
rmm::logic_error | 如果 CUDA 版本不支持 cudaMallocAsync |
initial_pool_size | 池的可选初始大小(字节)。如果未提供值,则初始池大小为可用 GPU 内存的一半。 |
release_threshold | 池的可选释放阈值大小(字节)。如果未提供值,则释放阈值设置为当前设备的总内存量。 |
export_handle_type | 可选的 cudaMemAllocationHandleType ,指定从此资源进行的分配应支持进程间通信 (IPC)。默认值为 cudaMemHandleTypeNone ,表示不支持 IPC。 |
|
inlinenoexcept |
返回基础的 CUDA 池原生句柄。