Block-Structured AMR Software Framework
amrex::DArena Class Reference

#include <AMReX_DArena.H>

Inheritance diagram for amrex::DArena:
amrex::Arena

Public Member Functions

 DArena (std::size_t max_size, std::size_t max_block_size, ArenaInfo info)
 
 DArena (DArena const &)=delete
 
 DArena (DArena &&)=delete
 
DArenaoperator= (DArena const &)=delete
 
DArenaoperator= (DArena &&)=delete
 
virtual ~DArena () override
 
virtual void * alloc (std::size_t nbytes) override final
 
virtual void free (void *p) override final
 A pure virtual function for deleting the arena pointed to by pt. More...
 
std::size_t totalMem () const
 
std::size_t freeMem () const
 
- Public Member Functions inherited from amrex::Arena
virtual ~Arena ()
 
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
 
const ArenaInfoarenaInfo () const
 Return the ArenaInfo object for querying. More...
 

Private Member Functions

std::ptrdiff_t allocate_order (int order)
 
void deallocate_order (int order, std::ptrdiff_t offset)
 

Private Attributes

std::array< std::unordered_set< std::ptrdiff_t >, m_max_max_order+1 > m_free
 
std::unordered_map< std::ptrdiff_t, intm_used
 
std::unordered_map< void *, std::size_t > m_system
 
char * m_baseptr
 
std::size_t m_max_size
 
std::size_t m_block_size
 
int m_max_order
 
std::mutex m_mutex
 
bool warning_printed = false
 

Static Private Attributes

static constexpr int m_max_max_order = 30
 

Additional Inherited Members

- Static Public Member Functions inherited from amrex::Arena
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 inherited from amrex::Arena
static const std::size_t align_size = 16
 
- Protected Member Functions inherited from amrex::Arena
virtual std::size_t freeUnused_protected ()
 
void * allocate_system (std::size_t nbytes)
 
void deallocate_system (void *p, std::size_t nbytes)
 
- Protected Attributes inherited from amrex::Arena
ArenaInfo arena_info
 

Constructor & Destructor Documentation

◆ DArena() [1/3]

amrex::DArena::DArena ( std::size_t  max_size,
std::size_t  max_block_size,
ArenaInfo  info 
)

◆ DArena() [2/3]

amrex::DArena::DArena ( DArena const &  )
delete

◆ DArena() [3/3]

amrex::DArena::DArena ( DArena &&  )
delete

◆ ~DArena()

amrex::DArena::~DArena ( )
overridevirtual

Member Function Documentation

◆ alloc()

void * amrex::DArena::alloc ( std::size_t  sz)
finaloverridevirtual

Allocate a dynamic memory arena

Parameters
szsize of the memory request
Returns
a pointer to the allocated memory

Implements amrex::Arena.

◆ allocate_order()

std::ptrdiff_t amrex::DArena::allocate_order ( int  order)
private

◆ deallocate_order()

void amrex::DArena::deallocate_order ( int  order,
std::ptrdiff_t  offset 
)
private

◆ free()

void amrex::DArena::free ( void *  pt)
finaloverridevirtual

A pure virtual function for deleting the arena pointed to by pt.

Implements amrex::Arena.

◆ freeMem()

std::size_t amrex::DArena::freeMem ( ) const

◆ operator=() [1/2]

DArena& amrex::DArena::operator= ( DArena &&  )
delete

◆ operator=() [2/2]

DArena& amrex::DArena::operator= ( DArena const &  )
delete

◆ totalMem()

std::size_t amrex::DArena::totalMem ( ) const
inline

Member Data Documentation

◆ m_baseptr

char* amrex::DArena::m_baseptr
private

◆ m_block_size

std::size_t amrex::DArena::m_block_size
private

◆ m_free

std::array<std::unordered_set<std::ptrdiff_t>, m_max_max_order+1> amrex::DArena::m_free
private

◆ m_max_max_order

constexpr int amrex::DArena::m_max_max_order = 30
staticconstexprprivate

◆ m_max_order

int amrex::DArena::m_max_order
private

◆ m_max_size

std::size_t amrex::DArena::m_max_size
private

◆ m_mutex

std::mutex amrex::DArena::m_mutex
private

◆ m_system

std::unordered_map<void*,std::size_t> amrex::DArena::m_system
private

◆ m_used

std::unordered_map<std::ptrdiff_t,int> amrex::DArena::m_used
private

◆ warning_printed

bool amrex::DArena::warning_printed = false
private

The documentation for this class was generated from the following files: