EBGeometry
Compact, header-only C++ library for fast evaluation of signed distance functions
Loading...
Searching...
No Matches
Public Member Functions | List of all members
EBGeometry::HostMemoryResource Class Referencefinal

Host memory resource: plain aligned allocation in host RAM (std::aligned_alloc / free family). More...

#include <EBGeometry_MemoryResource.hpp>

Inheritance diagram for EBGeometry::HostMemoryResource:
Inheritance graph
[legend]
Collaboration diagram for EBGeometry::HostMemoryResource:
Collaboration graph
[legend]

Public Member Functions

 HostMemoryResource ()=default
 Default constructor.
 
 ~HostMemoryResource () override=default
 Destructor.
 
void * allocate (size_t a_bytes, size_t a_alignment) override
 Allocate an aligned block of host memory.
 
void deallocate (void *a_ptr, size_t a_bytes, size_t a_alignment) noexcept override
 Free a block previously returned by allocate.
 
bool isHostAccessible () const noexcept override
 Host blocks are host-accessible.
 
bool isDeviceAccessible () const noexcept override
 Host blocks are not device-accessible.
 
- Public Member Functions inherited from EBGeometry::MemoryResource
 MemoryResource ()=default
 Default constructor.
 
virtual ~MemoryResource ()=default
 Destructor.
 
 MemoryResource (const MemoryResource &)=delete
 Copy constructor. Deleted: a resource's identity is meaningful and non-copyable.
 
MemoryResource & operator= (const MemoryResource &)=delete
 Copy assignment. Deleted: a resource's identity is meaningful and non-copyable.
 
virtual void copy (void *a_dst, const MemoryResource &a_dstResource, const void *a_src, const MemoryResource &a_srcResource, size_t a_bytes) const noexcept
 Copy a block between memory from two resources, one of which is this one.
 

Detailed Description

Host memory resource: plain aligned allocation in host RAM (std::aligned_alloc / free family).

Always compiled, on every backend. Blocks are host-accessible and not device-accessible.

Member Function Documentation

◆ allocate()

void * EBGeometry::HostMemoryResource::allocate ( size_t  a_bytes,
size_t  a_alignment 
)
overridevirtual

Allocate an aligned block of host memory.

Parameters
[in]a_bytesNumber of bytes to allocate.
[in]a_alignmentRequired alignment in bytes (power of two).
Returns
Pointer to the allocated host block (never null on success).

Implements EBGeometry::MemoryResource.

◆ deallocate()

void EBGeometry::HostMemoryResource::deallocate ( void *  a_ptr,
size_t  a_bytes,
size_t  a_alignment 
)
overridevirtualnoexcept

Free a block previously returned by allocate.

Parameters
[in]a_ptrPointer to free (null is a no-op).
[in]a_bytesUnused (host free needs no size).
[in]a_alignmentUnused (host free needs no alignment).

Implements EBGeometry::MemoryResource.

◆ isDeviceAccessible()

bool EBGeometry::HostMemoryResource::isDeviceAccessible ( ) const
inlineoverridevirtualnoexcept

Host blocks are not device-accessible.

Returns
Always false.

Implements EBGeometry::MemoryResource.

◆ isHostAccessible()

bool EBGeometry::HostMemoryResource::isHostAccessible ( ) const
inlineoverridevirtualnoexcept

Host blocks are host-accessible.

Returns
Always true.

Implements EBGeometry::MemoryResource.


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