Strategies are used in Umpire to allow custom algorithms to be applied when allocating memory. These strategies can do anything, from providing different pooling methods to speed up allocations to applying different operations to every alloctaion. Strategies can be composed to combine their functionality, allowing flexible and reusable implementations of different components.

class AllocationStrategy

AllocationStrategy provides a unified interface to all classes that can be used to allocate and free data.

Subclassed by umpire::resource::MemoryResource, umpire::strategy::AlignedAllocator, umpire::strategy::AllocationAdvisor, umpire::strategy::AllocationPrefetcher, umpire::strategy::AllocationTracker, umpire::strategy::DynamicPoolList, umpire::strategy::DynamicPoolMap, umpire::strategy::FixedPool, umpire::strategy::MixedPool, umpire::strategy::MonotonicAllocationStrategy, umpire::strategy::NamedAllocationStrategy, umpire::strategy::NumaPolicy, umpire::strategy::QuickPool, umpire::strategy::SizeLimiter, umpire::strategy::SlotPool, umpire::strategy::ThreadSafeAllocator, umpire::strategy::ZeroByteHandler

Provided Strategies

class AllocationAdvisor : public umpire::strategy::AllocationStrategy

Applies the given MemoryOperation to every allocation.

This AllocationStrategy is designed to be used with the following operations:

Using this AllocationStrategy when combined with a pool like DynamicPool is a good way to mitigate the overhead of applying the memory advice.


doxygenclass: Cannot find class “umpire::strategy::DynamicPool” in doxygen xml output for project “umpire” from directory: ../doxygen/xml/

class FixedPool : public umpire::strategy::AllocationStrategy

Pool for fixed size allocations.

This AllocationStrategy provides an efficient pool for fixed size allocations, and used to quickly allocate and deallocate objects.

class MonotonicAllocationStrategy : public umpire::strategy::AllocationStrategy
class SlotPool : public umpire::strategy::AllocationStrategy
class ThreadSafeAllocator : public umpire::strategy::AllocationStrategy

Make an Allocator thread safe.

Using this AllocationStrategy will make the provided allocator thread-safe by syncronizing access to the allocators interface.