vecmem 1.26.0
Loading...
Searching...
No Matches
event_pool.hpp
1/*
2 * VecMem project, part of the ACTS project (R&D line)
3 *
4 * (c) 2026 CERN for the benefit of the ACTS project
5 *
6 * Mozilla Public License Version 2.0
7 */
8
9#pragma once
10
11// HIP include(s).
12#include <hip/hip_runtime_api.h>
13
14// System include(s).
15#include <vector>
16
17namespace vecmem {
18namespace hip {
19namespace details {
20
31
32public:
34 explicit event_pool(std::size_t size = 8u);
37 event_pool(unsigned int event_flags, std::size_t size = 8u);
40
44 void free(hipEvent_t event);
45
46private:
48 void initialize(std::size_t size);
49
51 unsigned int m_event_flags = hipEventDisableTiming;
53 std::vector<hipEvent_t> m_pool;
55 std::size_t m_used_events = 0;
56
57}; // class event_pool
58
59} // namespace details
60} // namespace hip
61} // namespace vecmem
An allocator class that wraps a memory resource.
Definition allocator.hpp:37
Pool of hipEvent_t objects to use in the library.
Definition event_pool.hpp:30
void free(hipEvent_t event)
Return an event to the pool.
Definition event_pool.cpp:82
hipEvent_t create()
Get an event from the pool, creating a new one if necessary.
Definition event_pool.cpp:68
~event_pool()
Destructor.
Definition event_pool.cpp:60
Main namespace for the vecmem classes/functions.
Definition atomic_ref.hpp:16