|
IPPL (Independent Parallel Particle Layer)
IPPL
|
Concrete implementation of BufferHandler for managing memory buffers. More...
#include <BufferHandler.h>
Public Types | |
| using | archive_type = ippl::detail::Archive<MemorySpace> |
| using | buffer_type = std::shared_ptr<archive_type> |
| using | size_type = ippl::detail::size_type |
Public Member Functions | |
| ~DefaultBufferHandler () override | |
| 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 a specified buffer. | |
| void | deleteAllBuffers () override |
| Frees a specified buffer. | |
| size_type | getUsedSize () const override |
| Frees a specified buffer. | |
| size_type | getFreeSize () const override |
| Frees a specified buffer. | |
Protected Attributes | |
| buffer_set_type | used_buffers |
| Set of used buffers. | |
| buffer_set_type | free_buffers |
| Set of free buffers. | |
Private Types | |
| using | buffer_comparator_type = bool (*)(const buffer_type&, const buffer_type&) |
| using | buffer_set_type = std::set<buffer_type, buffer_comparator_type> |
Private Member Functions | |
| bool | isBufferUsed (buffer_type buffer) const |
| void | releaseUsedBuffer (buffer_type buffer) |
| buffer_type | findFreeBuffer (size_type requiredSize) |
| buffer_set_type::iterator | findSmallestSufficientBuffer (size_type requiredSize) |
| buffer_type | getFreeBuffer (buffer_type buffer) |
| buffer_type | reallocateLargestFreeBuffer (size_type requiredSize) |
| buffer_type | allocateNewBuffer (size_type requiredSize) |
Static Private Member Functions | |
| static bool | bufferSizeComparator (const buffer_type &lhs, const buffer_type &rhs) |
Private Attributes | |
| size_type | usedSize_m |
| Total size of all allocated buffers. | |
| size_type | freeSize_m |
| Total size of all free buffers. | |
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). |
Definition at line 95 of file BufferHandler.h.
|
inherited |
Definition at line 23 of file BufferHandler.h.
|
private |
Definition at line 144 of file BufferHandler.h.
|
private |
Definition at line 145 of file BufferHandler.h.
|
inherited |
Definition at line 24 of file BufferHandler.h.
|
inherited |
Definition at line 25 of file BufferHandler.h.
|
override |
Definition at line 7 of file BufferHandler.hpp.
|
private |
Definition at line 138 of file BufferHandler.hpp.
References used_buffers, and usedSize_m.
Referenced by getBuffer().
|
staticprivate |
Definition at line 64 of file BufferHandler.hpp.
|
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 >.
Definition at line 43 of file BufferHandler.hpp.
References free_buffers, freeSize_m, used_buffers, and usedSize_m.
|
private |
Definition at line 92 of file BufferHandler.hpp.
References findSmallestSufficientBuffer(), and free_buffers.
Referenced by getBuffer().
|
private |
Definition at line 102 of file BufferHandler.hpp.
References free_buffers.
Referenced by findFreeBuffer().
|
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 >.
Definition at line 34 of file BufferHandler.hpp.
References free_buffers, freeSize_m, used_buffers, and usedSize_m.
|
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 >.
Definition at line 27 of file BufferHandler.hpp.
References isBufferUsed(), and releaseUsedBuffer().
Referenced by getBuffer().
|
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 >.
Definition at line 11 of file BufferHandler.hpp.
References allocateNewBuffer(), findFreeBuffer(), free_buffers, freeBuffer(), getFreeBuffer(), and reallocateLargestFreeBuffer().
|
private |
Definition at line 111 of file BufferHandler.hpp.
References free_buffers, freeSize_m, used_buffers, and usedSize_m.
Referenced by getBuffer().
|
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 >.
Definition at line 59 of file BufferHandler.hpp.
References freeSize_m.
|
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 >.
Definition at line 53 of file BufferHandler.hpp.
References usedSize_m.
|
private |
Definition at line 75 of file BufferHandler.hpp.
References used_buffers.
Referenced by freeBuffer().
|
private |
Definition at line 122 of file BufferHandler.hpp.
References free_buffers, freeSize_m, used_buffers, and usedSize_m.
Referenced by getBuffer().
|
private |
Definition at line 80 of file BufferHandler.hpp.
References free_buffers, freeSize_m, used_buffers, and usedSize_m.
Referenced by freeBuffer().
|
protected |
Set of free buffers.
Definition at line 163 of file BufferHandler.h.
Referenced by deleteAllBuffers(), findFreeBuffer(), findSmallestSufficientBuffer(), freeAllBuffers(), getBuffer(), getFreeBuffer(), reallocateLargestFreeBuffer(), and releaseUsedBuffer().
|
private |
Total size of all free buffers.
Definition at line 158 of file BufferHandler.h.
Referenced by deleteAllBuffers(), freeAllBuffers(), getFreeBuffer(), getFreeSize(), reallocateLargestFreeBuffer(), and releaseUsedBuffer().
|
protected |
Set of used buffers.
Definition at line 161 of file BufferHandler.h.
Referenced by allocateNewBuffer(), deleteAllBuffers(), freeAllBuffers(), getFreeBuffer(), isBufferUsed(), reallocateLargestFreeBuffer(), and releaseUsedBuffer().
|
private |
Total size of all allocated buffers.
Definition at line 157 of file BufferHandler.h.
Referenced by allocateNewBuffer(), deleteAllBuffers(), freeAllBuffers(), getFreeBuffer(), getUsedSize(), reallocateLargestFreeBuffer(), and releaseUsedBuffer().