IPPL API Reference
Independent Parallel Particle Layer C++ API
Loading...
Searching...
No Matches
ippl::DefaultBufferHandler< MemorySpace > Class Template Reference

Concrete implementation of BufferHandler for managing memory buffers. More...

#include <BufferHandler.h>

+ Inheritance diagram for ippl::DefaultBufferHandler< MemorySpace >:
+ Collaboration diagram for ippl::DefaultBufferHandler< MemorySpace >:

Public Member Functions

buffer_type getBuffer (size_type size, double overallocation) override
 Acquires a buffer of at least the specified size.
 
void freeBuffer (buffer_type buffer) override
 Frees a specified buffer.
 
void freeAllBuffers () override
 Frees all currently used buffers.
 
void deleteAllBuffers () override
 Deletes all buffers.
 
size_type getUsedSize () const override
 Gets the size of all buffers in use.
 
size_type getFreeSize () const override
 Gets the size of all free buffers.
 

Protected Attributes

buffer_set_type used_buffers
 Set of used buffers.
 
buffer_set_type free_buffers
 Set of free buffers.
 

Additional Inherited Members

- Public Types inherited from ippl::BufferHandler< MemorySpace >
using archive_type = ippl::detail::Archive< MemorySpace >
 
using buffer_type = std::shared_ptr< archive_type >
 
using size_type = ippl::detail::size_type
 

Detailed Description

template<typename MemorySpace>
class ippl::DefaultBufferHandler< MemorySpace >

Concrete implementation of BufferHandler for managing memory buffers.

This class implements the BufferHandler interface, providing concrete behavior for buffer allocation, freeing, and memory management. It maintains two sorted sets of free and in-use buffers to allow for efficient queries.

Template Parameters
MemorySpaceThe memory space type for the buffer (e.g., Kokkos::HostSpace).

Member Function Documentation

◆ deleteAllBuffers()

template<typename MemorySpace >
void ippl::DefaultBufferHandler< MemorySpace >::deleteAllBuffers ( )
overridevirtual

Deletes all buffers.

Releases all allocated memory buffers, both used and free. After this call, no buffers are available until new allocations.

Implements ippl::BufferHandler< MemorySpace >.

◆ freeAllBuffers()

template<typename MemorySpace >
void ippl::DefaultBufferHandler< MemorySpace >::freeAllBuffers ( )
overridevirtual

Frees all currently used buffers.

Transfers all used buffers to the free state, making them available for reuse. This does not deallocate memory but resets buffer usage.

Implements ippl::BufferHandler< MemorySpace >.

◆ freeBuffer()

template<typename MemorySpace >
void ippl::DefaultBufferHandler< MemorySpace >::freeBuffer ( buffer_type  buffer)
overridevirtual

Frees a specified buffer.

Moves the specified buffer to a free state, making it available for reuse in future buffer requests.

Parameters
bufferThe buffer to be freed.

Implements ippl::BufferHandler< MemorySpace >.

◆ getBuffer()

template<typename MemorySpace >
DefaultBufferHandler< MemorySpace >::buffer_type ippl::DefaultBufferHandler< MemorySpace >::getBuffer ( size_type  size,
double  overallocation 
)
overridevirtual

Acquires a buffer of at least the specified size.

Requests a memory buffer of the specified size, with the option to request a buffer larger than the base size by an overallocation multiplier. If a sufficiently large buffer is available, it is returned. If not, the largest free buffer is reallocated. If there are no free buffers available, only then a new buffer is allocated.

Parameters
sizeThe required buffer size.
overallocationA multiplier to allocate additional buffer space.
Returns
A shared pointer to the allocated buffer.

Implements ippl::BufferHandler< MemorySpace >.

◆ getFreeSize()

template<typename MemorySpace >
DefaultBufferHandler< MemorySpace >::size_type ippl::DefaultBufferHandler< MemorySpace >::getFreeSize ( ) const
overridevirtual

Gets the size of all free buffers.

Returns
Total size of free buffers in bytes.

Implements ippl::BufferHandler< MemorySpace >.

◆ getUsedSize()

template<typename MemorySpace >
DefaultBufferHandler< MemorySpace >::size_type ippl::DefaultBufferHandler< MemorySpace >::getUsedSize ( ) const
overridevirtual

Gets the size of all buffers in use.

Returns
Total size of buffers that are in use in bytes.

Implements ippl::BufferHandler< MemorySpace >.

Member Data Documentation

◆ free_buffers

template<typename MemorySpace >
buffer_set_type ippl::DefaultBufferHandler< MemorySpace >::free_buffers
protected
Initial value:
{
&DefaultBufferHandler::bufferSizeComparator}

Set of free buffers.

◆ used_buffers

template<typename MemorySpace >
buffer_set_type ippl::DefaultBufferHandler< MemorySpace >::used_buffers
protected
Initial value:
{
&DefaultBufferHandler::bufferSizeComparator}

Set of used buffers.


The documentation for this class was generated from the following files: