|
UMPIRE
Umpire: resource management and provision
|
A faster pool that pulls from a series of pools. More...
#include </home/docs/checkouts/readthedocs.org/user_builds/umpire/checkouts/develop/src/umpire/strategy/MixedPool.hpp>

Public Member Functions | |
| MixedPool (const std::string &name, int id, Allocator allocator, std::size_t smallest_fixed_obj_size=(1<< 8), std::size_t largest_fixed_obj_size=(1<< 17), std::size_t max_initial_fixed_pool_size=1024 *1024 *2, std::size_t fixed_size_multiplier=16, const std::size_t quick_pool_initial_alloc_size=(512 *1024 *1024), const std::size_t quick_pool_min_alloc_size=(1 *1024 *1024), const std::size_t quick_pool_align_bytes=16, PoolCoalesceHeuristic< QuickPool > should_coalesce=QuickPool::percent_releasable(100)) noexcept | |
| Creates a MixedPool of one or more fixed pools and a quick pool for large allocations. More... | |
| void * | allocate (std::size_t bytes) override |
| Allocate bytes of memory. More... | |
| void | deallocate (void *ptr, std::size_t size) override |
| Free the memory at ptr. More... | |
| void | release () override |
| Release any and all unused memory held by this AllocationStrategy. More... | |
| std::size_t | getActualSize () const noexcept override |
| Get the current amount of memory allocated by this allocator. More... | |
| Platform | getPlatform () noexcept override |
| Get the platform associated with this AllocationStrategy. More... | |
| 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 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 | 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 AllocationStrategy * | getParent () 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 | |
| std::string | m_name |
| std::string | m_strategy_name |
| int | m_id |
| bool | m_tracked {true} |
| AllocationStrategy * | m_parent |
A faster pool that pulls from a series of pools.
Pool implementation using a series of FixedPools for small sizes, and a QuickPool for sizes larger than (1 << LastFixed) bytes.
|
noexcept |
Creates a MixedPool of one or more fixed pools and a quick pool for large allocations.
| name | Name of the pool |
| id | Unique identifier for lookup later in ResourceManager |
| allocator | Underlying allocator |
| smallest_fixed_obj_size | Smallest fixed pool object size in bytes |
| largest_fixed_obj_size | Largest fixed pool object size in bytes |
| max_initial_fixed_pool_size | Largest initial size of any fixed pool |
| fixed_size_multiplier | Fixed pool object size increase factor |
| quick_pool_initial_alloc_size | Size the quick pool initially allocates |
| quick_pool_min_alloc_bytes | Minimum size of all future allocations in the quick pool |
| quick_pool_align_bytes | Size with which to align allocations (for the quick pool) |
| should_coalesce | Heuristic callback function (for the quick pool) |
|
overridevirtual |
Allocate bytes of memory.
| bytes | Number of bytes to allocate. |
Implements umpire::strategy::AllocationStrategy.
References umpire::strategy::AllocationStrategy::allocate_internal().
|
overridevirtual |
Free the memory at ptr.
| ptr | Pointer to free. |
Implements umpire::strategy::AllocationStrategy.
References umpire::strategy::AllocationStrategy::deallocate_internal().
|
overridevirtual |
Release any and all unused memory held by this AllocationStrategy.
Reimplemented from umpire::strategy::AllocationStrategy.
References umpire::util::message::Debug, and UMPIRE_LOG.
|
overridevirtualnoexcept |
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.
Reimplemented from umpire::strategy::AllocationStrategy.
References umpire::strategy::QuickPool::getActualSize().
|
overridevirtualnoexcept |
Get the platform associated with this AllocationStrategy.
The Platform distinguishes the appropriate place to execute operations on memory allocated by this AllocationStrategy.
Implements umpire::strategy::AllocationStrategy.
References umpire::strategy::AllocationStrategy::getPlatform().
|
overridevirtualnoexcept |
Reimplemented from umpire::strategy::AllocationStrategy.
References umpire::strategy::AllocationStrategy::getTraits().
|
inherited |
References umpire::strategy::AllocationStrategy::m_allocation_count, umpire::strategy::AllocationStrategy::m_current_size, and umpire::strategy::AllocationStrategy::m_high_watermark.
Referenced by umpire::strategy::mixins::AlignedAllocation::aligned_allocate(), umpire::strategy::AlignedAllocator::allocate(), umpire::strategy::AllocationAdvisor::allocate(), umpire::strategy::AllocationPrefetcher::allocate(), allocate(), umpire::strategy::NamedAllocationStrategy::allocate(), umpire::strategy::NumaPolicy::allocate(), umpire::strategy::SizeLimiter::allocate(), umpire::strategy::SlotPool::allocate(), umpire::strategy::ThreadSafeAllocator::allocate(), and umpire::strategy::MonotonicAllocationStrategy::MonotonicAllocationStrategy().
|
inherited |
References umpire::strategy::AllocationStrategy::m_allocation_count, umpire::strategy::AllocationStrategy::m_current_size, and umpire::strategy::AllocationStrategy::m_high_watermark.
Referenced by umpire::strategy::NamingShim::allocate(), and umpire::strategy::NamedAllocationStrategy::allocate_named().
|
inherited |
References umpire::strategy::AllocationStrategy::m_allocation_count, and umpire::strategy::AllocationStrategy::m_current_size.
Referenced by umpire::strategy::mixins::AlignedAllocation::aligned_deallocate(), umpire::strategy::AlignedAllocator::deallocate(), umpire::strategy::AllocationAdvisor::deallocate(), umpire::strategy::AllocationPrefetcher::deallocate(), deallocate(), umpire::strategy::NamedAllocationStrategy::deallocate(), umpire::strategy::NamingShim::deallocate(), umpire::strategy::NumaPolicy::deallocate(), umpire::strategy::SizeLimiter::deallocate(), umpire::strategy::ThreadSafeAllocator::deallocate(), umpire::strategy::DeviceIpcAllocator::deallocate(), umpire::strategy::DeviceIpcAllocator::~DeviceIpcAllocator(), umpire::strategy::MonotonicAllocationStrategy::~MonotonicAllocationStrategy(), and umpire::strategy::SlotPool::~SlotPool().
|
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.
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().
|
virtualnoexceptinherited |
Get the high watermark of the total allocated size.
This is equivalent to the highest observed value of getCurrentSize.
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().
|
virtualnoexceptinherited |
Get the total number of active allocations by this allocator.
References umpire::strategy::AllocationStrategy::m_allocation_count.
Referenced by umpire::Allocator::getAllocationCount().
|
noexceptinherited |
Get the name of this AllocationStrategy.
References umpire::strategy::AllocationStrategy::m_name.
Referenced by umpire::strategy::DynamicPoolList::coalesce(), umpire::strategy::QuickPool::coalesce(), umpire::strategy::ResourceAwarePool::coalesce(), umpire::strategy::mixins::Inspector::deregisterAllocation(), umpire::ResourceManager::destroyAllocator(), DynamicSizePool< IA >::DynamicSizePool(), umpire::Allocator::getName(), and umpire::util::unwrap_allocation_strategy().
|
noexceptinherited |
References umpire::strategy::AllocationStrategy::m_strategy_name.
Referenced by umpire::Allocator::getStrategyName().
|
noexceptinherited |
Get the id of this AllocationStrategy.
References umpire::strategy::AllocationStrategy::m_id.
Referenced by umpire::ResourceManager::destroyAllocator(), and umpire::Allocator::getId().
|
virtualnoexceptinherited |
Traces where the allocator came from.
References umpire::strategy::AllocationStrategy::m_parent.
Referenced by umpire::ResourceManager::destroyAllocator(), umpire::Allocator::getParent(), and umpire::is_accessible().
|
virtualnoexceptinherited |
Reimplemented in umpire::strategy::ResourceAwarePool, umpire::strategy::QuickPool, and umpire::strategy::DynamicPoolList.
|
noexceptinherited |
References umpire::strategy::AllocationStrategy::m_tracked.
Referenced by umpire::Allocator::isTracked().
|
protectednoexceptinherited |
|
inherited |
Referenced by umpire::strategy::AllocationStrategy::allocate_internal(), umpire::strategy::AllocationStrategy::allocate_named_internal(), umpire::strategy::AllocationStrategy::deallocate_internal(), umpire::strategy::mixins::Inspector::deregisterAllocation(), umpire::strategy::AllocationStrategy::getCurrentSize(), and umpire::strategy::mixins::Inspector::registerAllocation().
|
inherited |
|
inherited |
Referenced by umpire::strategy::AllocationStrategy::allocate_internal(), umpire::strategy::AllocationStrategy::allocate_named_internal(), umpire::strategy::AllocationStrategy::deallocate_internal(), umpire::strategy::mixins::Inspector::deregisterAllocation(), umpire::strategy::AllocationStrategy::getAllocationCount(), and umpire::strategy::mixins::Inspector::registerAllocation().
|
protectedinherited |
|
protectedinherited |
Referenced by umpire::strategy::AllocationStrategy::getStrategyName().
|
protectedinherited |
Referenced by umpire::strategy::AllocationStrategy::getId().
|
protectedinherited |
Referenced by umpire::strategy::AllocationStrategy::isTracked().
|
protectedinherited |
Referenced by umpire::strategy::AllocationStrategy::getParent().