20#ifndef REALM_INSTANCE_H
21#define REALM_INSTANCE_H
47 template <
int N,
typename T>
49 template <
int N,
typename T>
57 namespace PieceLookup {
76 constexpr operator id_t()
const {
return id; }
99 template <
int N,
typename T>
102 template <
int N,
typename T>
105 uintptr_t &field_offset);
121 size_t datalen,
bool exclusive =
false)
const;
123 size_t datalen,
bool exclusive =
false)
const;
136 template <
typename T>
138 template <
typename T>
139 void write(
size_t offset, T val)
const;
140 template <
typename T>
142 bool exclusive =
false)
const;
143 template <
typename T>
145 bool exclusive =
false)
const;
146 template <
typename T>
179 Event wait_on = Event::NO_EVENT);
195 Event wait_on = Event::NO_EVENT);
197 "use RegionInstance::create_instance with layout reference instead",
201 Event wait_on = Event::NO_EVENT));
219 Event wait_on = Event::NO_EVENT);
221 "use RegionInstance::create_external_instance with layout reference instead",
226 Event wait_on = Event::NO_EVENT));
242 template <
int N,
typename T>
245 const std::vector<size_t> &field_sizes,
size_t block_size,
248 template <
int N,
typename T>
251 const std::map<FieldID, size_t> &field_sizes,
size_t block_size,
259 template <
int N,
typename T>
262 const std::vector<size_t> &field_sizes,
266 template <
int N,
typename T>
269 const std::map<FieldID, size_t> &field_sizes,
273 template <
int N,
typename T>
275 static Event create_file_instance(
278 const std::vector<FieldID> &field_ids,
279 const std::vector<size_t> &field_sizes,
281 Event wait_on = Event::NO_EVENT));
284 template <
int N,
typename T>
285 struct HDF5FieldInfo {
288 std::string dataset_name;
294 template <int N, typename T>
static Event create_hdf5_instance(
297 const std::vector<HDF5FieldInfo<N, T>> &field_infos,
299 Event wait_on = Event::NO_EVENT));
304 Memory memory, uintptr_t base,
307 Event wait_on = Event::NO_EVENT));
329 template <
int N,
typename T>
370 bool read_only)
const;
385 void destroy(
const std::vector<DestroyedField> &destroyed_fields,
386 Event wait_on = Event::NO_EVENT)
const;
389 ptrdiff_t field_offset,
size_t field_size);
391 size_t field_size, intptr_t &base,
395 size_t reason_size)
const;
423 template <
typename S>
433 virtual void print(std::ostream &os)
const = 0;
434 uint64_t type_id = 0;
437 template <
typename S>
456 template <
typename S>
459 template <
typename S>
469 virtual void print(std::ostream &os)
const;
492 template <
typename S>
495 template <
typename S>
505 virtual void print(std::ostream &os)
const;
516#ifndef REALM_SKIP_INLINES
517#include "realm/instance.inl"
Definition instance.h:480
size_t offset
Definition instance.h:509
static ExternalInstanceResource * deserialize_new(S &deserializer)
realm_file_mode_t mode
Definition instance.h:510
static Serialization::PolymorphicSerdezSubclass< ExternalInstanceResource, ExternalFileResource > serdez_subclass
Definition instance.h:503
bool serialize(S &serializer) const
virtual ExternalInstanceResource * clone(void) const
std::string filename
Definition instance.h:508
virtual bool satisfies(const InstanceLayoutGeneric &layout) const
Memory suggested_memory() const
ExternalFileResource(const std::string &_filename, realm_file_mode_t _mode, size_t _offset=0)
virtual void print(std::ostream &os) const
Definition instance.h:405
virtual ~ExternalInstanceResource()
Definition instance.h:413
uint64_t get_type_id() const
Definition instance.h:430
ExternalInstanceResource(uint64_t _type_id)
Definition instance.h:408
virtual Memory suggested_memory() const =0
virtual ExternalInstanceResource * clone(void) const =0
virtual void print(std::ostream &os) const =0
virtual bool satisfies(const InstanceLayoutGeneric &layout) const =0
friend std::ostream & operator<<(std::ostream &os, const ExternalInstanceResource &res)
static ExternalInstanceResource * deserialize_new(S &deserializer)
Definition instance.h:443
virtual bool satisfies(const InstanceLayoutGeneric &layout) const
static Serialization::PolymorphicSerdezSubclass< ExternalInstanceResource, ExternalMemoryResource > serdez_subclass
Definition instance.h:467
ExternalMemoryResource(uintptr_t _base, size_t _size_in_bytes, bool _read_only)
size_t size_in_bytes
Definition instance.h:473
uintptr_t base
Definition instance.h:472
Memory suggested_memory() const
static ExternalInstanceResource * deserialize_new(S &deserializer)
virtual ExternalInstanceResource * clone(void) const
bool read_only
Definition instance.h:474
bool serialize(S &serializer) const
ExternalMemoryResource(const void *_base, size_t _size_in_bytes)
virtual void print(std::ostream &os) const
ExternalMemoryResource(void *_base, size_t _size_in_bytes)
Definition indexspace.h:1115
Definition inst_layout.h:164
Definition indexspace.h:1179
Definition processor.h:37
Definition profiling.h:363
T read(size_t offset) const
void reduce_fold_untyped(size_t offset, ReductionOpID redop_id, const void *data, size_t datalen, bool exclusive=false) const
REALM_CUDA_HD bool exists(void) const
static Event create_instance(RegionInstance &inst, Memory memory, const Rect< N, T > &rect, const std::vector< size_t > &field_sizes, size_t block_size, const ProfilingRequestSet &prs, Event wait_on=Event::NO_EVENT)
static const RegionInstance NO_INST
Definition instance.h:82
static Event create_external_instance(RegionInstance &inst, Memory memory, const InstanceLayoutGeneric &ilg, const ExternalInstanceResource &resource, const ProfilingRequestSet &prs, Event wait_on=Event::NO_EVENT)
REALM_ATTR_DEPRECATED("use RegionInstance::create_external_instance with layout reference instead", static Event create_external_instance(RegionInstance &inst, Memory memory, InstanceLayoutGeneric *ilg, const ExternalInstanceResource &resource, const ProfilingRequestSet &prs, Event wait_on=Event::NO_EVENT))
ExternalInstanceResource * generate_resource_info(bool read_only) const
Memory get_location(void) const
REALM_ATTR_DEPRECATED("use RegionInstance::create_external_instance instead", static Event create_file_instance(RegionInstance &inst, const char *file_name, const IndexSpace< N, T > &space, const std::vector< FieldID > &field_ids, const std::vector< size_t > &field_sizes, realm_file_mode_t file_mode, const ProfilingRequestSet &prs, Event wait_on=Event::NO_EVENT))
void write(size_t offset, T val) const
Event redistrict(RegionInstance &instance, const InstanceLayoutGeneric *layout, const ProfilingRequestSet &prs, Event wait_on=Event::NO_EVENT)
void read_untyped(size_t offset, void *data, size_t datalen) const
void destroy(Event wait_on=Event::NO_EVENT) const
void reduce_apply_untyped(size_t offset, ReductionOpID redop_id, const void *data, size_t datalen, bool exclusive=false) const
::realm_id_t id_t
Definition instance.h:68
REALM_INTERNAL_API_EXTERNAL_LINKAGE const PieceLookup::Instruction * get_lookup_program(FieldID field_id, unsigned allowed_mask, uintptr_t &field_offset)
bool operator<(const RegionInstance &rhs) const
static Event create_instance(RegionInstance &inst, Memory memory, const Rect< N, T > &rect, const std::map< FieldID, size_t > &field_sizes, size_t block_size, const ProfilingRequestSet &prs, Event wait_on=Event::NO_EVENT)
void write_untyped(size_t offset, const void *data, size_t datalen) const
void destroy(const std::vector< DestroyedField > &destroyed_fields, Event wait_on=Event::NO_EVENT) const
REALM_INTERNAL_API_EXTERNAL_LINKAGE bool increment_accessor_count(void)
void report_instance_fault(int reason, const void *reason_data, size_t reason_size) const
static Event create_instance(RegionInstance &inst, Memory memory, const IndexSpace< N, T > &space, const std::map< FieldID, size_t > &field_sizes, size_t block_size, const ProfilingRequestSet &prs, Event wait_on=Event::NO_EVENT)
AddressSpace address_space(void) const
bool operator==(const RegionInstance &rhs) const
REALM_ATTR_DEPRECATED("use RegionInstance::create_instance with layout reference instead", static Event create_instance(RegionInstance &inst, Memory memory, InstanceLayoutGeneric *ilg, const ProfilingRequestSet &prs, Event wait_on=Event::NO_EVENT))
void get_strided_access_parameters(size_t start, size_t count, ptrdiff_t field_offset, size_t field_size, intptr_t &base, ptrdiff_t &stride)
bool can_get_strided_access_parameters(size_t start, size_t count, ptrdiff_t field_offset, size_t field_size)
REALM_INTERNAL_API_EXTERNAL_LINKAGE bool decrement_accessor_count(void)
IndexSpace< N, T > get_indexspace(void) const
Event redistrict(RegionInstance *instances, const InstanceLayoutGeneric **layouts, size_t num_layouts, const ProfilingRequestSet *prs, Event wait_on=Event::NO_EVENT)
bool operator!=(const RegionInstance &rhs) const
ExternalInstanceResource * generate_resource_info(const IndexSpaceGeneric &space, span< const FieldID > fields, bool read_only) const
T * pointer(size_t offset) const
void reduce_apply(size_t offset, ReductionOpID redop_id, T val, bool exclusive=false) const
const InstanceLayoutGeneric * get_layout(void) const
id_t id
Definition instance.h:69
static Event create_instance(RegionInstance &inst, Memory memory, const IndexSpace< N, T > &space, const std::vector< size_t > &field_sizes, size_t block_size, const ProfilingRequestSet &prs, Event wait_on=Event::NO_EVENT)
void reduce_fold(size_t offset, ReductionOpID redop_id, T val, bool exclusive=false) const
IndexSpace< N, int > get_indexspace(void) const
constexpr RegionInstance(id_t id)
Definition instance.h:72
REALM_ATTR_DEPRECATED("use RegionInstance::create_external_instance instead", static Event create_external(RegionInstance &inst, Memory memory, uintptr_t base, InstanceLayoutGeneric *ilg, const ProfilingRequestSet &prs, Event wait_on=Event::NO_EVENT))
static Event create_instance(RegionInstance &inst, Memory memory, const InstanceLayoutGeneric &ilg, const ProfilingRequestSet &prs, Event wait_on=Event::NO_EVENT)
void * pointer_untyped(size_t offset, size_t datalen) const
Event fetch_metadata(Processor target) const
REALM_INTERNAL_API_EXTERNAL_LINKAGE const PieceLookup::Instruction * get_lookup_program(FieldID field_id, const Rect< N, T > &subrect, unsigned allowed_mask, uintptr_t &field_offset)
Definition serialize.h:363
#define REALM_INTERNAL_API_EXTERNAL_LINKAGE
Definition compiler_support.h:218
#define REALM_CUDA_HD
Definition compiler_support.h:95
#define REALM_ATTR_DEPRECATED2(msg, thing1, thing2)
Definition compiler_support.h:153
#define REALM_PUBLIC_API
Definition compiler_support.h:217
Definition activemsg.h:38
::realm_address_space_t AddressSpace
Definition memory.h:31
realm_field_id_t FieldID
Definition instance.h:45
int CustomSerdezID
Definition custom_serdez.h:148
bool serialize(S &serdez, const ByteArrayRef &a)
::realm_reduction_op_id_t ReductionOpID
Definition event.h:38
std::ostream & operator<<(std::ostream &os, const DenseRectangleList< N, T > &drl)
int realm_field_id_t
Definition realm_c.h:77
unsigned long long realm_id_t
Definition realm_c.h:64
realm_file_mode_t
Definition realm_c.h:275
Definition indexspace.h:323
Definition inst_layout.h:131
Definition instance.h:373
CustomSerdezID serdez_id
Definition instance.h:381
unsigned size
Definition instance.h:380
FieldID field_id
Definition instance.h:379
DestroyedField(FieldID fid, unsigned s, CustomSerdezID sid)