一个分配单个固定大小内存块的 device_memory_resource
。 更多...
#include <fixed_size_memory_resource.hpp>
静态公有属性 | |
static constexpr std::size_t | default_block_size = 1 << 20 |
默认分配块大小。 | |
static constexpr std::size_t | default_blocks_to_preallocate = 128 |
保护类型 | |
using | free_list = detail::fixed_size_free_list |
空闲列表类型。 | |
using | block_type = free_list::block_type |
由空闲列表管理的块类型。 | |
using | lock_guard = std::lock_guard< std::mutex > |
用于同步访问的锁类型。 | |
保护成员函数 | |
std::size_t | get_maximum_allocation_size () const |
获取此内存资源支持的(固定)分配大小。 更多... | |
block_type | expand_pool (std::size_t size, free_list &blocks, cuda_stream_view stream) |
从上游分配一个块来提供子分配池。 更多... | |
free_list | blocks_from_upstream (cuda_stream_view stream) |
从上游分配块以扩展子分配池。 更多... | |
split_block | allocate_from_block (block_type const &block, std::size_t size) |
如有必要,分割块以返回指向 `size` 字节内存的指针。 更多... | |
block_type | free_block (void *ptr, std::size_t size) noexcept |
查找、释放并返回与指针关联的块。 更多... | |
void | release () |
释放使用上游资源分配的所有内存。 | |
std::pair< std::size_t, std::size_t > | free_list_summary (free_list const &blocks) |
获取指定空闲列表中最大可用块大小和总空闲大小。 更多... | |
友元 | |
class | detail::stream_ordered_memory_resource< fixed_size_memory_resource< Upstream >, detail::fixed_size_free_list > |
一个分配单个固定大小内存块的 device_memory_resource
。
仅支持小于配置的 block_size
的分配。
|
内联显式 |
构造一个新的 fixed_size_memory_resource
,它从 upstream_mr
分配内存。
当块池完全分配后,通过从 upstream_mr
分配额外的 blocks_to_preallocate
块来增长池。
upstream_mr | 用于从其分配块到池中的 device_async_resource_ref。 |
block_size | 要分配的块的大小。 |
blocks_to_preallocate | 初始化池要分配的块数。 |
|
内联显式 |
构造一个新的 fixed_size_memory_resource
,它从 upstream_mr
分配内存。
当块池完全分配后,通过从 upstream_mr
分配额外的 blocks_to_preallocate
块来增长池。
upstream_mr | 用于从其分配块到池中的 memory_resource。 |
block_size | 要分配的块的大小。 |
blocks_to_preallocate | 初始化池要分配的块数。 |
|
内联保护 |
如有必要,分割块以返回指向 `size` 字节内存的指针。
如果块被分割,剩余部分将返回到池中。
block | 用于分配的块。 |
size | 请求分配的字节大小。 |
|
内联保护 |
从上游分配块以扩展子分配池。
stream | 将使用内存的流。 |
|
内联保护 |
从上游分配一个块来提供子分配池。
注意,通常分配的大小将大于请求的大小,并且基于增长策略(参见 size_to_grow()
)。
size | 要分配的最小大小 |
blocks | 用于分配的块集合 |
stream | 将使用内存的流。 |
|
内联保护noexcept |
查找、释放并返回与指针关联的块。
ptr | 要释放内存的指针。 |
size | 要释放内存的大小。必须等于原始分配大小。 |
|
内联保护 |
获取指定空闲列表中最大可用块大小和总空闲大小。
这仅用于调试
blocks | 用于返回摘要的空闲列表 |
|
内联noexcept |
获取此内存资源分配的块的大小。
|
内联保护 |
获取此内存资源支持的(固定)分配大小。
|
内联noexcept |
指向P上游资源的 device_async_resource_ref
|
静态constexpr |
池初始拥有的块数,以及当其所有当前块都被分配完时,池增长的块数