DASH  0.3.0
HBWSpace.h
1 #ifndef DASH__MEMORY__HBW_SPACE_H__INCLUDED
2 #define DASH__MEMORY__HBW_SPACE_H__INCLUDED
3 
4 #include <dash/memory/MemorySpaceBase.h>
5 
6 #ifdef DASH_ENABLE_MEMKIND
7 #include <hbwmalloc.h>
8 #else
9 #include <cstdlib>
10 #endif
11 
12 namespace dash {
13 
14 class HBWSpace
15  : public dash::MemorySpace<memory_domain_local, memory_space_hbw_tag> {
16 #ifdef DASH_ENABLE_MEMKIND
17  static_assert(alignof(void*) == sizeof(void*), "Required by Memkind");
18 #endif
19 
20 public:
21  using void_pointer = void*;
22  using const_void_pointer = const void*;
23 
24 public:
25  HBWSpace() = default;
26  HBWSpace(HBWSpace const& other) = default;
27  HBWSpace(HBWSpace&& other) = default;
28  HBWSpace& operator=(HBWSpace const& other) = default;
29  HBWSpace& operator=(HBWSpace&& other) = default;
30  ~HBWSpace()
31  {
32  }
33 
34 protected:
35  void* do_allocate(size_t bytes, size_t alignment) override;
36  void do_deallocate(void* p, size_t bytes, size_t alignment) override;
37  bool do_is_equal(std::pmr::memory_resource const& other) const
38  noexcept override;
39 
40 public:
41  static inline bool check_hbw_available(void);
42 };
43 
44 } // namespace dash
45 #endif // DASH__MEMORY__HBW_SPACE_H__INCLUDED
This class is a simple memory pool which holds allocates elements of size ValueType.
Definition: AllOf.h:8