使用 Upstream
分配内存并跟踪内存分配统计信息的资源。 更多...
#include <statistics_resource_adaptor.hpp>
类 | |
struct | counter |
用于计数当前值、峰值和总值的实用结构体。 更多... | |
公有类型 | |
using | read_lock_t = std::shared_lock< std::shared_mutex > |
用于同步读访问的锁类型。 | |
using | write_lock_t = std::unique_lock< std::shared_mutex > |
用于同步写访问的锁类型。 | |
公有成员函数 | |
statistics_resource_adaptor (device_async_resource_ref upstream) | |
构造一个新的统计信息资源适配器,使用 upstream 满足分配请求。 更多... | |
statistics_resource_adaptor (Upstream *upstream) | |
构造一个新的统计信息资源适配器,使用 upstream 满足分配请求。 更多... | |
statistics_resource_adaptor (statistics_resource_adaptor const &)=delete | |
statistics_resource_adaptor & | operator= (statistics_resource_adaptor const &)=delete |
statistics_resource_adaptor (statistics_resource_adaptor &&) noexcept=default | |
默认移动构造函数。 | |
statistics_resource_adaptor & | operator= (statistics_resource_adaptor &&) noexcept=default |
默认移动赋值运算符。 更多... | |
rmm::device_async_resource_ref | get_upstream_resource () const noexcept |
指向 upstream 资源的 rmm::device_async_resource_ref。 更多... | |
counter | get_bytes_counter () const noexcept |
返回此适配器的 counter 结构体,包含自创建以来为此适配器分配的字节数的当前值、峰值和总值。 更多... | |
counter | get_allocations_counter () const noexcept |
返回此适配器的 counter 结构体,包含自创建以来为此适配器分配的次数的当前值、峰值和总值。 更多... | |
std::pair< counter, counter > | push_counters () |
将一对零计数器压入栈中,它们将成为由 get_bytes_counter() 和 get_allocations_counter() 返回的新计数器。 更多... | |
std::pair< counter, counter > | pop_counters () |
从栈中弹出一对计数器。 更多... | |
![]() | |
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 的比较运算符。 更多... | |
使用 Upstream
分配内存并跟踪内存分配统计信息的资源。
可以构造此资源的一个实例,并使用现有的 upstream 资源来满足分配请求,但任何现有分配将不被跟踪。统计信息跟踪会存储内存分配的当前值、峰值和总值,包括字节数和对内存资源的调用次数。
此资源支持嵌套统计信息,这使得跟踪代码块的统计信息成为可能。使用 `.`push_counters()` 开始跟踪代码块的统计信息,并使用 `.`pop_counters()` 停止跟踪。嵌套统计信息是层叠的,因此由某个代码块跟踪的统计信息包括其所有跟踪的子代码块中跟踪的统计信息。
`statistics_resource_adaptor` 旨在作为调试适配器使用,不应在对性能敏感的代码中使用。
Upstream | 用于分配/释放内存的 upstream 资源的类型。 |
|
inline |
构造一个新的统计信息资源适配器,使用 upstream
满足分配请求。
upstream | 用于分配/释放设备内存的 resource_ref。 |
|
inline |
构造一个新的统计信息资源适配器,使用 upstream
满足分配请求。
rmm::logic_error | 如果 upstream == nullptr |
upstream | 用于分配/释放设备内存的资源。 |
|
inlinenoexcept |
返回此适配器的 counter
结构体,包含自创建以来为此适配器分配的次数的当前值、峰值和总值。
|
inlinenoexcept |
返回此适配器的 counter
结构体,包含自创建以来为此适配器分配的字节数的当前值、峰值和总值。
|
inlinenoexcept |
指向 upstream 资源的 rmm::device_async_resource_ref
|
defaultnoexcept |
默认移动赋值运算符。
|
inline |
从栈中弹出一对计数器。
std::out_of_range | 如果计数器栈中的条目少于两个。 |
|
inline |
将一对零计数器压入栈中,它们将成为由 get_bytes_counter()
和 get_allocations_counter()
返回的新计数器。