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
8
9#if NF_WITH_UMPIRE
10#include "umpire/strategy/QuickPool.hpp"
11#include "umpire/ResourceManager.hpp"
12#endif
13
14namespace NeoN
15{
16
17#if NF_WITH_UMPIRE
18class UmpireMempoolHandler
19{
20private:
21
22 static bool hasPool(MemorySpace memSpace);
23
24public:
25
26 static void setupUmpirePool(MemorySpace memSpace, size_t size);
27
28 static auto getUmpirePool(MemorySpace memSpace)
29 {
30 auto& rm = umpire::ResourceManager::getInstance();
31 if (memSpace == MemorySpace::GPU)
32 {
33 return rm.getAllocator("DEVICE_POOL");
34 }
35 return rm.getAllocator("HOST_POOL");
36 }
37
38 static void destroyUmpirePool(MemorySpace memSpace)
39 {
40 auto pool = getUmpirePool(memSpace);
41 pool.release();
42 }
43};
44#endif
45
46
48{
49
50public:
51
52 void* alloc(size_t size) override;
53
54 void* realloc(void* ptr, size_t size) override;
55
56 void free(void* ptr) override;
57
58 ~UmpireAllocator() override {}
59};
60
61
63{
64
65public:
66
67 void* alloc(size_t size) override;
68
69 void* realloc(void* ptr, size_t size) override;
70
71 void free(void* ptr) override;
72
74};
75
76
77}
void * alloc(size_t size) override
allocate a block of size bytes
~UmpireAllocator() override
Definition umpire.hpp:58
void free(void *ptr) override
free a block of size bytes
void * realloc(void *ptr, size_t size) override
reallocate a block of size bytes
~UmpirePoolAllocator() override
Definition umpire.hpp:73
void free(void *ptr) override
free a block of size bytes
void * realloc(void *ptr, size_t size) override
reallocate a block of size bytes
void * alloc(size_t size) override
allocate a block of size bytes
Integer types used throughout NeoN.
Definition array.hpp:18