NeoN
A framework for CFD software
Loading...
Searching...
No Matches
umpire.hpp
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2025 - 2026 NeoN authors
2//
3// SPDX-License-Identifier: MIT
4
5#pragma once
6
9
10#if NF_WITH_UMPIRE
11#include "umpire/strategy/QuickPool.hpp"
12#include "umpire/ResourceManager.hpp"
13#endif
14
15namespace NeoN
16{
17
18#if NF_WITH_UMPIRE
19class UmpireMempoolHandler
20{
21public:
22
23 static bool hasPool(MemorySpace memSpace);
24
25 static void setupUmpirePool(MemorySpace memSpace, sizeType size);
26
27 static auto getUmpirePool(MemorySpace memSpace)
28 {
29 auto& rm = umpire::ResourceManager::getInstance();
30 if (memSpace == MemorySpace::GPU)
31 {
32 return rm.getAllocator("DEVICE_POOL");
33 }
34 return rm.getAllocator("HOST_POOL");
35 }
36
37 static void destroyUmpirePool(MemorySpace memSpace)
38 {
39 auto pool = getUmpirePool(memSpace);
40 pool.release();
41 }
42};
43#endif
44
45
47{
48
49public:
50
51 void* alloc(sizeType size) override;
52
53 void* realloc(void* ptr, sizeType size) override;
54
55 void free(void* ptr) override;
56
57 ~UmpireAllocator() override {}
58};
59
60
62{
63
64public:
65
66 void* alloc(sizeType size) override;
67
68 void* realloc(void* ptr, sizeType size) override;
69
70 void free(void* ptr) override;
71
73};
74
75
76}
~UmpireAllocator() override
Definition umpire.hpp:57
void * alloc(sizeType size) override
allocate a block of size bytes
void free(void *ptr) override
free a block of size bytes
void * realloc(void *ptr, sizeType size) override
reallocate a block of size bytes
~UmpirePoolAllocator() override
Definition umpire.hpp:72
void free(void *ptr) override
free a block of size bytes
void * realloc(void *ptr, sizeType size) override
reallocate a block of size bytes
void * alloc(sizeType size) override
allocate a block of size bytes
Integer types used throughout NeoN.
Definition array.hpp:18
std::size_t sizeType
Definition label.hpp:56