37 const std::string_view &name,
41 const std::string_view &task_name);
53 template <
int N,
typename T>
55 template <
int N,
typename T>
60 template <
typename T,
size_t Extent = dynamic_extent>
76 namespace ReductionKernels {
79#if defined(REALM_USE_CUDA) && defined(__CUDACC__)
81 using HasHasCudaReductions = Realm::HasHasCudaReductions<T>;
83#if defined(REALM_USE_HIP) && (defined(__CUDACC__) || defined(__HIPCC__))
85 using HasHasHipReductions = Realm::HasHasHipReductions<T>;
87 template <
typename REDOP>
94 template <
typename T,
size_t MAX_SER_SIZE = 4096>
132 Event ev6 = NO_EVENT);
167 void trigger(
Event wait_on = Event::NO_EVENT,
bool ignore_faults =
false)
const;
214 const void *initial_value = 0,
215 size_t initial_value_size = 0);
219 const void *initial_value = 0,
220 size_t initial_value_size = 0);
222 size_t num_participants);
231 const void *reduce_value = 0,
size_t reduce_value_size = 0)
const;
279 Event wait_on = Event::NO_EVENT)
const;
281 Event wait_on = Event::NO_EVENT)
const;
325 typedef void (*TaskFuncPtr)(
const void *args,
size_t arglen,
const void *user_data,
328 Event wait_on = Event::NO_EVENT,
int priority = 0)
const;
333 int priority = 0)
const;
337 size_t user_data_len = 0)
const;
342 const void *user_data = 0,
343 size_t user_data_len = 0);
385 namespace PieceLookup {
390 namespace PieceLayoutTypes {
394 template <
int N,
typename T =
int>
396 template <
int N,
typename T =
int>
398 template <
int N,
typename T =
int>
400 template <
int N,
typename T =
int>
413 unique_event = Event::NO_EVENT;
426 Event wait_on = Event::NO_EVENT);
430 Event wait_on = Event::NO_EVENT);
434 Event wait_on = Event::NO_EVENT);
439 Event wait_on = Event::NO_EVENT);
444 Event wait_on = Event::NO_EVENT);
448 Event wait_on = Event::NO_EVENT);
449 template <
int N,
typename T>
452 const std::vector<size_t> &field_sizes,
size_t block_size,
454 template <
int N,
typename T>
457 const std::map<FieldID, size_t> &field_sizes,
size_t block_size,
459 template <
int N,
typename T>
462 const std::vector<size_t> &field_sizes,
465 template <
int N,
typename T>
468 const std::map<FieldID, size_t> &field_sizes,
471 template <
int N,
typename T>
474 const std::vector<FieldID> &field_ids,
475 const std::vector<size_t> &field_sizes,
478 Event wait_on = Event::NO_EVENT);
481 template <
int N,
typename T>
494 static_assert(std::has_unique_object_representations_v<RegionInstance>);
507 size_t _subfield_offset = 0);
509 size_t _subfield_offset = 0);
511 bool exclusive =
false);
514 template <
typename T>
530 static constexpr size_t MAX_DIRECT_SIZE = 8;
538 template <
int N,
typename T =
int>
540 template <
int N,
typename T =
int>
545 template <
int N2,
typename T2>
549 template <
int N2,
typename T2>
553 template <
int N2,
typename T2>
559 template <
int N2,
typename T2>
568 size_t fill_value_size,
Event wait_on = Event::NO_EVENT,
569 int priority = 0)
const;
572 const std::vector<CopySrcDstField> &dsts,
574 int priority = 0)
const;
579 int priority = 0)
const;
581 template <
int N,
typename T =
int>
583 template <
int M,
int N,
typename T =
int>
588 namespace ProfilingMeasurements {
618 bool local_only =
true)
const;
623 template <
typename QT,
typename RT>
646 bool remove_realm_args =
false);
649 bool remove_realm_args =
false);
652 bool init(
int *argc,
char ***argv);
655 const void *args,
size_t arglen,
656 Event wait_on = Event::NO_EVENT,
int priority = 0);
660 size_t arglen,
bool one_per_node =
false,
661 Event wait_on = Event::NO_EVENT,
int priority = 0);
665 template <
typename T>
668 Module *mod = get_module_untyped(name);
670 return dynamic_cast<T *
>(mod);
680 template <
typename FT>
682 template <
typename FT,
int N,
typename T =
int>
688 size_t subfield_offset = 0);
700 bool did_read =
false;
701 bool did_write =
false;
703 template <
typename FT,
int N,
typename T =
int>
710 size_t subfield_offset = 0);
711 template <
int N2,
typename T2>
714 size_t subfield_offset = 0);
715 template <
int N2,
typename T2>
718 const Rect<N, T> &subrect,
size_t subfield_offset = 0);
729 FT *ptr(const
Point<N, T> &p) const;
731 FT read(const
Point<N, T> &p) const;
733 void write(const
Point<N, T> &p, FT newval) const;
735 FT &operator[](const
Point<N, T> &p) const;
742 mutable
bool did_read = false;
743 mutable
bool did_write = false;
744 mutable
bool escaped = false;
746 template <typename FT,
int N, typename T>
753 size_t subfield_offset = 0);
755 size_t subfield_offset = 0);
766 FT *ptr(const
Point<N, T> &p) const;
768 FT *ptr(const
Rect<N, T> &r,
size_t strides[N]) const;
770 FT read(const
Point<N, T> &p) const;
772 void write(const
Point<N, T> &p, FT newval) const;
774 FT &operator[](const
Point<N, T> &p) const;
778 FT *ptr(const
Rect<N, T> &r,
size_t strides[N]);
782 void write(const
Point<N, T> &p, FT newval);
784 FT &operator[](const
Point<N, T> &p);
791 mutable
bool did_read = false;
792 mutable
bool did_write = false;
793 mutable
bool escaped = false;
797 template <typename IS, typename FT>
799 template <
int N, typename T =
int>
801 template <
int M,
int N, typename T =
int>
803 template <
int N, typename T,
int N2, typename T2>
805 template <
int N, typename T,
int N2, typename T2>
807 template <
int N, typename T =
int>
809 template <
int N, typename T>
830 size_t fill_value_size,
Event wait_on = Event::NO_EVENT,
831 int priority = 0)
const;
833 const std::vector<CopySrcDstField> &dsts,
835 int priority = 0)
const;
837 const std::vector<CopySrcDstField> &dsts,
840 int priority = 0)
const;
845 Event wait_on = Event::NO_EVENT)
const;
849 Event wait_on = Event::NO_EVENT)
const;
851 const std::vector<int> &weights,
854 Event wait_on = Event::NO_EVENT)
const;
856 const std::vector<size_t> &weights,
859 Event wait_on = Event::NO_EVENT)
const;
860 template <
typename FT>
864 Event wait_on = Event::NO_EVENT)
const;
866 template <
typename FT>
871 template <
typename FT,
typename FT2>
876 template <
typename FT,
typename FT2>
881 Event wait_on = Event::NO_EVENT)
const;
882 template <
int N2,
typename T2,
typename TRANSFORM>
887 Event wait_on = Event::NO_EVENT)
const;
888 template <
int N2,
typename T2,
typename TRANSFORM>
893 Event wait_on = Event::NO_EVENT)
const;
894 template <
int N2,
typename T2>
899 Event wait_on = Event::NO_EVENT)
const;
900 template <
int N2,
typename T2>
906 template <
int N2,
typename T2>
912 Event wait_on = Event::NO_EVENT)
const;
913 template <
int N2,
typename T2>
919 template <
int N2,
typename T2>
925 Event wait_on = Event::NO_EVENT)
const;
926 template <
int N2,
typename T2>
933 Event wait_on = Event::NO_EVENT)
const;
934 template <
int N2,
typename T2>
940 Event wait_on = Event::NO_EVENT)
const;
941 template <
int N2,
typename T2,
typename TRANSFORM>
946 Event wait_on = Event::NO_EVENT)
const;
947 template <
int N2,
typename T2,
typename TRANSFORM>
952 Event wait_on = Event::NO_EVENT)
const;
953 template <
int N2,
typename T2>
959 Event wait_on = Event::NO_EVENT)
const;
960 template <
int N2,
typename T2>
966 template <
int N2,
typename T2>
972 Event wait_on = Event::NO_EVENT)
const;
973 template <
int N2,
typename T2>
979 template <
int N2,
typename T2>
985 Event wait_on = Event::NO_EVENT)
const;
988 Event wait_on = Event::NO_EVENT);
993 Event wait_on = Event::NO_EVENT);
998 Event wait_on = Event::NO_EVENT);
1003 Event wait_on = Event::NO_EVENT);
1008 Event wait_on = Event::NO_EVENT);
1013 Event wait_on = Event::NO_EVENT);
1018 Event wait_on = Event::NO_EVENT);
1023 Event wait_on = Event::NO_EVENT);
1027 Event wait_on = Event::NO_EVENT);
1032 Event wait_on = Event::NO_EVENT);
1037 Event wait_on = Event::NO_EVENT);
1042 Event wait_on = Event::NO_EVENT);
1045 Event wait_on = Event::NO_EVENT);
1049 Event wait_on = Event::NO_EVENT);
1069 const std::vector<CopySrcDstField> &dsts,
1071 int priority = 0)
const;
1073 template <
int N,
typename T>
1075 const std::vector<CopySrcDstField> &dsts,
1078 int priority = 0)
const;
1088 namespace TypeConv {
1095#ifdef REALM_USE_DLFCN
1096 using Realm::DSOCodeTranslator;
1097 using Realm::DSOReferenceImplementation;
1108#ifdef REALM_USE_CUDA
1123 using Realm::Cuda::UUID_SIZE;
1128 virtual ~CudaModule(
void);
1130 inline CUstream_st *get_task_cuda_stream()
1132 return internal->get_task_cuda_stream();
1134 inline void set_task_ctxsync_required(
bool is_required)
1136 internal->set_task_ctxsync_required(is_required);
1139 Event make_realm_event(CUevent_st *cuda_event);
1140 Event make_realm_event(CUstream_st *cuda_stream);
1144 return internal->get_cuda_device_uuid(p, uuid);
1149 return internal->get_cuda_device_id(p, device);
1152 inline bool get_cuda_context(
Processor p, CUctx_st **context)
const
1154 return internal->get_cuda_context(p, context);
1157 inline bool register_reduction(
Event &event,
const CudaRedOpDesc *descs,
size_t num)
1159 return internal->register_reduction(event, descs, num);
1170#include "prealm.inl"
AffineAccessor & operator=(const AffineAccessor &)=default
AffineAccessor(RegionInstance inst, const Matrix< N2, N, T2 > &transform, const Point< N2, T2 > &offset, FieldID field_id, const Rect< N, T > &subrect, size_t subfield_offset=0)
AffineAccessor(RegionInstance inst, FieldID field_id, size_t subfield_offset=0)
AffineAccessor(const AffineAccessor &)=default
REALM_CUDA_HD ~AffineAccessor(void)
AffineAccessor(RegionInstance inst, const Matrix< N2, N, T2 > &transform, const Point< N2, T2 > &offset, FieldID field_id, size_t subfield_offset=0)
REALM_CUDA_HD AffineAccessor(void)
Definition prealm.h:707
AffineAccessor(AffineAccessor &&) noexcept=default
AffineAccessor(RegionInstance inst, FieldID field_id, const Rect< N, T > &subrect, size_t subfield_offset=0)
void arrive(unsigned count=1, Event wait_on=Event::NO_EVENT, const void *reduce_value=0, size_t reduce_value_size=0) const
bool get_result(void *value, size_t value_size) const
Barrier(Barrier &&b)=default
Barrier alter_arrival_count(int delta) const
timestamp_t timestamp
Definition prealm.h:209
static Barrier create_barrier(unsigned expected_arrivals, ReductionOpID redop_id=0, const void *initial_value=0, size_t initial_value_size=0)
Barrier & operator=(const Barrier &b)=default
Barrier(void)
Definition prealm.h:178
::realm_barrier_timestamp_t timestamp_t
Definition prealm.h:208
static Barrier create_barrier(const Barrier::ParticipantInfo *expected_arrivals, size_t num_participants, ReductionOpID redop_id=0, const void *initial_value=0, size_t initial_value_size=0)
Barrier advance_barrier(void) const
Barrier get_previous_phase(void) const
Barrier(const Realm::Barrier &b)
Definition prealm.h:189
Barrier & operator=(Barrier &&b)=default
Barrier(::realm_id_t i, ::realm_barrier_timestamp_t t)
Definition prealm.h:183
Barrier(const Barrier &b)=default
static const Barrier NO_BARRIER
Definition prealm.h:211
void destroy_barrier(void)
Barrier & operator=(const Realm::Barrier &b)
Definition prealm.h:196
Barrier set_arrival_pattern(const Barrier::ParticipantInfo *expected_arrivals, size_t num_participants)
static const ::realm_event_gen_t MAX_PHASES
Definition prealm.h:225
size_t pop_events(Event *events, size_t max_events)
CompletionQueue(void)
Definition prealm.h:238
Event get_nonempty_event(void)
CompletionQueue & operator=(const CompletionQueue &q)=default
CompletionQueue(const CompletionQueue &q)=default
CompletionQueue & operator=(Realm::CompletionQueue q)
Definition prealm.h:244
CompletionQueue(Realm::CompletionQueue q)
Definition prealm.h:239
CompletionQueue & operator=(CompletionQueue &&q)=default
CompletionQueue(CompletionQueue &&q)=default
static const CompletionQueue NO_QUEUE
Definition prealm.h:258
bool is_barrier(void) const
static Event merge_events(const std::set< Event > &wait_for)
static Event ignorefaults(Event wait_for)
static Event merge_events(Event ev1, Event ev2, Event ev3=NO_EVENT, Event ev4=NO_EVENT, Event ev5=NO_EVENT, Event ev6=NO_EVENT)
Event & operator=(const Event &e)=default
Event(Event &&rhs)=default
Event(const Event &rhs)=default
Event & operator=(Event &&rhs)=default
Event & operator=(const Realm::Event &e)
Definition prealm.h:112
static Event merge_events_ignorefaults(const span< const Event > &wait_for)
void wait_faultaware(bool &poisoned) const
static Event merge_events_ignorefaults(const std::set< Event > &wait_for)
Event(void)
Definition prealm.h:101
static Event merge_events(const span< const Event > &wait_for)
Event(const Realm::Event &e)
Definition prealm.h:107
static Event merge_events_ignorefaults(const Event *wait_for, size_t num_events)
Event(::realm_id_t i)
Definition prealm.h:102
static Event merge_events(const Event *wait_for, size_t num_events)
static const Event NO_EVENT
Definition prealm.h:143
GenericAccessor(RegionInstance inst, FieldID field_id, size_t subfield_offset=0)
AccessorRefHelper< FT > operator[](const Point< N, T > &p)
void write(const Point< N, T > &p, FT newval)
GenericAccessor(void)
Definition prealm.h:685
GenericAccessor(RegionInstance inst, FieldID field_id, const Rect< N, T > &subrect, size_t subfield_offset=0)
FT read(const Point< N, T > &p)
IndexSpaceGeneric & operator=(const Realm::IndexSpaceGeneric &i)
Definition prealm.h:1061
IndexSpaceGeneric(const IndexSpaceGeneric &i)=default
Event copy(const std::vector< CopySrcDstField > &srcs, const std::vector< CopySrcDstField > &dsts, const ProfilingRequestSet &requests, Event wait_on=Event::NO_EVENT, int priority=0) const
IndexSpaceGeneric & operator=(IndexSpaceGeneric &&i)=default
IndexSpaceGeneric(const Realm::IndexSpaceGeneric &i)
Definition prealm.h:1056
IndexSpaceGeneric(IndexSpaceGeneric &&i)=default
IndexSpaceGeneric & operator=(const IndexSpaceGeneric &i)=default
IndexSpaceGeneric(void)
Definition prealm.h:1055
Event copy(const std::vector< CopySrcDstField > &srcs, const std::vector< CopySrcDstField > &dsts, const std::vector< const typename CopyIndirection< N, T >::Base * > &indirects, const ProfilingRequestSet &requests, Event wait_on=Event::NO_EVENT, int priority=0) const
static Event compute_intersection(const IndexSpace< N, T > &lhs, const IndexSpace< N, T > &rhs, IndexSpace< N, T > &result, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT)
Event make_valid(bool precise=true) const
Event create_subspace_by_image(const TRANSFORM &transform, const IndexSpace< N2, T2 > &source, const IndexSpace< N, T > &image, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
IndexSpace & operator=(IndexSpace< N, T > &&i)=default
static Event compute_intersections(const std::vector< IndexSpace< N, T > > &lhss, const IndexSpace< N, T > &rhs, std::vector< IndexSpace< N, T > > &results, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT)
Event create_subspaces_by_image(const std::vector< FieldDataDescriptor< IndexSpace< N2, T2 >, Rect< N, T > > > &field_data, const std::vector< IndexSpace< N2, T2 > > &sources, std::vector< IndexSpace< N, T > > &images, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
Event create_subspaces_by_preimage(const std::vector< FieldDataDescriptor< IndexSpace< N, T >, Rect< N2, T2 > > > &field_data, const std::vector< IndexSpace< N2, T2 > > &targets, std::vector< IndexSpace< N, T > > &preimages, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
Event create_subspace_by_preimage(const TRANSFORM &transform, const IndexSpace< N2, T2 > &target, IndexSpace< N, T > &preimage, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
Event create_subspace_by_preimage(const std::vector< FieldDataDescriptor< IndexSpace< N, T >, Point< N2, T2 > > > &field_data, const IndexSpace< N2, T2 > &target, IndexSpace< N, T > &preimage, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
static Event compute_intersection(const std::vector< IndexSpace< N, T > > &subspaces, IndexSpace< N, T > &result, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT)
Event create_equal_subspace(size_t count, size_t granularity, unsigned index, IndexSpace< N, T > &subspace, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
Event create_subspace_by_image(const std::vector< FieldDataDescriptor< IndexSpace< N2, T2 >, Rect< N, T > > > &field_data, const IndexSpace< N2, T2 > &source, IndexSpace< N, T > &image, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
IndexSpace(IndexSpace< N, T > &&i)=default
IndexSpace(const IndexSpace< N, T > &i)=default
Event create_subspace_by_image(const std::vector< FieldDataDescriptor< IndexSpace< N2, T2 >, Point< N, T > > > &field_data, const IndexSpace< N2, T2 > &source, IndexSpace< N, T > &image, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
IndexSpace & operator=(const Realm::IndexSpace< N, T > &i)
Definition prealm.h:819
static Event compute_intersections(const std::vector< IndexSpace< N, T > > &lhss, const std::vector< IndexSpace< N, T > > &rhss, std::vector< IndexSpace< N, T > > &results, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT)
static Event compute_union(const IndexSpace< N, T > &lhs, const IndexSpace< N, T > &rhs, IndexSpace< N, T > &result, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT)
Event create_subspaces_by_image(const std::vector< FieldDataDescriptor< IndexSpace< N2, T2 >, Point< N, T > > > &field_data, const std::vector< IndexSpace< N2, T2 > > &sources, std::vector< IndexSpace< N, T > > &images, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
static Event compute_differences(const std::vector< IndexSpace< N, T > > &lhss, const std::vector< IndexSpace< N, T > > &rhss, std::vector< IndexSpace< N, T > > &results, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT)
Event create_equal_subspaces(size_t count, size_t granularity, std::vector< IndexSpace< N, T > > &subspaces, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
IndexSpace & operator=(const IndexSpace< N, T > &i)=default
static Event compute_union(const std::vector< IndexSpace< N, T > > &subspaces, IndexSpace< N, T > &result, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT)
Event fill(const std::vector< CopySrcDstField > &dsts, const ProfilingRequestSet &requests, const void *fill_value, size_t fill_value_size, Event wait_on=Event::NO_EVENT, int priority=0) const
Event create_subspaces_by_preimage(const DomainTransform< N2, T2, N, T > &domain_transform, const std::vector< IndexSpace< N2, T2 > > &targets, std::vector< IndexSpace< N, T > > &preimages, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
Event create_subspaces_by_image(const DomainTransform< N, T, N2, T2 > &domain_transform, const std::vector< IndexSpace< N2, T2 > > &sources, std::vector< IndexSpace< N, T > > &images, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
Event create_subspace_by_field(const std::vector< FieldDataDescriptor< IndexSpace< N, T >, FT > > &field_data, FT color, IndexSpace< N, T > &subspace, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
Event create_weighted_subspaces(size_t count, size_t granularity, const std::vector< size_t > &weights, std::vector< IndexSpace< N, T > > &subspaces, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
IndexSpace(const Realm::IndexSpace< N, T > &i)
Definition prealm.h:814
static Event compute_differences(const std::vector< IndexSpace< N, T > > &lhss, const IndexSpace< N, T > &rhs, std::vector< IndexSpace< N, T > > &results, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT)
Event copy(const std::vector< CopySrcDstField > &srcs, const std::vector< CopySrcDstField > &dsts, const std::vector< const typename CopyIndirection< N, T >::Base * > &indirects, const ProfilingRequestSet &requests, Event wait_on=Event::NO_EVENT, int priority=0) const
static Event compute_unions(const std::vector< IndexSpace< N, T > > &lhss, const std::vector< IndexSpace< N, T > > &rhss, std::vector< IndexSpace< N, T > > &results, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT)
Event create_weighted_subspaces(size_t count, size_t granularity, const std::vector< int > &weights, std::vector< IndexSpace< N, T > > &subspaces, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
Event create_subspace_by_field(const std::vector< FieldDataDescriptor< IndexSpace< N, T >, FT > > &field_data, const CodeDescriptor &codedesc, FT2 color, IndexSpace< N, T > &subspace, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
static Event compute_difference(const IndexSpace< N, T > &lhs, const IndexSpace< N, T > &rhs, IndexSpace< N, T > &result, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT)
static Event compute_differences(const IndexSpace< N, T > &lhs, const std::vector< IndexSpace< N, T > > &rhss, std::vector< IndexSpace< N, T > > &results, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT)
Event create_subspaces_by_image_with_difference(const std::vector< FieldDataDescriptor< IndexSpace< N2, T2 >, Point< N, T > > > &field_data, const std::vector< IndexSpace< N2, T2 > > &sources, const std::vector< IndexSpace< N, T > > &diff_rhs, std::vector< IndexSpace< N, T > > &images, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
Event copy(const std::vector< CopySrcDstField > &srcs, const std::vector< CopySrcDstField > &dsts, const ProfilingRequestSet &requests, Event wait_on=Event::NO_EVENT, int priority=0) const
Event create_subspace_by_preimage(const std::vector< FieldDataDescriptor< IndexSpace< N, T >, Rect< N2, T2 > > > &field_data, const IndexSpace< N2, T2 > &target, IndexSpace< N, T > &preimage, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
static Event compute_unions(const std::vector< IndexSpace< N, T > > &lhss, const IndexSpace< N, T > &rhs, std::vector< IndexSpace< N, T > > &results, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT)
Event create_subspaces_by_field(const std::vector< FieldDataDescriptor< IndexSpace< N, T >, FT > > &field_data, const CodeDescriptor &codedesc, const std::vector< FT2 > &colors, std::vector< IndexSpace< N, T > > &subspaces, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
static Event compute_unions(const IndexSpace< N, T > &lhs, const std::vector< IndexSpace< N, T > > &rhss, std::vector< IndexSpace< N, T > > &results, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT)
IndexSpace(void)
Definition prealm.h:813
Event create_subspaces_by_preimage(const std::vector< FieldDataDescriptor< IndexSpace< N, T >, Point< N2, T2 > > > &field_data, const std::vector< IndexSpace< N2, T2 > > &targets, std::vector< IndexSpace< N, T > > &preimages, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
Event create_subspaces_by_field(const std::vector< FieldDataDescriptor< IndexSpace< N, T >, FT > > &field_data, const std::vector< FT > &colors, std::vector< IndexSpace< N, T > > &subspaces, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
static Event compute_intersections(const IndexSpace< N, T > &lhs, const std::vector< IndexSpace< N, T > > &rhss, std::vector< IndexSpace< N, T > > &results, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT)
Event create_subspaces_by_preimage(const TRANSFORM &transform, const std::vector< IndexSpace< N2, T2 > > &targets, std::vector< IndexSpace< N, T > > &preimages, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
Event create_subspaces_by_image(const TRANSFORM &transform, const std::vector< IndexSpace< N2, T2 > > &sources, std::vector< IndexSpace< N, T > > &images, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
Event create_subspaces_by_image_with_difference(const DomainTransform< N, T, N2, T2 > &domain_transform, const std::vector< IndexSpace< N2, T2 > > &sources, const std::vector< IndexSpace< N, T > > &diff_rhs, std::vector< IndexSpace< N, T > > &images, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
void get_shared_processors(Memory m, std::set< Processor > &pset, bool local_only=true) const
Machine & operator=(Machine &&m)=default
void get_all_processors(std::set< Processor > &pset) const
Machine(Machine &&m)=default
static Machine get_machine(void)
Machine & operator=(const Realm::Machine &m)
Definition prealm.h:604
void get_local_processors(std::set< Processor > &pset) const
Machine & operator=(const Machine &m)=default
void get_local_processors_by_kind(std::set< Processor > &pset, Processor::Kind kind) const
Machine(const Machine &m)=default
Machine(const Realm::Machine &m)
Definition prealm.h:599
REALM_CUDA_HD ~MultiAffineAccessor(void)
MultiAffineAccessor(RegionInstance inst, FieldID field_id, size_t subfield_offset=0)
MultiAffineAccessor(RegionInstance inst, FieldID field_id, const Rect< N, T > &subrect, size_t subfield_offset=0)
MultiAffineAccessor(const MultiAffineAccessor &)=default
REALM_CUDA_HD MultiAffineAccessor(void)
Definition prealm.h:751
MultiAffineAccessor & operator=(const MultiAffineAccessor &)=default
MultiAffineAccessor(MultiAffineAccessor &&) noexcept=default
ProcessorGroup(const ProcessorGroup &g)=default
static const ProcessorGroup NO_PROC_GROUP
Definition prealm.h:379
ProcessorGroup & operator=(const ProcessorGroup &g)=default
ProcessorGroup(ProcessorGroup &&g)=default
void destroy(Event wait_on=Event::NO_EVENT) const
ProcessorGroup & operator=(Realm::ProcessorGroup g)
Definition prealm.h:366
static ProcessorGroup create_group(const span< const Processor > &members)
ProcessorGroup(void)
Definition prealm.h:360
ProcessorGroup(Realm::ProcessorGroup g)
Definition prealm.h:361
static ProcessorGroup create_group(const Processor *members, size_t num_members)
ProcessorGroup & operator=(ProcessorGroup &&g)=default
Processor & operator=(const Processor &p)=default
Event spawn(TaskFuncID func_id, const void *args, size_t arglen, Event wait_on=Event::NO_EVENT, int priority=0) const
Event spawn(TaskFuncID func_id, const void *args, size_t arglen, const ProfilingRequestSet &requests, Event wait_on=Event::NO_EVENT, int priority=0) const
Processor(void)
Definition prealm.h:307
static Event register_task_by_kind(Kind target_kind, bool global, TaskFuncID func_id, const CodeDescriptor &codedesc, const ProfilingRequestSet &prs, const void *user_data=0, size_t user_data_len=0)
Event register_task(TaskFuncID func_id, const CodeDescriptor &codedesc, const ProfilingRequestSet &prs, const void *user_data=0, size_t user_data_len=0) const
Processor & operator=(Realm::Processor p)
Definition prealm.h:318
static const Processor NO_PROC
Definition prealm.h:354
Processor(Realm::Processor p)
Definition prealm.h:313
Processor(Processor &&p)=default
Processor & operator=(Processor &&p)=default
Processor(::realm_id_t i)
Definition prealm.h:308
Processor(const Processor &p)=default
RegionInstance & operator=(RegionInstance &&i)=default
static Event create_external_instance(RegionInstance &inst, Memory memory, InstanceLayoutGeneric *ilg, const ExternalInstanceResource &resource, const ProfilingRequestSet &prs, Event wait_on=Event::NO_EVENT)
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)
Event redistrict(RegionInstance &instance, const InstanceLayoutGeneric *layout, const ProfilingRequestSet &prs, Event wait_on=Event::NO_EVENT)
Event fetch_metadata(Processor target) 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)
Event redistrict(RegionInstance *instances, const InstanceLayoutGeneric **layouts, size_t num_layouts, const ProfilingRequestSet *prs, Event wait_on=Event::NO_EVENT)
IndexSpace< N, T > get_indexspace(void) const
Event unique_event
Definition prealm.h:490
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 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)
RegionInstance(void)
Definition prealm.h:410
IndexSpace< N, int > get_indexspace(void) const
RegionInstance & operator=(const RegionInstance &i)=default
static const RegionInstance NO_INST
Definition prealm.h:485
static Event create_external_instance(RegionInstance &inst, Memory memory, const InstanceLayoutGeneric &ilg, const ExternalInstanceResource &resource, const ProfilingRequestSet &prs, Event wait_on=Event::NO_EVENT)
static Event create_instance(RegionInstance &inst, Memory memory, InstanceLayoutGeneric *ilg, const ProfilingRequestSet &prs, Event wait_on=Event::NO_EVENT)
RegionInstance(const RegionInstance &i)=default
RegionInstance(RegionInstance &&i)=default
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)
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)
Reservation & operator=(const Reservation &r)=default
Event acquire(unsigned mode=0, bool exclusive=true, Event wait_on=Event::NO_EVENT) const
Reservation(Reservation &&r)=default
Event try_acquire(bool retry, unsigned mode=0, bool exclusive=true, Event wait_on=Event::NO_EVENT) const
Reservation & operator=(Reservation &&r)=default
Reservation & operator=(Realm::Reservation r)
Definition prealm.h:271
Reservation(Realm::Reservation r)
Definition prealm.h:266
Reservation(void)
Definition prealm.h:265
static const Reservation NO_RESERVATION
Definition prealm.h:284
Reservation(const Reservation &r)=default
Runtime & operator=(const Runtime &r)=default
void finish_configure(void)
bool register_task(Processor::TaskFuncID taskid, Processor::TaskFuncPtr taskptr)
Event collective_spawn(Processor target_proc, Processor::TaskFuncID task_id, const void *args, size_t arglen, Event wait_on=Event::NO_EVENT, int priority=0)
Module * get_module_untyped(const char *name)
Runtime(const Runtime &r)=default
Runtime & operator=(Runtime &&r)=default
int wait_for_shutdown(void)
void shutdown(Event wait_on=Event::NO_EVENT, int result_code=0)
Runtime(Runtime &&r)=default
Event collective_spawn_by_kind(Processor::Kind target_kind, Processor::TaskFuncID task_id, const void *args, size_t arglen, bool one_per_node=false, Event wait_on=Event::NO_EVENT, int priority=0)
Runtime(const Realm::Runtime &r)
Definition prealm.h:632
bool init(int *argc, char ***argv)
void parse_command_line(int argc, char **argv)
static Runtime get_runtime(void)
Runtime & operator=(const Realm::Runtime &r)
Definition prealm.h:637
bool configure_from_command_line(int argc, char **argv)
bool configure_from_command_line(std::vector< std::string > &cmdline, bool remove_realm_args=false)
void parse_command_line(std::vector< std::string > &cmdline, bool remove_realm_args=false)
T * get_module(const char *name)
Definition prealm.h:666
void trigger(Event wait_on=Event::NO_EVENT, bool ignore_faults=false) const
UserEvent & operator=(const UserEvent &rhs)=default
UserEvent(const UserEvent &rhs)=default
static UserEvent create_user_event(void)
UserEvent(UserEvent &&rhs)=default
static const UserEvent NO_USER_EVENT
Definition prealm.h:172
UserEvent(const Realm::UserEvent &e)
Definition prealm.h:155
UserEvent(::realm_id_t i)
Definition prealm.h:150
UserEvent & operator=(UserEvent &&rhs)=default
UserEvent & operator=(const Realm::UserEvent &e)
Definition prealm.h:158
UserEvent(void)
Definition prealm.h:149
Definition inst_layout.h:485
Definition inst_layout.h:591
Definition inst_layout.h:316
timestamp_t timestamp
Definition event.h:247
Definition codedesc.h:249
Definition codedesc.h:317
Definition codedesc.h:347
Definition codedesc.h:367
id_t id
Definition event.h:342
Definition indexspace.h:252
Definition indexspace.h:250
Definition cuda_access.h:42
Definition cuda_module.h:109
Definition cuda_module.h:165
Definition custom_serdez.h:150
Definition indexspace.h:214
static const Event NO_EVENT
The value should be usued to initialize an event handle. NO_EVENT is always in has triggered state .
Definition event.h:71
id_t id
Definition event.h:54
Definition cuda_access.h:132
Definition cuda_access.h:95
Definition cuda_access.h:164
Definition instance.h:480
Definition instance.h:405
Definition instance.h:443
Definition reservation.h:78
WaitMode
Definition reservation.h:90
Definition codedesc.h:408
Definition codedesc.h:196
Definition inst_layout.h:515
bool is_event(void) const
bool is_processor(void) const
bool is_barrier(void) const
Definition indexspace.h:1115
IndexSpaceGeneric & operator=(const IndexSpaceGeneric ©_from)
Definition inst_layout.h:72
Definition inst_layout.h:164
Definition inst_layout.h:241
Definition inst_layout.h:266
Definition inst_layout.h:390
Definition inst_layout.h:358
Definition codedesc.h:172
Machine(void *_impl)
Definition machine.h:35
Machine & operator=(const Machine &m)
Definition machine.h:43
Definition module_config.h:32
Definition codedesc.h:165
Definition codedesc.h:182
Definition processor.h:199
Definition processor.h:37
id_t id
Definition processor.h:41
Kind
Definition processor.h:65
::realm_task_func_id_t TaskFuncID
Definition processor.h:58
@ TASK_ID_PROCESSOR_NOP
Definition processor.h:89
@ TASK_ID_PROCESSOR_INIT
Definition processor.h:90
@ TASK_ID_FIRST_AVAILABLE
Definition processor.h:92
@ TASK_ID_PROCESSOR_SHUTDOWN
Definition processor.h:91
Definition profiling.h:393
Definition profiling.h:363
Definition profiling.h:326
Definition profiling.h:427
Definition reservation.h:30
id_t id
Definition reservation.h:33
Runtime & operator=(const Runtime &r)
Definition runtime.h:41
Definition custom_serdez.h:82
Definition custom_serdez.h:109
#define REALM_CUDA_HD
Definition compiler_support.h:95
#define REALM_PUBLIC_API
Definition compiler_support.h:217
REALM_PUBLIC_API void prealm_task_name(Realm::Processor::TaskFuncID task_id, const std::string_view &task_name)
REALM_PUBLIC_API void prealm_time_range(long long start_time_in_ns, const std::string_view &name, Realm::Event external=Realm::Event::NO_EVENT)
REALM_PUBLIC_API bool get_cuda_device_id(Processor p, int *device)
REALM_PUBLIC_API CUstream_st * get_task_cuda_stream()
REALM_PUBLIC_API void set_task_ctxsync_required(bool is_required)
char Uuid[UUID_SIZE]
Definition cuda_module.h:93
REALM_PUBLIC_API bool get_cuda_device_uuid(Processor p, Uuid *uuid)
void(* StreamAwareTaskFuncPtr)(const void *args, size_t arglen, const void *user_data, size_t user_data_len, Processor proc, CUstream_st *stream)
Definition cuda_module.h:87
Definition cuda_access.h:31
Definition cuda_access.h:69
Definition profiling.h:68
Definition codedesc.h:232
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
ProfilingMeasurementID
Definition profiling.h:39
::realm_reduction_op_id_t ReductionOpID
Definition event.h:38
const size_t dynamic_extent
Definition utils.h:81
unsigned long long realm_id_t
Definition realm_c.h:64
realm_file_mode_t
Definition realm_c.h:275
unsigned long long realm_barrier_timestamp_t
Definition realm_c.h:78
bool red_exclusive
Definition prealm.h:526
size_t size
Definition prealm.h:523
void * indirect
Definition prealm.h:533
CopySrcDstField & set_serdez(CustomSerdezID _serdez_id)
CopySrcDstField & set_fill(const void *_data, size_t _size)
CopySrcDstField & set_fill(T value)
CopySrcDstField & operator=(const CopySrcDstField ©_from)
CopySrcDstField & set_indirect(int _indirect_index, FieldID _field_id, size_t _size, size_t _subfield_offset=0)
CopySrcDstField & set_field(RegionInstance _inst, FieldID _field_id, size_t _size, size_t _subfield_offset=0)
bool red_fold
Definition prealm.h:525
ReductionOpID redop_id
Definition prealm.h:524
FieldID field_id
Definition prealm.h:522
int indirect_index
Definition prealm.h:529
size_t subfield_offset
Definition prealm.h:528
CustomSerdezID serdez_id
Definition prealm.h:527
CopySrcDstField(const CopySrcDstField ©_from)
CopySrcDstField & set_redop(ReductionOpID _redop_id, bool _is_fold, bool exclusive=false)
RegionInstance inst
Definition prealm.h:521
REALM_CUDA_HD Rect(void)
Definition prealm.h:544
Event fill(const std::vector< CopySrcDstField > &dsts, const ProfilingRequestSet &requests, const void *fill_value, size_t fill_value_size, Event wait_on=Event::NO_EVENT, int priority=0) const
REALM_CUDA_HD Rect< N, T > & operator=(const Rect< N2, T2 > &rhs)
Definition prealm.h:560
REALM_CUDA_HD Rect(const Realm::Rect< N2, T2 > &rhs)
Definition prealm.h:546
Event copy(const std::vector< CopySrcDstField > &srcs, const std::vector< CopySrcDstField > &dsts, const IndexSpace< N, T > &mask, const ProfilingRequestSet &requests, Event wait_on=Event::NO_EVENT, int priority=0) const
Event copy(const std::vector< CopySrcDstField > &srcs, const std::vector< CopySrcDstField > &dsts, const ProfilingRequestSet &requests, Event wait_on=Event::NO_EVENT, int priority=0) const
REALM_CUDA_HD Rect(const Rect< N2, T2 > &rhs)
Definition prealm.h:550
REALM_CUDA_HD Rect< N, T > & operator=(const Realm::Rect< N2, T2 > &rhs)
Definition prealm.h:554
Definition indexspace.h:59
Definition cuda_access.h:36
Definition cuda_module.h:155
Definition indexspace.h:107
Definition indexspace.h:323
REALM_CUDA_HD Rect< N, T > & operator=(const Rect< N, T2 > ©_from)