1#ifndef IPPL_LOGGING_BUFFER_HANDLER_HPP
2#define IPPL_LOGGING_BUFFER_HANDLER_HPP
9 template <
typename MemorySpace>
11 std::shared_ptr<BufferHandler<MemorySpace>> handler,
int rank)
12 : handler_m(std::move(handler))
15 template <
typename MemorySpace>
17 handler_m = std::make_shared<DefaultBufferHandler<MemorySpace>>();
18 MPI_Comm_rank(MPI_COMM_WORLD, &rank_m);
21 template <
typename MemorySpace>
22 typename LoggingBufferHandler<MemorySpace>::buffer_type
24 auto buffer = handler_m->getBuffer(size, overallocation);
25 logMethod(
"getBuffer", {{
"size", std::to_string(size)},
26 {
"overallocation", std::to_string(overallocation)}});
30 template <
typename MemorySpace>
32 handler_m->freeBuffer(buffer);
33 logMethod(
"freeBuffer", {});
36 template <
typename MemorySpace>
38 handler_m->freeAllBuffers();
39 logMethod(
"freeAllBuffers", {});
42 template <
typename MemorySpace>
44 handler_m->deleteAllBuffers();
45 logMethod(
"deleteAllBuffers", {});
48 template <
typename MemorySpace>
49 typename LoggingBufferHandler<MemorySpace>::size_type
51 return handler_m->getUsedSize();
54 template <
typename MemorySpace>
55 typename LoggingBufferHandler<MemorySpace>::size_type
57 return handler_m->getFreeSize();
60 template <
typename MemorySpace>
65 template <
typename MemorySpace>
67 const std::string& methodName,
const std::map<std::string, std::string>& parameters) {
68 logEntries_m.push_back({methodName, parameters, handler_m->getUsedSize(),
69 handler_m->getFreeSize(), MemorySpace::name(), rank_m,
70 std::chrono::high_resolution_clock::now()});
Decorator class for buffer management that adds logging capabilities to buffer operations.
Definition LoggingBufferHandler.h:31
LoggingBufferHandler()
Default constructor, creates an internal BufferHandler for managing buffers. This constructor also in...
Definition LoggingBufferHandler.hpp:16
buffer_type getBuffer(size_type size, double overallocation) override
Allocates or retrieves a buffer and logs the action.
Definition LoggingBufferHandler.hpp:23
void freeAllBuffers() override
Frees all buffers and logs the action.
Definition LoggingBufferHandler.hpp:37
size_type getUsedSize() const override
Retrieves the total size of allocated buffers.
Definition LoggingBufferHandler.hpp:50
const std::vector< LogEntry > & getLogs() const
Retrieves the list of log entries.
Definition LoggingBufferHandler.hpp:61
size_type getFreeSize() const override
Retrieves the total size of free buffers.
Definition LoggingBufferHandler.hpp:56
void deleteAllBuffers() override
Deletes all buffers and logs the action.
Definition LoggingBufferHandler.hpp:43
void freeBuffer(buffer_type buffer) override
Frees a buffer and logs the action.
Definition LoggingBufferHandler.hpp:31