Realm
A distributed, event-based tasking library
Loading...
Searching...
No Matches
Realm::LocalManagedMemory Class Reference

#include <mem_impl.h>

Inheritance diagram for Realm::LocalManagedMemory:
Collaboration diagram for Realm::LocalManagedMemory:

Classes

struct  PendingAlloc
 
struct  PendingRelease
 

Public Types

using RangeAllocator = BasicRangeAllocator< size_t, RegionInstance >
 
- Public Types inherited from Realm::MemoryImpl
enum  MemoryKind {
  MKIND_SYSMEM , MKIND_GLOBAL , MKIND_RDMA , MKIND_REMOTE ,
  MKIND_GPUFB , MKIND_MANAGED , MKIND_ZEROCOPY , MKIND_DISK ,
  MKIND_FILE
}
 
enum  AllocationResult {
  ALLOC_INSTANT_SUCCESS , ALLOC_INSTANT_FAILURE , ALLOC_DEFERRED , ALLOC_EVENTUAL_SUCCESS ,
  ALLOC_EVENTUAL_FAILURE , ALLOC_CANCELLED
}
 

Public Member Functions

 LocalManagedMemory (RuntimeImpl *_runtime_impl, Memory _me, size_t _size, MemoryKind _kind, size_t _alignment, Memory::Kind _lowlevel_kind, NetworkSegment *_segment)
 
virtual ~LocalManagedMemory (void)
 
virtual AllocationResult allocate_storage_deferrable (RegionInstanceImpl *inst, bool need_alloc_result, Event precondition)
 
virtual void release_storage_deferrable (RegionInstanceImpl *inst, Event precondition)
 
virtual AllocationResult reuse_storage_deferrable (RegionInstanceImpl *old_inst, std::vector< RegionInstanceImpl * > &new_insts, Event precondition)
 
virtual AllocationResult allocate_storage_immediate (RegionInstanceImpl *inst, bool need_alloc_result, bool poisoned, TimeLimit work_until)
 
virtual void release_storage_immediate (RegionInstanceImpl *inst, bool poisoned, TimeLimit work_until)
 
virtual AllocationResult reuse_storage_immediate (RegionInstanceImpl *old_inst, std::vector< RegionInstanceImpl * > &new_insts, bool poisoned, TimeLimit work_until)
 
- Public Member Functions inherited from Realm::MemoryImpl
 MemoryImpl (RuntimeImpl *_runtime_impl, Memory _me, size_t _size, MemoryKind _kind, Memory::Kind _lowlevel_kind, NetworkSegment *_segment)
 
virtual ~MemoryImpl (void)
 
RegionInstanceImplget_instance (ID id)
 
RegionInstanceImplnew_instance (const ProfilingRequestSet &prs)
 
void release_instance (RegionInstance inst)
 
virtual void reuse_allocated_range (RegionInstanceImpl *old_inst, std::vector< RegionInstanceImpl * > &new_insts)
 
virtual bool attempt_register_external_resource (RegionInstanceImpl *inst, size_t &inst_offset)
 
virtual void unregister_external_resource (RegionInstanceImpl *inst)
 
virtual ExternalInstanceResourcegenerate_resource_info (RegionInstanceImpl *inst, const IndexSpaceGeneric *subspace, span< const FieldID > fields, bool read_only)
 
virtual void get_bytes (off_t offset, void *dst, size_t size)=0
 
virtual void put_bytes (off_t offset, const void *src, size_t size)=0
 
virtual void * get_direct_ptr (off_t offset, size_t size)=0
 
virtual void * get_inst_ptr (RegionInstanceImpl *inst, off_t offset, size_t size)
 
const ByteArrayget_rdma_info (NetworkModule *network) const
 
virtual bool get_local_addr (off_t offset, LocalAddress &local_addr)
 
virtual bool get_remote_addr (off_t offset, RemoteAddress &remote_addr)
 
NetworkSegmentget_network_segment ()
 
Memory::Kind get_kind (void) const
 
template<typename T >
T * find_module_specific ()
 
template<typename T >
const T * find_module_specific () const
 
void add_module_specific (ModuleSpecificInfo *info)
 
RuntimeImplget_runtime_impl () const
 

Public Attributes

size_t alignment
 
Mutex allocator_mutex
 
RangeAllocator current_allocator
 
RangeAllocator future_allocator
 
RangeAllocator release_allocator
 
unsigned cur_release_seqid
 
std::deque< PendingAllocpending_allocs
 
std::deque< PendingReleasepending_releases
 
ProfilingGauges::AbsoluteGauge< size_t > usage
 
ProfilingGauges::AbsoluteGauge< size_t > peak_usage
 
ProfilingGauges::AbsoluteGauge< size_t > peak_footprint
 
- Public Attributes inherited from Realm::MemoryImpl
Memory me {REALM_NO_MEM}
 
size_t size {0}
 
MemoryKind kind
 
Memory::Kind lowlevel_kind {Memory::Kind::NO_MEMKIND}
 
NetworkSegmentsegment {nullptr}
 
ModuleSpecificInfomodule_specific {nullptr}
 
std::map< NodeID, InstanceList * > instances_by_creator
 
Mutex instance_map_mutex
 
InstanceList local_instances
 

Protected Member Functions

AllocationResult attempt_deferrable_allocation (RegionInstanceImpl *inst, size_t bytes, size_t alignment, size_t &inst_offset)
 
bool attempt_release_reordering (std::vector< std::pair< RegionInstanceImpl *, size_t > > &successful_allocs)
 
void remove_pending_release (RegionInstanceImpl *inst, std::vector< RegionInstanceImpl * > &failed_allocs)
 

Additional Inherited Members

- Static Public Member Functions inherited from Realm::MemoryImpl
static Memory::Kind get_memory_kind (const RuntimeImpl *runtime_impl, Memory memory)
 
static size_t get_memory_size (const RuntimeImpl *runtime_impl, Memory memory)
 
- Protected Attributes inherited from Realm::MemoryImpl
RuntimeImplruntime_impl {nullptr}
 

Member Typedef Documentation

◆ RangeAllocator

Constructor & Destructor Documentation

◆ LocalManagedMemory()

Realm::LocalManagedMemory::LocalManagedMemory ( RuntimeImpl _runtime_impl,
Memory  _me,
size_t  _size,
MemoryKind  _kind,
size_t  _alignment,
Memory::Kind  _lowlevel_kind,
NetworkSegment _segment 
)

◆ ~LocalManagedMemory()

virtual Realm::LocalManagedMemory::~LocalManagedMemory ( void  )
virtual

Member Function Documentation

◆ allocate_storage_deferrable()

virtual AllocationResult Realm::LocalManagedMemory::allocate_storage_deferrable ( RegionInstanceImpl inst,
bool  need_alloc_result,
Event  precondition 
)
virtual

Reimplemented from Realm::MemoryImpl.

◆ allocate_storage_immediate()

virtual AllocationResult Realm::LocalManagedMemory::allocate_storage_immediate ( RegionInstanceImpl inst,
bool  need_alloc_result,
bool  poisoned,
TimeLimit  work_until 
)
virtual

Implements Realm::MemoryImpl.

◆ attempt_deferrable_allocation()

AllocationResult Realm::LocalManagedMemory::attempt_deferrable_allocation ( RegionInstanceImpl inst,
size_t  bytes,
size_t  alignment,
size_t &  inst_offset 
)
protected

◆ attempt_release_reordering()

bool Realm::LocalManagedMemory::attempt_release_reordering ( std::vector< std::pair< RegionInstanceImpl *, size_t > > &  successful_allocs)
protected

◆ release_storage_deferrable()

virtual void Realm::LocalManagedMemory::release_storage_deferrable ( RegionInstanceImpl inst,
Event  precondition 
)
virtual

Reimplemented from Realm::MemoryImpl.

◆ release_storage_immediate()

virtual void Realm::LocalManagedMemory::release_storage_immediate ( RegionInstanceImpl inst,
bool  poisoned,
TimeLimit  work_until 
)
virtual

Implements Realm::MemoryImpl.

◆ remove_pending_release()

void Realm::LocalManagedMemory::remove_pending_release ( RegionInstanceImpl inst,
std::vector< RegionInstanceImpl * > &  failed_allocs 
)
protected

◆ reuse_storage_deferrable()

virtual AllocationResult Realm::LocalManagedMemory::reuse_storage_deferrable ( RegionInstanceImpl old_inst,
std::vector< RegionInstanceImpl * > &  new_insts,
Event  precondition 
)
virtual

Reimplemented from Realm::MemoryImpl.

◆ reuse_storage_immediate()

virtual AllocationResult Realm::LocalManagedMemory::reuse_storage_immediate ( RegionInstanceImpl old_inst,
std::vector< RegionInstanceImpl * > &  new_insts,
bool  poisoned,
TimeLimit  work_until 
)
virtual

Reimplemented from Realm::MemoryImpl.

Member Data Documentation

◆ alignment

size_t Realm::LocalManagedMemory::alignment

◆ allocator_mutex

Mutex Realm::LocalManagedMemory::allocator_mutex

◆ cur_release_seqid

unsigned Realm::LocalManagedMemory::cur_release_seqid

◆ current_allocator

RangeAllocator Realm::LocalManagedMemory::current_allocator

◆ future_allocator

RangeAllocator Realm::LocalManagedMemory::future_allocator

◆ peak_footprint

ProfilingGauges::AbsoluteGauge<size_t> Realm::LocalManagedMemory::peak_footprint

◆ peak_usage

ProfilingGauges::AbsoluteGauge<size_t> Realm::LocalManagedMemory::peak_usage

◆ pending_allocs

std::deque<PendingAlloc> Realm::LocalManagedMemory::pending_allocs

◆ pending_releases

std::deque<PendingRelease> Realm::LocalManagedMemory::pending_releases

◆ release_allocator

RangeAllocator Realm::LocalManagedMemory::release_allocator

◆ usage

ProfilingGauges::AbsoluteGauge<size_t> Realm::LocalManagedMemory::usage

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