|
IPPL API Reference
Independent Parallel Particle Layer C++ API
|
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 |
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.
| MemorySpace | The memory space type for the buffer (e.g., Kokkos::HostSpace). |
|
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 >.
|
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 >.
|
overridevirtual |
Frees a specified buffer.
Moves the specified buffer to a free state, making it available for reuse in future buffer requests.
| buffer | The buffer to be freed. |
Implements ippl::BufferHandler< MemorySpace >.
|
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.
| size | The required buffer size. |
| overallocation | A multiplier to allocate additional buffer space. |
Implements ippl::BufferHandler< MemorySpace >.
|
overridevirtual |
Gets the size of all free buffers.
Implements ippl::BufferHandler< MemorySpace >.
|
overridevirtual |
Gets the size of all buffers in use.
Implements ippl::BufferHandler< MemorySpace >.
|
protected |
Set of free buffers.
|
protected |
Set of used buffers.