公有成员函数 | 静态公有属性 | 保护类型 | 保护成员函数 | 友元 | 所有成员列表
rmm::mr::fixed_size_memory_resource< Upstream > 类模板参考

一个分配单个固定大小内存块的 device_memory_resource更多...

#include <fixed_size_memory_resource.hpp>

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

公有成员函数

 fixed_size_memory_resource (device_async_resource_ref upstream_mr, std::size_t block_size=default_block_size, std::size_t blocks_to_preallocate=default_blocks_to_preallocate)
 构造一个新的 fixed_size_memory_resource,它从 upstream_mr 分配内存。 更多...
 
 fixed_size_memory_resource (Upstream *upstream_mr, std::size_t block_size=default_block_size, std::size_t blocks_to_preallocate=default_blocks_to_preallocate)
 构造一个新的 fixed_size_memory_resource,它从 upstream_mr 分配内存。 更多...
 
 ~fixed_size_memory_resource () 重写
 销毁 fixed_size_memory_resource 并释放所有从上游分配的内存。
 
 fixed_size_memory_resource (fixed_size_memory_resource const &)=delete
 
 fixed_size_memory_resource (fixed_size_memory_resource &&)=delete
 
fixed_size_memory_resourceoperator= (fixed_size_memory_resource const &)=delete
 
fixed_size_memory_resourceoperator= (fixed_size_memory_resource &&)=delete
 
device_async_resource_ref get_upstream_resource () const noexcept
 指向P上游资源的 device_async_resource_ref 更多...
 
std::size_t get_block_size () const noexcept
 获取此内存资源分配的块的大小。 更多...
 

静态公有属性

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 >
 

详细描述

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

一个分配单个固定大小内存块的 device_memory_resource

仅支持小于配置的 block_size 的分配。

构造函数与析构函数文档

◆ fixed_size_memory_resource() [1/2]

template<typename Upstream >
rmm::mr::fixed_size_memory_resource< Upstream >::fixed_size_memory_resource ( device_async_resource_ref  upstream_mr,
std::size_t  块大小 = default_block_size,
std::size_t  预分配块数 = default_blocks_to_preallocate 
)
内联显式

构造一个新的 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() [2/2]

template<typename Upstream >
rmm::mr::fixed_size_memory_resource< Upstream >::fixed_size_memory_resource ( Upstream *  upstream_mr,
std::size_t  块大小 = default_block_size,
std::size_t  预分配块数 = default_blocks_to_preallocate 
)
内联显式

构造一个新的 fixed_size_memory_resource,它从 upstream_mr 分配内存。

当块池完全分配后,通过从 upstream_mr 分配额外的 blocks_to_preallocate 块来增长池。

参数
upstream_mr用于从其分配块到池中的 memory_resource。
block_size要分配的块的大小。
blocks_to_preallocate初始化池要分配的块数。

成员函数文档

◆ allocate_from_block()

template<typename Upstream >
split_block rmm::mr::fixed_size_memory_resource< Upstream >::allocate_from_block ( block_type const &  block,
std::size_t  大小 
)
内联保护

如有必要,分割块以返回指向 `size` 字节内存的指针。

如果块被分割,剩余部分将返回到池中。

参数
block用于分配的块。
size请求分配的字节大小。
返回
包含分配指针和输入块中任何未分配剩余部分的对。

◆ blocks_from_upstream()

template<typename Upstream >
free_list rmm::mr::fixed_size_memory_resource< Upstream >::blocks_from_upstream ( cuda_stream_view  stream)
内联保护

从上游分配块以扩展子分配池。

参数
stream将使用内存的流。
返回
block_type 分配的块

◆ expand_pool()

template<typename Upstream >
block_type rmm::mr::fixed_size_memory_resource< Upstream >::expand_pool ( std::size_t  size,
free_list blocks,
cuda_stream_view   
)
内联保护

从上游分配一个块来提供子分配池。

注意,通常分配的大小将大于请求的大小,并且基于增长策略(参见 size_to_grow())。

参数
size要分配的最小大小
blocks用于分配的块集合
stream将使用内存的流。
返回
block_type 分配的块

◆ free_block()

template<typename Upstream >
block_type rmm::mr::fixed_size_memory_resource< Upstream >::free_block ( void *  ptr,
std::size_t  大小 
)
内联保护noexcept

查找、释放并返回与指针关联的块。

参数
ptr要释放内存的指针。
size要释放内存的大小。必须等于原始分配大小。
返回
与 `p` 关联的(现已释放的)块。调用者应将该块返回到池中。

◆ free_list_summary()

template<typename Upstream >
std::pair<std::size_t, std::size_t> rmm::mr::fixed_size_memory_resource< Upstream >::free_list_summary ( free_list const &  blocks)
内联保护

获取指定空闲列表中最大可用块大小和总空闲大小。

这仅用于调试

参数
blocks用于返回摘要的空闲列表
返回
std::pair<std::size_t, std::size_t> 最大可用块和总空闲大小的对

◆ get_block_size()

template<typename Upstream >
std::size_t rmm::mr::fixed__size__memory__resource< Upstream >::get_block_size ( ) const
内联noexcept

获取此内存资源分配的块的大小。

返回
std::size_t 分配块的字节大小。

◆ get_maximum_allocation_size()

template<typename Upstream >
std::size_t rmm::mr::fixed__size__memory__resource< Upstream >::get_maximum_allocation_size ( ) const
内联保护

获取此内存资源支持的(固定)分配大小。

返回
std::size_t 此内存资源支持的单个分配的(固定)最大大小

◆ get_upstream_resource()

template<typename Upstream >
device_async_resource_ref rmm::mr::fixed__size__memory__resource< Upstream >::get_upstream_resource ( ) const
内联noexcept

指向P上游资源的 device_async_resource_ref

返回
指向P上游资源的 device_async_resource_ref

成员数据文档

◆ default_blocks_to_preallocate

template<typename Upstream >
constexpr std::size_t rmm::mr::fixed__size__memory__resource< Upstream >::default_blocks_to_preallocate = 128
静态constexpr

池初始拥有的块数,以及当其所有当前块都被分配完时,池增长的块数


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