使用系统内存资源分配带预留空间的内存的资源。 更多...
#include <sam_headroom_memory_resource.hpp>


公有成员函数 | |
| sam_headroom_memory_resource (std::size_t headroom) | |
| 构造一个带预留空间的内存资源。 更多... | |
| sam_headroom_memory_resource (sam_headroom_memory_resource const &)=delete | |
| sam_headroom_memory_resource (sam_headroom_memory_resource &&)=delete | |
| sam_headroom_memory_resource & | operator= (sam_headroom_memory_resource const &)=delete |
| sam_headroom_memory_resource & | operator= (sam_headroom_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_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 的比较运算符。 更多... | |
使用系统内存资源分配带预留空间的内存的资源。
系统分配的内存(SAM)可以迁移到 GPU,但绝不会迁移回主机。如果 GPU 内存被超额订阅,这可能导致其他 CUDA 调用因内存不足错误而失败。为了解决此问题,在使用系统内存资源时,我们会预留一些 GPU 内存作为其他 CUDA 调用的预留空间 (headroom),并且只有在分配不会占用这部分预留空间时,才会条件性地将其首选位置设置为 GPU。
由于在每次分配时进行此检查可能开销很大,调用者可以选择对小额分配使用其他分配器(例如 binning_memory_resource),而仅对大额分配使用此分配器。
|
内联显式 |
构造一个带预留空间的内存资源。
| headroom | 预留的 GPU 内存作为预留空间 (headroom) 的大小 |