A virtual base class for objects that manage their own dynamic memory allocation. More...
#include <AMReX_Arena.H>
Classes | |
struct | ArenaProfiler |
Public Member Functions | |
virtual | ~Arena ()=default |
Arena () noexcept=default | |
Arena (const Arena &rhs)=delete | |
Arena (Arena &&rhs)=delete | |
Arena & | operator= (const Arena &rhs)=delete |
Arena & | operator= (Arena &&rhs)=delete |
virtual void * | alloc (std::size_t sz)=0 |
virtual std::pair< void *, std::size_t > | alloc_in_place (void *, std::size_t, std::size_t szmax) |
virtual void * | shrink_in_place (void *, std::size_t sz) |
virtual void | free (void *pt)=0 |
A pure virtual function for deleting the arena pointed to by pt. More... | |
virtual std::size_t | freeUnused () |
Free unused memory back to the system. Return value is the amount memory freed. More... | |
virtual bool | isDeviceAccessible () const |
virtual bool | isHostAccessible () const |
virtual bool | isManaged () const |
virtual bool | isDevice () const |
virtual bool | isPinned () const |
virtual bool | hasFreeDeviceMemory (std::size_t sz) |
Does the device have enough free memory for allocating this much memory? For CPU builds, this always return true. This is not a const function because it may attempt to release memory back to the system. More... | |
void | registerForProfiling (const std::string &memory_name) |
Add this Arena to the list of Arenas that are profiled by TinyProfiler. More... | |
void | deregisterFromProfiling () |
Remove this Arena from the list of Arenas that are profiled by TinyProfiler. This is equivalent to destructing and re-constructing the Arena. More... | |
virtual bool | isStreamOrderedArena () const |
Is this GPU stream ordered memory allocator? More... | |
const ArenaInfo & | arenaInfo () const |
Return the ArenaInfo object for querying. More... | |
Static Public Member Functions | |
static std::size_t | align (std::size_t sz) |
Given a minimum required arena size of sz bytes, this returns the next largest arena size that will align to align_size bytes. More... | |
static void | Initialize () |
static void | PrintUsage () |
static void | PrintUsageToFiles (std::string const &filename, std::string const &message) |
static void | Finalize () |
Static Public Attributes | |
static const std::size_t | align_size = 16 |
Protected Member Functions | |
virtual std::size_t | freeUnused_protected () |
void * | allocate_system (std::size_t nbytes) |
void | deallocate_system (void *p, std::size_t nbytes) |
Protected Attributes | |
ArenaInfo | arena_info |
struct amrex::Arena::ArenaProfiler | m_profiler |
A virtual base class for objects that manage their own dynamic memory allocation.
|
virtualdefault |
|
defaultnoexcept |
|
delete |
|
delete |
|
static |
Given a minimum required arena size of sz bytes, this returns the next largest arena size that will align to align_size bytes.
|
pure virtual |
Allocate a dynamic memory arena
sz | size of the memory request |
Implemented in amrex::detail::SingleChunkArena, amrex::BArena, amrex::PArena, and amrex::CArena.
|
inlinevirtual |
Try to allocate in-place by extending the capacity of given pointer.
Reimplemented in amrex::CArena.
|
protected |
|
protected |
void amrex::Arena::deregisterFromProfiling | ( | ) |
Remove this Arena from the list of Arenas that are profiled by TinyProfiler. This is equivalent to destructing and re-constructing the Arena.
|
static |
|
pure virtual |
A pure virtual function for deleting the arena pointed to by pt.
Implemented in amrex::CArena, amrex::detail::SingleChunkArena, amrex::BArena, and amrex::PArena.
|
inlinevirtual |
Free unused memory back to the system. Return value is the amount memory freed.
Reimplemented in amrex::CArena.
|
inlineprotectedvirtual |
Reimplemented in amrex::CArena.
|
virtual |
Does the device have enough free memory for allocating this much memory? For CPU builds, this always return true. This is not a const function because it may attempt to release memory back to the system.
Reimplemented in amrex::CArena.
|
static |
|
virtual |
Reimplemented in amrex::detail::SingleChunkArena, amrex::PArena, and amrex::BArena.
|
virtual |
Reimplemented in amrex::detail::SingleChunkArena, amrex::PArena, and amrex::BArena.
|
virtual |
Reimplemented in amrex::detail::SingleChunkArena, amrex::PArena, and amrex::BArena.
|
virtual |
Reimplemented in amrex::detail::SingleChunkArena, amrex::PArena, and amrex::BArena.
|
virtual |
Reimplemented in amrex::detail::SingleChunkArena, amrex::PArena, and amrex::BArena.
|
inlinevirtual |
Is this GPU stream ordered memory allocator?
Reimplemented in amrex::PArena.
|
static |
|
static |
void amrex::Arena::registerForProfiling | ( | const std::string & | memory_name | ) |
Add this Arena to the list of Arenas that are profiled by TinyProfiler.
memory_name | The name of this arena in the TinyProfiler output. |
|
inlinevirtual |
Try to shrink in-place
Reimplemented in amrex::CArena.
|
static |
|
protected |
|
protected |