UMPIRE
Umpire: resource management and provision
umpire::resource::MemoryResource Class Referenceabstract

Base class to represent the available hardware resources for memory allocation in the system. More...

#include </home/docs/checkouts/readthedocs.org/user_builds/umpire/checkouts/develop/src/umpire/resource/MemoryResource.hpp>

Inheritance diagram for umpire::resource::MemoryResource:

Public Member Functions

 MemoryResource (const std::string &name, int id, MemoryResourceTraits traits)
 Construct a MemoryResource with the given name and id. More...
 
virtual ~MemoryResource ()=default
 
virtual void * allocate (std::size_t bytes) override=0
 Allocate bytes of memory. More...
 
virtual void deallocate (void *ptr, std::size_t size) override=0
 Free the memory at ptr. More...
 
virtual Platform getPlatform () noexcept override=0
 Get the Platform assocatiated with this MemoryResource. More...
 
virtual bool isAccessibleFrom (Platform p) noexcept=0
 
MemoryResourceTraits getTraits () const noexcept override
 
void * allocate_internal (std::size_t bytes)
 
void * allocate_named_internal (const std::string &name, std::size_t bytes)
 
void deallocate_internal (void *ptr, std::size_t size=0)
 
virtual void release ()
 Release any and all unused memory held by this AllocationStrategy. More...
 
virtual std::size_t getCurrentSize () const noexcept
 Get current (total) size of the allocated memory. More...
 
virtual std::size_t getHighWatermark () const noexcept
 Get the high watermark of the total allocated size. More...
 
virtual std::size_t getActualSize () const noexcept
 Get the current amount of memory allocated by this allocator. More...
 
virtual std::size_t getAllocationCount () const noexcept
 Get the total number of active allocations by this allocator. More...
 
const std::string & getName () noexcept
 Get the name of this AllocationStrategy. More...
 
const std::string & getStrategyName () const noexcept
 
int getId () noexcept
 Get the id of this AllocationStrategy. More...
 
virtual AllocationStrategygetParent () const noexcept
 Traces where the allocator came from. More...
 
virtual bool tracksMemoryUse () const noexcept
 
bool isTracked () const noexcept
 

Public Attributes

std::size_t m_current_size {0}
 
std::size_t m_high_watermark {0}
 
std::size_t m_allocation_count {0}
 

Protected Member Functions

void setTracking (bool) noexcept
 

Protected Attributes

MemoryResourceTraits m_traits
 
std::string m_name
 
std::string m_strategy_name
 
int m_id
 
bool m_tracked {true}
 
AllocationStrategym_parent
 

Detailed Description

Base class to represent the available hardware resources for memory allocation in the system.

Objects of this inherit from strategy::AllocationStrategy, allowing them to be used directly.

Constructor & Destructor Documentation

◆ MemoryResource()

umpire::resource::MemoryResource::MemoryResource ( const std::string &  name,
int  id,
MemoryResourceTraits  traits 
)

Construct a MemoryResource with the given name and id.

Parameters
nameName of the MemoryResource.
idID of the MemoryResource (must be unique).

◆ ~MemoryResource()

virtual umpire::resource::MemoryResource::~MemoryResource ( )
virtualdefault

Member Function Documentation

◆ allocate()

◆ deallocate()

◆ getPlatform()

◆ isAccessibleFrom()

◆ getTraits()

MemoryResourceTraits umpire::resource::MemoryResource::getTraits ( ) const
overridevirtualnoexcept

Reimplemented from umpire::strategy::AllocationStrategy.

References m_traits.

◆ allocate_internal()

◆ allocate_named_internal()

void * umpire::strategy::AllocationStrategy::allocate_named_internal ( const std::string &  name,
std::size_t  bytes 
)
inherited

◆ deallocate_internal()

◆ release()

void umpire::strategy::AllocationStrategy::release ( )
virtualinherited

◆ getCurrentSize()

std::size_t umpire::strategy::AllocationStrategy::getCurrentSize ( ) const
virtualnoexceptinherited

Get current (total) size of the allocated memory.

This is the total size of all allocation currently 'live' that have been made by this AllocationStrategy object.

Returns
Current total size of allocations.

Reimplemented in umpire::strategy::FixedPool, umpire::strategy::MonotonicAllocationStrategy, umpire::resource::SyclDeviceMemoryResource< _allocator >, umpire::resource::NullMemoryResource, umpire::resource::NoOpMemoryResource, and umpire::resource::FileMemoryResource.

References umpire::strategy::AllocationStrategy::m_current_size.

Referenced by umpire::strategy::AllocationStrategy::getActualSize(), and umpire::Allocator::getCurrentSize().

◆ getHighWatermark()

std::size_t umpire::strategy::AllocationStrategy::getHighWatermark ( ) const
virtualnoexceptinherited

Get the high watermark of the total allocated size.

This is equivalent to the highest observed value of getCurrentSize.

Returns
High watermark allocation size.

Reimplemented in umpire::strategy::FixedPool, umpire::strategy::MonotonicAllocationStrategy, umpire::resource::SyclDeviceMemoryResource< _allocator >, umpire::resource::NullMemoryResource, umpire::resource::NoOpMemoryResource, and umpire::resource::FileMemoryResource.

References umpire::strategy::AllocationStrategy::m_high_watermark.

Referenced by umpire::Allocator::getHighWatermark().

◆ getActualSize()

std::size_t umpire::strategy::AllocationStrategy::getActualSize ( ) const
virtualnoexceptinherited

Get the current amount of memory allocated by this allocator.

Note that this can be larger than getCurrentSize(), particularly if the AllocationStrategy implements some kind of pooling.

Returns
The total size of all the memory this object has allocated.

Reimplemented in umpire::strategy::FixedPool, umpire::strategy::ResourceAwarePool, umpire::strategy::QuickPool, umpire::strategy::MixedPool, umpire::strategy::DynamicPoolList, and umpire::resource::HostSharedMemoryResource.

References umpire::strategy::AllocationStrategy::getCurrentSize().

Referenced by umpire::Allocator::getActualSize().

◆ getAllocationCount()

std::size_t umpire::strategy::AllocationStrategy::getAllocationCount ( ) const
virtualnoexceptinherited

Get the total number of active allocations by this allocator.

Returns
The total number of active allocations this object has allocated.

References umpire::strategy::AllocationStrategy::m_allocation_count.

Referenced by umpire::Allocator::getAllocationCount().

◆ getName()

◆ getStrategyName()

const std::string & umpire::strategy::AllocationStrategy::getStrategyName ( ) const
noexceptinherited

◆ getId()

int umpire::strategy::AllocationStrategy::getId ( )
noexceptinherited

Get the id of this AllocationStrategy.

Returns
The id of this AllocationStrategy.

References umpire::strategy::AllocationStrategy::m_id.

Referenced by umpire::ResourceManager::destroyAllocator(), and umpire::Allocator::getId().

◆ getParent()

AllocationStrategy * umpire::strategy::AllocationStrategy::getParent ( ) const
virtualnoexceptinherited

Traces where the allocator came from.

Returns
Pointer to the parent AllocationStrategy.

References umpire::strategy::AllocationStrategy::m_parent.

Referenced by umpire::ResourceManager::destroyAllocator(), umpire::Allocator::getParent(), and umpire::is_accessible().

◆ tracksMemoryUse()

bool umpire::strategy::AllocationStrategy::tracksMemoryUse ( ) const
virtualnoexceptinherited

◆ isTracked()

bool umpire::strategy::AllocationStrategy::isTracked ( ) const
noexceptinherited

◆ setTracking()

void umpire::strategy::AllocationStrategy::setTracking ( bool  tracking)
protectednoexceptinherited

Member Data Documentation

◆ m_traits

◆ m_current_size

◆ m_high_watermark

◆ m_allocation_count

◆ m_name

std::string umpire::strategy::AllocationStrategy::m_name
protectedinherited

◆ m_strategy_name

std::string umpire::strategy::AllocationStrategy::m_strategy_name
protectedinherited

◆ m_id

int umpire::strategy::AllocationStrategy::m_id
protectedinherited

◆ m_tracked

bool umpire::strategy::AllocationStrategy::m_tracked {true}
protectedinherited

◆ m_parent

AllocationStrategy* umpire::strategy::AllocationStrategy::m_parent
protectedinherited