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

#include <mem_impl.h>

Inheritance diagram for Realm::MemoryImpl:
Collaboration diagram for Realm::MemoryImpl:

Classes

struct  InstanceList
 

Public Types

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

 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 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)=0
 
virtual void release_storage_immediate (RegionInstanceImpl *inst, bool poisoned, TimeLimit work_until)=0
 
virtual AllocationResult reuse_storage_immediate (RegionInstanceImpl *old_inst, std::vector< RegionInstanceImpl * > &new_insts, bool poisoned, TimeLimit work_until)
 
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
 

Static Public Member Functions

static Memory::Kind get_memory_kind (const RuntimeImpl *runtime_impl, Memory memory)
 
static size_t get_memory_size (const RuntimeImpl *runtime_impl, Memory memory)
 

Public Attributes

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 Attributes

RuntimeImplruntime_impl {nullptr}
 

Member Enumeration Documentation

◆ AllocationResult

Enumerator
ALLOC_INSTANT_SUCCESS 
ALLOC_INSTANT_FAILURE 
ALLOC_DEFERRED 
ALLOC_EVENTUAL_SUCCESS 
ALLOC_EVENTUAL_FAILURE 
ALLOC_CANCELLED 

◆ MemoryKind

Enumerator
MKIND_SYSMEM 
MKIND_GLOBAL 
MKIND_RDMA 
MKIND_REMOTE 
MKIND_GPUFB 
MKIND_MANAGED 
MKIND_ZEROCOPY 
MKIND_DISK 
MKIND_FILE 

Constructor & Destructor Documentation

◆ MemoryImpl()

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

◆ ~MemoryImpl()

virtual Realm::MemoryImpl::~MemoryImpl ( void  )
virtual

Member Function Documentation

◆ add_module_specific()

void Realm::MemoryImpl::add_module_specific ( ModuleSpecificInfo info)

◆ allocate_storage_deferrable()

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

◆ allocate_storage_immediate()

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

◆ attempt_register_external_resource()

◆ find_module_specific() [1/2]

template<typename T >
T * Realm::MemoryImpl::find_module_specific ( )

◆ find_module_specific() [2/2]

template<typename T >
const T * Realm::MemoryImpl::find_module_specific ( ) const

◆ generate_resource_info()

◆ get_bytes()

◆ get_direct_ptr()

◆ get_inst_ptr()

virtual void * Realm::MemoryImpl::get_inst_ptr ( RegionInstanceImpl inst,
off_t  offset,
size_t  size 
)
virtual

◆ get_instance()

RegionInstanceImpl * Realm::MemoryImpl::get_instance ( ID  id)

◆ get_kind()

Memory::Kind Realm::MemoryImpl::get_kind ( void  ) const

◆ get_local_addr()

virtual bool Realm::MemoryImpl::get_local_addr ( off_t  offset,
LocalAddress local_addr 
)
virtual

◆ get_memory_kind()

static Memory::Kind Realm::MemoryImpl::get_memory_kind ( const RuntimeImpl runtime_impl,
Memory  memory 
)
static

◆ get_memory_size()

static size_t Realm::MemoryImpl::get_memory_size ( const RuntimeImpl runtime_impl,
Memory  memory 
)
static

◆ get_network_segment()

NetworkSegment * Realm::MemoryImpl::get_network_segment ( )

◆ get_rdma_info()

const ByteArray * Realm::MemoryImpl::get_rdma_info ( NetworkModule network) const

◆ get_remote_addr()

virtual bool Realm::MemoryImpl::get_remote_addr ( off_t  offset,
RemoteAddress remote_addr 
)
virtual

◆ get_runtime_impl()

RuntimeImpl * Realm::MemoryImpl::get_runtime_impl ( ) const
inline

◆ new_instance()

RegionInstanceImpl * Realm::MemoryImpl::new_instance ( const ProfilingRequestSet prs)

◆ put_bytes()

◆ release_instance()

void Realm::MemoryImpl::release_instance ( RegionInstance  inst)

◆ release_storage_deferrable()

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

◆ release_storage_immediate()

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

◆ reuse_allocated_range()

virtual void Realm::MemoryImpl::reuse_allocated_range ( RegionInstanceImpl old_inst,
std::vector< RegionInstanceImpl * > &  new_insts 
)
inlinevirtual

◆ reuse_storage_deferrable()

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

◆ reuse_storage_immediate()

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

◆ unregister_external_resource()

Member Data Documentation

◆ instance_map_mutex

Mutex Realm::MemoryImpl::instance_map_mutex

◆ instances_by_creator

std::map<NodeID, InstanceList *> Realm::MemoryImpl::instances_by_creator

◆ kind

MemoryKind Realm::MemoryImpl::kind

◆ local_instances

InstanceList Realm::MemoryImpl::local_instances

◆ lowlevel_kind

Memory::Kind Realm::MemoryImpl::lowlevel_kind {Memory::Kind::NO_MEMKIND}

◆ me

Memory Realm::MemoryImpl::me {REALM_NO_MEM}

◆ module_specific

ModuleSpecificInfo* Realm::MemoryImpl::module_specific {nullptr}

◆ runtime_impl

RuntimeImpl* Realm::MemoryImpl::runtime_impl {nullptr}
protected

◆ segment

NetworkSegment* Realm::MemoryImpl::segment {nullptr}

◆ size

size_t Realm::MemoryImpl::size {0}

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