20 #if !defined(LEGION_ENABLE_C_BINDINGS) && !defined(LEGION_DISABLE_C_BINDINGS)
22 #define LEGION_ENABLE_C_BINDINGS
25 #if !defined(LEGION_ENABLE_CXX_BINDINGS) && !defined(LEGION_DISABLE_CXX_BINDINGS)
27 #define LEGION_ENABLE_CXX_BINDINGS
31 #ifdef LEGION_ENABLE_C_BINDINGS
35 #ifdef LEGION_ENABLE_CXX_BINDINGS
36 #ifndef __LEGION_RUNTIME_H__
37 #define __LEGION_RUNTIME_H__
52 #if __cplusplus < 201103L
53 #error "Legion requires C++11 as the minimum standard version"
58 #include "legion/legion_constraint.h"
59 #include "legion/legion_redop.h"
61 #define LEGION_PRINT_ONCE(runtime, ctx, file, fmt, ...) \
64 snprintf(message, 4096, fmt, ##__VA_ARGS__); \
65 runtime->print_once(ctx, file, message); \
90 FRIEND_ALL_RUNTIME_CLASSES
91 IndexSpace(IndexSpaceID
id, IndexTreeID tid, TypeTag tag);
95 inline bool operator==(
const IndexSpace &rhs)
const;
96 inline bool operator!=(
const IndexSpace &rhs)
const;
97 inline bool operator<(
const IndexSpace &rhs)
const;
98 inline bool operator>(
const IndexSpace &rhs)
const;
99 inline std::size_t hash(
void)
const;
100 inline IndexSpaceID get_id(
void)
const {
return id; }
101 inline IndexTreeID get_tree_id(
void)
const {
return tid; }
102 inline bool exists(
void)
const {
return (
id != 0); }
103 inline TypeTag get_type_tag(
void)
const {
return type_tag; }
104 inline int get_dim(
void)
const;
106 friend std::ostream& operator<<(std::ostream& os,
107 const IndexSpace& is);
119 template<
int DIM,
typename COORD_T = coord_t>
122 static_assert(DIM > 0,
"DIM must be positive");
123 static_assert(std::is_integral<COORD_T>::value,
"must be integral type");
126 FRIEND_ALL_RUNTIME_CLASSES
146 FRIEND_ALL_RUNTIME_CLASSES
147 IndexPartition(IndexPartitionID
id, IndexTreeID tid, TypeTag tag);
155 inline std::size_t hash(
void)
const;
156 inline IndexPartitionID get_id(
void)
const {
return id; }
157 inline IndexTreeID get_tree_id(
void)
const {
return tid; }
158 inline bool exists(
void)
const {
return (
id != 0); }
159 inline TypeTag get_type_tag(
void)
const {
return type_tag; }
160 inline int get_dim(
void)
const;
162 friend std::ostream& operator<<(std::ostream& os,
175 template<
int DIM,
typename COORD_T = coord_t>
178 static_assert(DIM > 0,
"DIM must be positive");
179 static_assert(std::is_integral<COORD_T>::value,
"must be integral type");
182 FRIEND_ALL_RUNTIME_CLASSES
205 FRIEND_ALL_RUNTIME_CLASSES
210 inline bool operator==(
const FieldSpace &rhs)
const;
211 inline bool operator!=(
const FieldSpace &rhs)
const;
212 inline bool operator<(
const FieldSpace &rhs)
const;
213 inline bool operator>(
const FieldSpace &rhs)
const;
214 inline std::size_t hash(
void)
const;
215 inline FieldSpaceID get_id(
void)
const {
return id; }
216 inline bool exists(
void)
const {
return (
id != 0); }
218 friend std::ostream& operator<<(std::ostream& os,
const FieldSpace& fs);
241 FRIEND_ALL_RUNTIME_CLASSES
249 std::size_t hash(
void)
const;
251 inline IndexSpace get_index_space(
void)
const {
return index_space; }
252 inline FieldSpace get_field_space(
void)
const {
return field_space; }
253 inline RegionTreeID get_tree_id(
void)
const {
return tree_id; }
254 inline bool exists(
void)
const {
return (tree_id != 0); }
255 inline TypeTag get_type_tag(
void)
const
256 {
return index_space.get_type_tag(); }
257 inline int get_dim(
void)
const {
return index_space.get_dim(); }
259 friend std::ostream& operator<<(std::ostream& os,
260 const LogicalRegion& lr);
262 RegionTreeID tree_id;
263 IndexSpace index_space;
264 FieldSpace field_space;
273 template<
int DIM,
typename COORD_T = coord_t>
276 static_assert(DIM > 0,
"DIM must be positive");
277 static_assert(std::is_integral<COORD_T>::value,
"must be integral type");
280 FRIEND_ALL_RUNTIME_CLASSES
309 FRIEND_ALL_RUNTIME_CLASSES
317 std::size_t hash(
void)
const;
320 {
return index_partition; }
321 inline FieldSpace get_field_space(
void)
const {
return field_space; }
322 inline RegionTreeID get_tree_id(
void)
const {
return tree_id; }
323 inline bool exists(
void)
const {
return (tree_id != 0); }
324 inline TypeTag get_type_tag(
void)
const
325 {
return index_partition.get_type_tag(); }
326 inline int get_dim(
void)
const {
return index_partition.get_dim(); }
328 friend std::ostream& operator<<(std::ostream& os,
329 const LogicalPartition& lp);
331 RegionTreeID tree_id;
332 IndexPartition index_partition;
333 FieldSpace field_space;
342 template<
int DIM,
typename COORD_T = coord_t>
345 static_assert(DIM > 0,
"DIM must be positive");
346 static_assert(std::is_integral<COORD_T>::value,
"must be integral type");
349 FRIEND_ALL_RUNTIME_CLASSES
385 FRIEND_ALL_RUNTIME_CLASSES
393 inline bool exists(
void)
const {
return (impl != NULL); }
416 FieldID desired_fieldid = LEGION_AUTO_GENERATE_ID,
417 CustomSerdezID serdez_id = 0,
418 bool local_field =
false,
419 const char *provenance = NULL);
421 FieldID desired_fieldid = LEGION_AUTO_GENERATE_ID,
422 CustomSerdezID serdez_id = 0,
423 bool local_field =
false,
424 const char *provenance = NULL);
434 LEGION_DEPRECATED(
"We are considering removing support for freeing fields"
435 "in a future Legion release. Please contact the Legion developer's "
436 "list if field deletion is important for your application.")
438 const
char *provenance = NULL);
448 FieldID desired_fieldid = LEGION_AUTO_GENERATE_ID,
449 CustomSerdezID serdez_id = 0, const
char *provenance = NULL);
469 std::vector<FieldID> &resulting_fields,
470 CustomSerdezID serdez_id = 0,
471 bool local_fields = false,
472 const
char *provenance = NULL);
474 std::vector<FieldID> &resulting_fields,
475 CustomSerdezID serdez_id = 0,
476 bool local_fields = false,
477 const
char *provenance = NULL);
487 LEGION_DEPRECATED("We are considering removing support for freeing fields"
488 "in a future
Legion release. Please contact the
Legion developer's "
489 "list if field deletion is important for your application.")
491 const
bool unordered = false,
492 const
char *provenance = NULL);
501 std::vector<FieldID> &resulting_fields,
502 CustomSerdezID serdez_id = 0,
503 const
char *provenance = NULL);
509 Internal::FieldAllocatorImpl *impl;
528 : args(
const_cast<void*
>(arg)), arglen(argsize) { }
530 : args(rhs.args), arglen(rhs.arglen) { }
532 : args(rhs.args), arglen(rhs.arglen) { }
534 inline size_t get_size(
void)
const {
return arglen; }
535 inline void* get_ptr(
void)
const {
return args; }
538 {
return (args == arg.args) && (arglen == arg.arglen); }
540 {
return (args < arg.args) && (arglen < arg.arglen); }
542 { args = rhs.args; arglen = rhs.arglen;
return *
this; }
544 { args = rhs.args; arglen = rhs.arglen;
return *
this; }
574 inline bool operator==(
const ArgumentMap &rhs)
const
575 {
return (impl == rhs.impl); }
576 inline bool operator<(
const ArgumentMap &rhs)
const
577 {
return (impl < rhs.impl); }
578 inline bool exists(
void)
const {
return (impl != NULL); }
593 bool replace =
true);
601 bool replace =
true);
625 template<
typename PT,
unsigned DIM>
627 bool replace =
false);
633 template<
typename PT,
unsigned DIM>
636 FRIEND_ALL_RUNTIME_CLASSES
637 Internal::ArgumentMapImpl *impl;
639 explicit ArgumentMap(Internal::ArgumentMapImpl *i);
667 FRIEND_ALL_RUNTIME_CLASSES
668 Internal::PredicateImpl *impl;
670 explicit Predicate(Internal::PredicateImpl *impl);
674 inline bool operator==(
const Predicate &p)
const;
675 inline bool operator<(
const Predicate &p)
const;
676 inline bool operator!=(
const Predicate &p)
const;
677 inline bool exists(
void)
const {
return (impl != NULL); }
720 FRIEND_ALL_RUNTIME_CLASSES
723 bool operator<(
const Lock &rhs)
const;
724 bool operator==(
const Lock &rhs)
const;
726 void acquire(
unsigned mode = 0,
bool exclusive =
true);
729 Reservation reservation_lock;
767 FRIEND_ALL_RUNTIME_CLASSES
768 explicit Grant(Internal::GrantImpl *impl);
770 bool operator==(
const Grant &g)
const
771 {
return impl == g.impl; }
772 bool operator<(
const Grant &g)
const
773 {
return impl < g.impl; }
776 Internal::GrantImpl *impl;
812 FRIEND_ALL_RUNTIME_CLASSES
819 void arrive(
unsigned count = 1);
821 void alter_arrival_count(
int delta);
822 Realm::Barrier get_barrier(
void)
const {
return phase_barrier; }
823 bool exists(
void)
const;
826 friend std::ostream& operator<<(std::ostream& os,
const PhaseBarrier& pb);
848 FRIEND_ALL_RUNTIME_CLASSES
852 void arrive(
const void *value,
size_t size,
unsigned count = 1);
882 const std::set<FieldID> &privilege_fields,
883 const std::vector<FieldID> &instance_fields,
884 PrivilegeMode _priv, CoherenceProperty _prop,
886 bool _verified =
false);
891 const std::set<FieldID> &privilege_fields,
892 const std::vector<FieldID> &instance_fields,
893 PrivilegeMode _priv, CoherenceProperty _prop,
895 bool _verified =
false);
900 const std::set<FieldID> &privilege_fields,
901 const std::vector<FieldID> &instance_fields,
902 PrivilegeMode _priv, CoherenceProperty _prop,
904 bool _verified =
false);
910 const std::set<FieldID> &privilege_fields,
911 const std::vector<FieldID> &instance_fields,
912 ReductionOpID op, CoherenceProperty _prop,
914 bool _verified =
false);
919 const std::set<FieldID> &privilege_fields,
920 const std::vector<FieldID> &instance_fields,
921 ReductionOpID op, CoherenceProperty _prop,
923 bool _verified =
false);
928 const std::set<FieldID> &privilege_fields,
929 const std::vector<FieldID> &instance_fields,
930 ReductionOpID op, CoherenceProperty _prop,
932 bool _verified =
false);
937 MappingTagID _tag = 0,
bool _verified =
false);
939 PrivilegeMode _priv, CoherenceProperty _prop,
941 bool _verified =
false);
943 PrivilegeMode _priv, CoherenceProperty _prop,
945 bool _verified =
false);
948 MappingTagID _tag = 0,
bool _verified =
false);
950 ReductionOpID op, CoherenceProperty _prop,
952 bool _verified =
false);
954 ReductionOpID op, CoherenceProperty _prop,
956 bool _verified =
false);
972 bool instance =
true);
976 inline bool is_verified(
void)
const
977 {
return (flags & LEGION_VERIFIED_FLAG); }
978 inline bool is_no_access(
void)
const
979 {
return (flags & LEGION_NO_ACCESS_FLAG); }
980 inline bool is_restricted(
void)
const
981 {
return (flags & LEGION_RESTRICTED_FLAG); }
982 LEGION_DEPRECATED(
"Premapping regions is no longer supported.")
983 inline
bool must_premap(
void)
const
986 const void* get_projection_args(
size_t *size)
const;
987 void set_projection_args(
const void *args,
size_t size,
bool own =
false);
989 bool has_field_privilege(FieldID fid)
const;
1083 const std::set<FieldID> &fields,
1085 bool global_indexing =
false);
1095 template <
int DIM,
typename COORD_T>
1096 void set_type_tag();
1102 void set_projection(ProjectionID projection,
IndexSpace color_space);
1121 AllocateMode privilege;
1129 bool _verified =
false);
1149 AllocateMode privilege;
1155 bool _verified =
false);
1190 Internal::FutureImpl *impl;
1193 FRIEND_ALL_RUNTIME_CLASSES
1194 explicit Future(Internal::FutureImpl *impl);
1196 inline bool exists(
void)
const {
return (impl != NULL); }
1197 inline bool operator==(
const Future &f)
const
1198 {
return impl == f.impl; }
1199 inline bool operator<(
const Future &f)
const
1200 {
return impl < f.impl; }
1203 std::size_t hash(
void)
const;
1213 template<
typename T>
1215 const char *warning_string = NULL)
const;
1222 const char *warning_string = NULL)
const;
1234 bool is_empty(
bool block =
false,
bool silence_warnings =
false,
1235 const char *warning_string = NULL)
const;
1259 template<
typename T, PrivilegeMode PM = LEGION_READ_ONLY>
1261 bool silence_warnings =
false,
1262 const char *warning_string = NULL)
const;
1278 size_t *extent_in_bytes = NULL,
1279 bool check_extent =
false,
1280 bool silence_warnings =
false,
1281 const char *warning_string = NULL)
const;
1291 bool silence_warnings =
false,
1292 const char *warning_string = NULL)
const;
1307 template<
typename T>
1308 LEGION_DEPRECATED(
"Use 'Future::get_span' instead")
1309 inline const T& get_reference(
bool silence_warnings = false,
1310 const
char *warning_string = NULL) const;
1321 LEGION_DEPRECATED("Use '
Future::get_buffer' instead")
1322 inline const
void* get_untyped_pointer(
bool silence_warnings = false,
1323 const
char *warning_string = NULL) const;
1328 size_t get_untyped_size(
void) const;
1338 const
void* get_metadata(
size_t *size = NULL) const;
1341 template<typename T>
1344 inline
bool valid(
void) const;
1346 inline
void wait(
void) const;
1353 template<typename T>
1354 LEGION_DEPRECATED("Use the version without a runtime pointer argument")
1356 template<typename T>
1357 static inline
Future from_value(const T &value);
1363 LEGION_DEPRECATED("Use the version without a runtime pointer argument")
1365 const
void *buffer,
size_t bytes,
bool take_ownership = false);
1366 static
Future from_untyped_pointer(
1367 const
void *buffer,
size_t bytes,
bool take_ownership = false,
1368 const
char *provenance = NULL,
bool shard_local = false);
1369 static
Future from_value(const
void *buffer,
size_t bytes,
bool owned,
1370 const Realm::ExternalInstanceResource &resource,
1371 void (*freefunc)(const Realm::ExternalInstanceResource&) = NULL,
1372 const
char *provenance = NULL,
bool shard_local = false);
1375 template<PrivilegeMode, typename,
int, typename, typename,
bool>
1377 Realm::RegionInstance get_instance(Memory::Kind kind,
1378 size_t field_size,
bool check_field_size,
1379 const
char *warning_string,
bool silence_warnings) const;
1380 void report_incompatible_accessor(const
char *accessor_kind,
1381 Realm::RegionInstance instance) const;
1404 Internal::FutureMapImpl *impl;
1407 FRIEND_ALL_RUNTIME_CLASSES
1408 explicit FutureMap(Internal::FutureMapImpl *impl);
1410 inline bool exists(
void)
const {
return (impl != NULL); }
1411 inline bool operator==(
const FutureMap &f)
const
1412 {
return impl == f.impl; }
1413 inline bool operator<(
const FutureMap &f)
const
1414 {
return impl < f.impl; }
1416 {
return get_future(point); }
1419 std::size_t hash(
void)
const;
1429 template<
typename T>
1431 bool silence_warnings =
false,
1432 const char *warning_string = NULL)
const;
1449 bool silence_warnings =
false,
1450 const char *warning_string = NULL)
const;
1459 template<
typename RT,
typename PT,
unsigned DIM>
1469 template<
typename PT,
unsigned DIM>
1476 template<
typename PT,
unsigned DIM>
1486 const char *warning_string = NULL)
const;
1513 unsigned previous_req_index,
1514 unsigned current_req_index,
1515 DependenceType dtype,
1516 bool validates =
false,
1517 bool shard_only =
false);
1519 inline void add_field(FieldID fid);
1524 unsigned previous_offset;
1526 unsigned previous_req_index;
1528 unsigned current_req_index;
1530 DependenceType dependence_type;
1537 std::set<FieldID> dependent_fields;
1554 MappingTagID tag = 0,
1556 const char *provenance =
"");
1562 inline void add_field(
unsigned idx, FieldID fid,
bool inst =
true);
1564 inline void add_future(
Future f);
1565 inline void add_grant(
Grant g);
1571 inline void set_predicate_false_future(
Future f);
1574 inline void set_independent_requirements(
bool independent);
1577 std::vector<IndexSpaceRequirement> index_requirements;
1578 std::vector<RegionRequirement> region_requirements;
1579 std::vector<Future> futures;
1580 std::vector<Grant> grants;
1581 std::vector<PhaseBarrier> wait_barriers;
1582 std::vector<PhaseBarrier> arrive_barriers;
1599 Future predicate_false_future;
1603 std::string provenance;
1607 const std::vector<StaticDependence> *static_dependences;
1617 bool enable_inlining;
1627 bool local_function_task;
1633 bool independent_requirements;
1637 bool elide_future_return;
1639 bool silence_warnings;
1660 MappingTagID tag = 0,
1662 const char *provenance =
"");
1670 MappingTagID tag = 0,
1672 const char *provenance =
"");
1678 inline void add_field(
unsigned idx, FieldID fid,
bool inst =
true);
1680 inline void add_future(
Future f);
1681 inline void add_grant(
Grant g);
1687 inline void set_predicate_false_future(
Future f);
1690 inline void set_independent_requirements(
bool independent);
1698 std::vector<IndexSpaceRequirement> index_requirements;
1699 std::vector<RegionRequirement> region_requirements;
1700 std::vector<Future> futures;
1703 std::vector<ArgumentMap> point_futures;
1704 std::vector<Grant> grants;
1705 std::vector<PhaseBarrier> wait_barriers;
1706 std::vector<PhaseBarrier> arrive_barriers;
1721 bool must_parallelism;
1731 Future predicate_false_future;
1735 std::string provenance;
1739 const std::vector<StaticDependence> *static_dependences;
1749 bool enable_inlining;
1755 bool independent_requirements;
1759 bool elide_future_return;
1761 bool silence_warnings;
1780 MappingTagID tag = 0,
1781 LayoutConstraintID layout_id = 0,
1783 const char *provenance =
"");
1785 inline void add_field(FieldID fid,
bool inst =
true);
1787 inline void add_grant(
Grant g);
1794 std::vector<Grant> grants;
1795 std::vector<PhaseBarrier> wait_barriers;
1796 std::vector<PhaseBarrier> arrive_barriers;
1801 LayoutConstraintID layout_constraint_id;
1804 std::string provenance;
1808 const std::vector<StaticDependence> *static_dependences;
1838 MapperID
id = 0, MappingTagID tag = 0,
1840 const char *provenance =
"");
1844 inline void add_src_field(
unsigned idx, FieldID fid,
bool inst =
true);
1845 inline void add_dst_field(
unsigned idx, FieldID fid,
bool inst =
true);
1848 inline void add_src_indirect_field(FieldID src_idx_fid,
1850 bool is_range_indirection =
false,
1852 inline void add_dst_indirect_field(FieldID dst_idx_fid,
1854 bool is_range_indirection =
false,
1858 bool is_range_indirection =
false);
1861 bool is_range_indirection =
false);
1863 inline void add_grant(
Grant g);
1869 std::vector<RegionRequirement> src_requirements;
1870 std::vector<RegionRequirement> dst_requirements;
1871 std::vector<RegionRequirement> src_indirect_requirements;
1872 std::vector<RegionRequirement> dst_indirect_requirements;
1873 std::vector<bool> src_indirect_is_range;
1874 std::vector<bool> dst_indirect_is_range;
1875 std::vector<Grant> grants;
1876 std::vector<PhaseBarrier> wait_barriers;
1877 std::vector<PhaseBarrier> arrive_barriers;
1889 std::string provenance;
1893 const std::vector<StaticDependence> *static_dependences;
1897 bool possible_src_indirect_out_of_range;
1898 bool possible_dst_indirect_out_of_range;
1901 bool possible_dst_indirect_aliasing;
1903 bool silence_warnings;
1920 MapperID
id = 0, MappingTagID tag = 0,
1922 const char *provenance =
"");
1924 MapperID
id = 0, MappingTagID tag = 0,
1926 const char *provenance =
"");
1930 inline void add_src_field(
unsigned idx, FieldID fid,
bool inst =
true);
1931 inline void add_dst_field(
unsigned idx, FieldID fid,
bool inst =
true);
1934 inline void add_src_indirect_field(FieldID src_idx_fid,
1936 bool is_range_indirection =
false,
1938 inline void add_dst_indirect_field(FieldID dst_idx_fid,
1940 bool is_range_indirection =
false,
1944 bool is_range_indirection =
false);
1947 bool is_range_indirection =
false);
1949 inline void add_grant(
Grant g);
1955 std::vector<RegionRequirement> src_requirements;
1956 std::vector<RegionRequirement> dst_requirements;
1957 std::vector<RegionRequirement> src_indirect_requirements;
1958 std::vector<RegionRequirement> dst_indirect_requirements;
1959 std::vector<bool> src_indirect_is_range;
1960 std::vector<bool> dst_indirect_is_range;
1961 std::vector<Grant> grants;
1962 std::vector<PhaseBarrier> wait_barriers;
1963 std::vector<PhaseBarrier> arrive_barriers;
1975 std::string provenance;
1979 const std::vector<StaticDependence> *static_dependences;
1983 bool possible_src_indirect_out_of_range;
1984 bool possible_dst_indirect_out_of_range;
1987 bool possible_dst_indirect_aliasing;
1992 bool collective_src_indirect_points;
1993 bool collective_dst_indirect_points;
1995 bool silence_warnings;
2009 MapperID
id = 0, MappingTagID tag = 0,
2011 const char *provenance =
"");
2014 MapperID
id = 0, MappingTagID tag = 0,
2016 const char *provenance =
"");
2019 inline void set_future(
Future f);
2020 inline void add_field(FieldID fid);
2021 inline void add_grant(
Grant g);
2032 std::set<FieldID> fields;
2033 std::vector<Grant> grants;
2034 std::vector<PhaseBarrier> wait_barriers;
2035 std::vector<PhaseBarrier> arrive_barriers;
2046 std::string provenance;
2050 const std::vector<StaticDependence> *static_dependences;
2052 bool silence_warnings;
2070 ProjectionID projection = 0,
2072 MapperID
id = 0, MappingTagID tag = 0,
2074 const char *provenance =
"");
2077 ProjectionID projection = 0,
2079 MapperID
id = 0, MappingTagID tag = 0,
2081 const char *provenance =
"");
2084 ProjectionID projection = 0,
2086 MapperID
id = 0, MappingTagID tag = 0,
2088 const char *provenance =
"");
2091 ProjectionID projection = 0,
2093 MapperID
id = 0, MappingTagID tag = 0,
2095 const char *provenance =
"");
2099 ProjectionID projection = 0,
2101 MapperID
id = 0, MappingTagID tag = 0,
2103 const char *provenance =
"");
2106 ProjectionID projection = 0,
2108 MapperID
id = 0, MappingTagID tag = 0,
2110 const char *provenance =
"");
2113 ProjectionID projection = 0,
2115 MapperID
id = 0, MappingTagID tag = 0,
2117 const char *provenance =
"");
2120 ProjectionID projection = 0,
2122 MapperID
id = 0, MappingTagID tag = 0,
2124 const char *provenance =
"");
2127 inline void set_future(
Future f);
2128 inline void add_field(FieldID fid);
2129 inline void add_grant(
Grant g);
2143 ProjectionID projection;
2147 std::set<FieldID> fields;
2148 std::vector<Grant> grants;
2149 std::vector<PhaseBarrier> wait_barriers;
2150 std::vector<PhaseBarrier> arrive_barriers;
2156 std::string provenance;
2160 const std::vector<StaticDependence> *static_dependences;
2162 bool silence_warnings;
2175 inline void add_field(FieldID fid);
2179 std::set<FieldID> fields;
2182 std::string provenance;
2186 const std::vector<StaticDependence> *static_dependences;
2188 bool silence_warnings;
2216 const bool restricted =
true,
2217 const bool mapped =
true);
2222 inline void initialize_constraints(
bool column_major,
bool soa,
2223 const std::vector<FieldID> &fields,
2224 const std::map<FieldID,size_t> *alignments = NULL);
2225 LEGION_DEPRECATED(
"Use Realm::ExternalFileResource instead")
2226 inline void attach_file(
const char *file_name,
2227 const std::vector<FieldID> &fields,
2228 LegionFileMode mode);
2229 LEGION_DEPRECATED(
"Use Realm::ExternalHDF5Resource instead")
2230 inline void attach_hdf5(
const char *file_name,
2231 const std::map<FieldID,const char*> &field_map,
2232 LegionFileMode mode);
2235 LEGION_DEPRECATED(
"Use Realm::ExternalMemoryResource instead")
2236 inline void attach_array_aos(
void *base,
bool column_major,
2237 const std::vector<FieldID> &fields,
2238 Memory memory = Memory::NO_MEMORY,
2239 const std::map<FieldID,size_t> *alignments = NULL);
2240 LEGION_DEPRECATED(
"Use Realm::ExternalMemoryResource instead")
2241 inline void attach_array_soa(
void *base,
bool column_major,
2242 const std::vector<FieldID> &fields,
2243 Memory memory = Memory::NO_MEMORY,
2244 const std::map<FieldID,size_t> *alignments = NULL);
2246 ExternalResource resource;
2249 std::set<FieldID> privilege_fields;
2252 const Realm::ExternalInstanceResource* external_resource;
2254 LayoutConstraintSet constraints;
2271 bool deduplicate_across_shards;
2274 std::string provenance;
2277 LEGION_DEPRECATED(
"file_name is deprecated, use external_resource")
2278 const char *file_name;
2279 LEGION_DEPRECATED(
"mode is deprecated, use external_resource")
2280 LegionFileMode mode;
2281 LEGION_DEPRECATED(
"file_fields is deprecated, use external_resource")
2282 std::vector<FieldID> file_fields;
2284 std::map<FieldID,
const char*> field_files;
2291 const std::vector<StaticDependence> *static_dependences;
2308 const bool restricted =
true);
2313 inline void initialize_constraints(
bool column_major,
bool soa,
2314 const std::vector<FieldID> &fields,
2315 const std::map<FieldID,size_t> *alignments = NULL);
2317 const Realm::ExternalInstanceResource *resource);
2318 LEGION_DEPRECATED(
"Use Realm::ExternalFileResource instead")
2320 const char *file_name,
2321 const std::vector<FieldID> &fields,
2322 LegionFileMode mode);
2323 LEGION_DEPRECATED(
"Use Realm::ExternalHDF5Resource instead")
2325 const char *file_name,
2326 const std::map<FieldID,const char*> &field_map,
2327 LegionFileMode mode);
2330 LEGION_DEPRECATED(
"Use Realm::ExternalMemoryResource instead")
2332 void *base,
bool column_major,
2333 const std::vector<FieldID> &fields,
2334 Memory memory = Memory::NO_MEMORY,
2335 const std::map<FieldID,size_t> *alignments = NULL);
2336 LEGION_DEPRECATED(
"Use Realm::ExternalMemoryResource instead")
2338 void *base,
bool column_major,
2339 const std::vector<FieldID> &fields,
2340 Memory memory = Memory::NO_MEMORY,
2341 const std::map<FieldID,size_t> *alignments = NULL);
2343 ExternalResource resource;
2345 std::set<FieldID> privilege_fields;
2346 std::vector<LogicalRegion> handles;
2350 std::vector<const Realm::ExternalInstanceResource*> external_resources;
2352 LayoutConstraintSet constraints;
2359 bool deduplicate_across_shards;
2362 std::string provenance;
2365 LEGION_DEPRECATED(
"mode is deprecated, use external_resources")
2366 LegionFileMode mode;
2367 LEGION_DEPRECATED(
"file_names is deprecated, use external_resources")
2368 std::vector<const char*> file_names;
2369 LEGION_DEPRECATED(
"file_fields is deprecated, use external_resources")
2370 std::vector<FieldID> file_fields;
2373 std::vector<
const char*> > field_files;
2376 LEGION_DEPRECATED(
"pointers is deprecated, use external_resources")
2377 std::vector<PointerConstraint> pointers;
2381 std::vector<size_t> footprint;
2385 const std::vector<StaticDependence> *static_dependences;
2398 inline void add_predicate(
const Predicate &pred);
2401 std::vector<Predicate> predicates;
2402 std::string provenance;
2414 inline void add_precondition(
const Future &f);
2416 TimingMeasurement measurement;
2417 std::set<Future> preconditions;
2420 std::string provenance;
2431 MapperID mapper = 0,
2432 MappingTagID tag = 0,
2433 size_t return_type_size = SIZE_MAX);
2439 std::vector<Future> futures;
2440 size_t return_type_size;
2443 std::string provenance;
2464 const char *layout_name = NULL);
2467 add_constraint(
const SpecializedConstraint &constraint);
2469 add_constraint(
const MemoryConstraint &constraint);
2471 add_constraint(
const OrderingConstraint &constraint);
2473 add_constraint(
const TilingConstraint &constraint);
2475 add_constraint(
const FieldConstraint &constraint);
2477 add_constraint(
const DimensionConstraint &constraint);
2479 add_constraint(
const AlignmentConstraint &constraint);
2481 add_constraint(
const OffsetConstraint &constraint);
2483 add_constraint(
const PointerConstraint &constraint);
2485 add_constraint(
const PaddingConstraint &constraint);
2488 LayoutConstraintSet layout_constraints;
2489 const char* layout_name;
2500 : size(0), alignment(0), scope(s) { }
2502 : size(s), alignment(a), scope(LEGION_BOUNDED_POOL) { }
2510 UnboundPoolScope scope;
2525 const char *variant_name = NULL);
2527 bool global =
true);
2530 add_constraint(
const ISAConstraint &constraint);
2532 add_constraint(
const ProcessorConstraint &constraint);
2534 add_constraint(
const ResourceConstraint &constraint);
2536 add_constraint(
const LaunchConstraint &constraint);
2538 add_constraint(
const ColocationConstraint &constraint);
2541 add_layout_constraint_set(
unsigned index, LayoutConstraintID desc);
2543 inline void set_leaf(
bool is_leaf =
true);
2544 inline void set_inner(
bool is_inner =
true);
2545 inline void set_idempotent(
bool is_idempotent =
true);
2546 inline void set_replicable(
bool is_replicable =
true);
2547 inline void set_concurrent(
bool is_concurrent =
true);
2548 inline void set_concurrent_barrier(
bool needs_barrier =
true);
2550 inline void add_generator_task(TaskID tid);
2553 bool global_registration;
2554 const char* task_variant_name;
2556 ExecutionConstraintSet execution_constraints;
2557 TaskLayoutConstraintSet layout_constraints;
2566 std::map<Memory::Kind,PoolBounds> leaf_pool_bounds;
2569 std::set<TaskID> generator_tasks;
2573 bool idempotent_variant;
2574 bool replicable_variant;
2575 bool concurrent_variant;
2576 bool concurrent_barrier;
2598 Internal::PhysicalRegionImpl *impl;
2600 FRIEND_ALL_RUNTIME_CLASSES
2605 inline bool exists(
void)
const {
return (impl != NULL); }
2607 {
return (impl == reg.impl); }
2609 {
return (impl < reg.impl); }
2610 std::size_t hash(
void)
const;
2624 const char *warning_string = NULL);
2644 bool silence_warnings =
false,
2645 const char *warning_string = NULL)
const;
2651 template<
int DIM,
typename COORD_T>
2652 DomainT<DIM,COORD_T> get_bounds(
void)
const;
2655 template<
int DIM,
typename COORD_T>
2656 operator DomainT<DIM,COORD_T>(
void)
const;
2659 template<
int DIM,
typename COORD_T>
2660 operator Rect<DIM,COORD_T>(
void)
const;
2663 template<PrivilegeMode,
typename,
int,
typename,
typename,
bool>
2665 template<
typename,
bool,
int,
typename,
typename,
bool>
2667 template<
typename,
int,
typename,
typename,
bool,
bool,
int>
2668 friend class MultiRegionAccessor;
2669 template<
typename,
int,
typename,
typename,
bool>
2671 template<
typename,
int,
typename,
typename>
2673 template<
typename, PrivilegeMode>
2678 template<PrivilegeMode,
typename,
int,
typename>
2680 template<
typename,
int,
typename>
2681 friend class UnsafeSpanIterator;
2682 Realm::RegionInstance get_instance_info(PrivilegeMode mode,
2683 FieldID fid,
size_t field_size,
2684 void *realm_is, TypeTag type_tag,
2685 const char *warning_string,
2686 bool silence_warnings,
2687 bool generic_accessor,
2688 bool check_field_size,
2689 ReductionOpID redop = 0)
const;
2690 Realm::RegionInstance get_instance_info(PrivilegeMode mode,
2691 const std::vector<PhysicalRegion> &other_regions,
2692 FieldID fid,
size_t field_size,
2693 void *realm_is, TypeTag type_tag,
2694 const char *warning_string,
2695 bool silence_warnings,
2696 bool generic_accessor,
2697 bool check_field_size,
2699 ReductionOpID redop = 0)
const;
2700 Realm::RegionInstance get_padding_info(FieldID fid,
size_t field_size,
2702 const char *warning_string,
2703 bool silence_warnings,
2704 bool generic_accessor,
2705 bool check_field_size)
const;
2706 void report_incompatible_accessor(
const char *accessor_kind,
2707 Realm::RegionInstance instance, FieldID fid)
const;
2708 void report_incompatible_multi_accessor(
unsigned index, FieldID fid,
2709 Realm::RegionInstance inst1,
2710 Realm::RegionInstance inst2)
const;
2711 void report_colocation_violation(
const char *accessor_kind, FieldID fid,
2712 Realm::RegionInstance inst1,
2713 Realm::RegionInstance inst2,
2715 bool reduction =
false)
const;
2716 static void empty_colocation_regions(
const char *accessor_kind,
2717 FieldID fid,
bool reduction =
false);
2718 static void fail_bounds_check(
DomainPoint p, FieldID fid,
2719 PrivilegeMode mode,
bool multi =
false);
2720 static void fail_bounds_check(
Domain d, FieldID fid,
2721 PrivilegeMode mode,
bool multi =
false);
2722 static void fail_privilege_check(
DomainPoint p, FieldID fid,
2723 PrivilegeMode mode);
2724 static void fail_privilege_check(
Domain d, FieldID fid,
2725 PrivilegeMode mode);
2726 static void fail_padding_check(
DomainPoint p, FieldID fid);
2728 void get_bounds(
void *realm_is, TypeTag type_tag)
const;
2745 Internal::ExternalResourcesImpl *impl;
2747 FRIEND_ALL_RUNTIME_CLASSES
2752 inline bool exists(
void)
const {
return (impl != NULL); }
2754 {
return (impl == reg.impl); }
2756 {
return (impl < reg.impl); }
2758 size_t size(
void)
const;
2799 template<PrivilegeMode MODE,
typename FT,
int N,
typename COORD_T = coord_t,
2800 typename A = Realm::GenericAccessor<FT,N,COORD_T>,
2801 #ifdef LEGION_BOUNDS_CHECKS
2802 bool CHECK_BOUNDS =
true>
2804 bool CHECK_BOUNDS =
false>
2808 static_assert(N > 0,
"N must be positive");
2809 static_assert(std::is_integral<COORD_T>::value,
"must be integral type");
2815 size_t actual_field_size =
sizeof(FT),
2817 bool check_field_size =
true,
2819 bool check_field_size =
false,
2821 bool silence_warnings =
false,
2822 const char *warning_string = NULL,
2823 size_t subfield_offset = 0) { }
2829 const Rect<N,COORD_T> bounds,
2832 size_t actual_field_size =
sizeof(FT),
2834 bool check_field_size =
true,
2836 bool check_field_size =
false,
2838 bool silence_warnings =
false,
2839 const char *warning_string = NULL,
2840 size_t subfield_offset = 0) { }
2848 size_t actual_field_size =
sizeof(FT),
2850 bool check_field_size =
true,
2852 bool check_field_size =
false,
2854 bool silence_warnings =
false,
2855 const char *warning_string = NULL,
2856 size_t subfield_offset = 0) { }
2862 const Rect<N,COORD_T> bounds,
2865 size_t actual_field_size =
sizeof(FT),
2867 bool check_field_size =
true,
2869 bool check_field_size =
false,
2871 bool silence_warnings =
false,
2872 const char *warning_string = NULL,
2873 size_t subfield_offset = 0) { }
2877 Memory::Kind kind = Memory::NO_MEMKIND,
2880 size_t actual_field_size =
sizeof(FT),
2882 bool check_field_size =
true,
2884 bool check_field_size =
false,
2886 bool silence_warnings =
false,
2887 const char *warning_string = NULL,
2888 size_t subfield_offset = 0) { }
2892 const Rect<N,COORD_T> bounds,
2893 Memory::Kind kind = Memory::NO_MEMKIND,
2896 size_t actual_field_size =
sizeof(FT),
2898 bool check_field_size =
true,
2900 bool check_field_size =
false,
2902 bool silence_warnings =
false,
2903 const char *warning_string = NULL,
2904 size_t subfield_offset = 0) { }
2909 template<
typename InputIterator>
2911 InputIterator stop_region, FieldID fid,
2914 size_t actual_field_size =
sizeof(FT),
2916 bool check_field_size =
true,
2918 bool check_field_size =
false,
2920 bool silence_warnings =
false,
2921 const char *warning_string = NULL,
2922 size_t subfield_offset = 0) { }
2928 template<
typename InputIterator>
2930 InputIterator stop_region, FieldID fid,
2931 const Rect<N,COORD_T> bounds,
2934 size_t actual_field_size =
sizeof(FT),
2936 bool check_field_size =
true,
2938 bool check_field_size =
false,
2940 bool silence_warnings =
false,
2941 const char *warning_string = NULL,
2942 size_t subfield_offset = 0) { }
2946 template<
typename InputIterator,
int M>
2948 InputIterator stop_region, FieldID fid,
2952 size_t actual_field_size =
sizeof(FT),
2954 bool check_field_size =
true,
2956 bool check_field_size =
false,
2958 bool silence_warnings =
false,
2959 const char *warning_string = NULL,
2960 size_t subfield_offset = 0) { }
2964 template<
typename InputIterator,
int M>
2966 InputIterator stop_region, FieldID fid,
2968 const Rect<N,COORD_T> bounds,
2971 size_t actual_field_size =
sizeof(FT),
2973 bool check_field_size =
true,
2975 bool check_field_size =
false,
2977 bool silence_warnings =
false,
2978 const char *warning_string = NULL,
2979 size_t subfield_offset = 0) { }
2986 size_t actual_field_size =
sizeof(FT),
2988 bool check_field_size =
true,
2990 bool check_field_size =
false,
2992 bool silence_warnings =
false,
2993 const char *warning_string = NULL,
2994 size_t subfield_offset = 0) { }
2999 const Rect<N,COORD_T> &bounds,
3002 size_t actual_field_size =
sizeof(FT),
3004 bool check_field_size =
true,
3006 bool check_field_size =
false,
3008 bool silence_warnings =
false,
3009 const char *warning_string = NULL,
3010 size_t subfield_offset = 0) { }
3017 size_t actual_field_size =
sizeof(FT),
3019 bool check_field_size =
true,
3021 bool check_field_size =
false,
3023 bool silence_warnings =
false,
3024 const char *warning_string = NULL,
3025 size_t subfield_offset = 0) { }
3030 const Rect<N,COORD_T> &bounds,
3033 size_t actual_field_size =
sizeof(FT),
3035 bool check_field_size =
true,
3037 bool check_field_size =
false,
3039 bool silence_warnings =
false,
3040 const char *warning_string = NULL,
3041 size_t subfield_offset = 0) { }
3050 size_t actual_field_size =
sizeof(FT),
3052 bool check_field_size =
true,
3054 bool check_field_size =
false,
3056 bool silence_warnings =
false,
3057 const char *warning_string = NULL,
3058 size_t subfield_offset = 0) { }
3065 const Rect<N,COORD_T> &bounds,
3068 size_t actual_field_size =
sizeof(FT),
3070 bool check_field_size =
true,
3072 bool check_field_size =
false,
3074 bool silence_warnings =
false,
3075 const char *warning_string = NULL,
3076 size_t subfield_offset = 0) { }
3078 typedef FT value_type;
3079 typedef FT& reference;
3080 typedef const FT& const_reference;
3081 static const int dim = N;
3096 template<
typename REDOP,
bool EXCLUSIVE,
int N,
typename COORD_T = coord_t,
3097 typename A = Realm::GenericAccessor<typename REDOP::RHS,N,COORD_T>,
3098 #ifdef LEGION_BOUNDS_CHECKS
3099 bool CHECK_BOUNDS =
true>
3101 bool CHECK_BOUNDS =
false>
3105 static_assert(N > 0,
"N must be positive");
3106 static_assert(std::is_integral<COORD_T>::value,
"must be integral type");
3110 ReductionOpID redop,
bool silence_warnings =
false,
3111 const char *warning_string = NULL,
3112 size_t subfield_offset = 0,
3113 size_t actual_field_size =
sizeof(
typename REDOP::RHS),
3115 bool check_field_size =
true
3117 bool check_field_size =
false
3125 ReductionOpID redop,
3126 const Rect<N,COORD_T> bounds,
3127 bool silence_warnings =
false,
3128 const char *warning_string = NULL,
3129 size_t subfield_offset = 0,
3130 size_t actual_field_size =
sizeof(
typename REDOP::RHS),
3132 bool check_field_size =
true
3134 bool check_field_size =
false
3141 ReductionOpID redop,
3143 bool silence_warnings =
false,
3144 const char *warning_string = NULL,
3145 size_t subfield_offset = 0,
3146 size_t actual_field_size =
sizeof(
typename REDOP::RHS),
3148 bool check_field_size =
true
3150 bool check_field_size =
false
3157 ReductionOpID redop,
3159 const Rect<N,COORD_T> bounds,
3160 bool silence_warnings =
false,
3161 const char *warning_string = NULL,
3162 size_t subfield_offset = 0,
3163 size_t actual_field_size =
sizeof(
typename REDOP::RHS),
3165 bool check_field_size =
true
3167 bool check_field_size =
false
3174 template<
typename InputIterator>
3176 InputIterator stop_region, FieldID fid,
3177 ReductionOpID redop,
bool silence_warnings =
false,
3178 const char *warning_string = NULL,
3179 size_t subfield_offset = 0,
3180 size_t actual_field_size =
sizeof(
typename REDOP::RHS),
3182 bool check_field_size =
true
3184 bool check_field_size =
false
3192 template<
typename InputIterator>
3194 InputIterator stop_region, FieldID fid,
3195 ReductionOpID redop,
3196 const Rect<N,COORD_T> bounds,
3197 bool silence_warnings =
false,
3198 const char *warning_string = NULL,
3199 size_t subfield_offset = 0,
3200 size_t actual_field_size =
sizeof(
typename REDOP::RHS),
3202 bool check_field_size =
true
3204 bool check_field_size =
false
3210 template<
typename InputIterator,
int M>
3212 InputIterator stop_region, FieldID fid,
3213 ReductionOpID redop,
3215 bool silence_warnings =
false,
3216 const char *warning_string = NULL,
3217 size_t subfield_offset = 0,
3218 size_t actual_field_size =
sizeof(
typename REDOP::RHS),
3220 bool check_field_size =
true
3222 bool check_field_size =
false
3228 template<
typename InputIterator,
int M>
3230 InputIterator stop_region, FieldID fid,
3231 ReductionOpID redop,
3233 const Rect<N,COORD_T> bounds,
3234 bool silence_warnings =
false,
3235 const char *warning_string = NULL,
3236 size_t subfield_offset = 0,
3237 size_t actual_field_size =
sizeof(
typename REDOP::RHS),
3239 bool check_field_size =
true
3241 bool check_field_size =
false
3248 bool silence_warnings =
false,
3249 const char *warning_string = NULL,
3250 size_t subfield_offset = 0,
3251 size_t actual_field_size =
sizeof(
typename REDOP::RHS),
3253 bool check_field_size =
true
3255 bool check_field_size =
false
3262 const Rect<N,COORD_T> &bounds,
3263 bool silence_warnings =
false,
3264 const char *warning_string = NULL,
3265 size_t subfield_offset = 0,
3266 size_t actual_field_size =
sizeof(
typename REDOP::RHS),
3268 bool check_field_size =
true
3270 bool check_field_size =
false
3277 bool silence_warnings =
false,
3278 const char *warning_string = NULL,
3279 size_t subfield_offset = 0,
3280 size_t actual_field_size =
sizeof(
typename REDOP::RHS),
3282 bool check_field_size =
true
3284 bool check_field_size =
false
3291 const Rect<N,COORD_T> &bounds,
3292 bool silence_warnings =
false,
3293 const char *warning_string = NULL,
3294 size_t subfield_offset = 0,
3295 size_t actual_field_size =
sizeof(
typename REDOP::RHS),
3297 bool check_field_size =
true
3299 bool check_field_size =
false
3308 bool silence_warnings =
false,
3309 const char *warning_string = NULL,
3310 size_t subfield_offset = 0,
3311 size_t actual_field_size =
sizeof(
typename REDOP::RHS),
3313 bool check_field_size =
true
3315 bool check_field_size =
false
3324 const Rect<N,COORD_T> &bounds,
3325 bool silence_warnings =
false,
3326 const char *warning_string = NULL,
3327 size_t subfield_offset = 0,
3328 size_t actual_field_size =
sizeof(
typename REDOP::RHS),
3330 bool check_field_size =
true
3332 bool check_field_size =
false
3336 typedef typename REDOP::RHS value_type;
3337 typedef typename REDOP::RHS& reference;
3338 typedef const typename REDOP::RHS& const_reference;
3339 static const int dim = N;
3364 template<
typename FT,
int N,
typename COORD_T = coord_t,
3365 typename A = Realm::GenericAccessor<FT,N,COORD_T>,
3366 #ifdef LEGION_BOUNDS_CHECKS
3367 bool CHECK_BOUNDS =
true>
3369 bool CHECK_BOUNDS =
false>
3377 size_t actual_field_size =
sizeof(FT),
3379 bool check_field_size =
true,
3381 bool check_field_size =
false,
3383 bool silence_warnings =
false,
3384 const char *warning_string = NULL,
3385 size_t subfield_offset = 0) { }
3388 #ifdef LEGION_MULTI_REGION_ACCESSOR
3422 template<
typename FT,
int N,
typename COORD_T = coord_t,
3423 typename A = Realm::GenericAccessor<FT,N,COORD_T>,
3424 #ifdef LEGION_BOUNDS_CHECKS
3425 bool CHECK_BOUNDS =
true,
3427 bool CHECK_BOUNDS =
false,
3429 #ifdef LEGION_PRIVILEGE_CHECKS
3430 bool CHECK_PRIVILEGES =
true,
3432 bool CHECK_PRIVILEGES =
false,
3437 int MAX_REGIONS = 4>
3438 class MultiRegionAccessor {
3440 static_assert(N > 0,
"N must be positive");
3441 static_assert(std::is_integral<COORD_T>::value,
"must be integral type");
3443 MultiRegionAccessor(
void) { }
3445 template<
typename InputIterator>
3446 MultiRegionAccessor(InputIterator start, InputIterator stop,
3449 FieldID fid,
size_t actual_field_size =
sizeof(FT),
3451 bool check_field_size =
true,
3453 bool check_field_size =
false,
3455 bool silence_warnings =
false,
3456 const char *warning_string = NULL,
3457 size_t subfield_offset = 0) { }
3459 template<
typename InputIterator>
3460 MultiRegionAccessor(InputIterator start, InputIterator stop,
3461 const Rect<N,COORD_T> bounds, FieldID fid,
3464 size_t actual_field_size =
sizeof(FT),
3466 bool check_field_size =
true,
3468 bool check_field_size =
false,
3470 bool silence_warnings =
false,
3471 const char *warning_string = NULL,
3472 size_t subfield_offset = 0) { }
3474 template<
int M,
typename InputIterator>
3475 MultiRegionAccessor(InputIterator start, InputIterator stop,
3476 const AffineTransform<M,N,COORD_T> transform,
3479 FieldID fid,
size_t actual_field_size =
sizeof(FT),
3481 bool check_field_size =
true,
3483 bool check_field_size =
false,
3485 bool silence_warnings =
false,
3486 const char *warning_string = NULL,
3487 size_t subfield_offset = 0) { }
3489 template<
int M,
typename InputIterator>
3490 MultiRegionAccessor(InputIterator start, InputIterator stop,
3491 const AffineTransform<M,N,COORD_T> transform,
3492 const Rect<N,COORD_T> bounds, FieldID fid,
3495 size_t actual_field_size =
sizeof(FT),
3497 bool check_field_size =
true,
3499 bool check_field_size =
false,
3501 bool silence_warnings =
false,
3502 const char *warning_string = NULL,
3503 size_t subfield_offset = 0) { }
3505 MultiRegionAccessor(
const std::vector<PhysicalRegion> ®ions,
3508 FieldID fid,
size_t actual_field_size =
sizeof(FT),
3510 bool check_field_size =
true,
3512 bool check_field_size =
false,
3514 bool silence_warnings =
false,
3515 const char *warning_string = NULL,
3516 size_t subfield_offset = 0) { }
3518 MultiRegionAccessor(
const std::vector<PhysicalRegion> ®ions,
3519 const Rect<N,COORD_T> bounds, FieldID fid,
3522 size_t actual_field_size =
sizeof(FT),
3524 bool check_field_size =
true,
3526 bool check_field_size =
false,
3528 bool silence_warnings =
false,
3529 const char *warning_string = NULL,
3530 size_t subfield_offset = 0) { }
3533 MultiRegionAccessor(
const std::vector<PhysicalRegion> ®ions,
3534 const AffineTransform<M,N,COORD_T> transform,
3537 FieldID fid,
size_t actual_field_size =
sizeof(FT),
3539 bool check_field_size =
true,
3541 bool check_field_size =
false,
3543 bool silence_warnings =
false,
3544 const char *warning_string = NULL,
3545 size_t subfield_offset = 0) { }
3548 MultiRegionAccessor(
const std::vector<PhysicalRegion> ®ions,
3549 const AffineTransform<M,N,COORD_T> transform,
3550 const Rect<N,COORD_T> bounds, FieldID fid,
3553 size_t actual_field_size =
sizeof(FT),
3555 bool check_field_size =
true,
3557 bool check_field_size =
false,
3559 bool silence_warnings =
false,
3560 const char *warning_string = NULL,
3561 size_t subfield_offset = 0) { }
3563 typedef FT value_type;
3564 typedef FT& reference;
3565 typedef const FT& const_reference;
3566 static const int dim = N;
3599 bool privilege_only =
true,
3600 bool silence_warnings =
false,
3601 const char *warning_string = NULL);
3607 inline bool valid(
void)
const;
3610 inline operator bool(
void)
const;
3611 inline bool operator()(
void)
const;
3612 inline const Domain& operator*(
void)
const;
3613 inline const Domain* operator->(
void)
const;
3621 Internal::PieceIteratorImpl *impl;
3632 template<
int DIM,
typename COORD_T = coord_t>
3635 static_assert(DIM > 0,
"DIM must be positive");
3636 static_assert(std::is_integral<COORD_T>::value,
"must be integral type");
3642 bool privilege_only,
3643 bool silence_warnings =
false,
3644 const char *warning_string = NULL);
3649 inline bool step(
void);
3650 inline const Rect<DIM,COORD_T>& operator*(
void)
const;
3651 inline const Rect<DIM,COORD_T>* operator->(
void)
const;
3655 Rect<DIM,COORD_T> current_rect;
3667 template<PrivilegeMode PM,
typename FT,
int DIM,
typename COORD_T = coord_t>
3670 static_assert(DIM > 0,
"DIM must be positive");
3671 static_assert(std::is_integral<COORD_T>::value,
"must be integral type");
3677 size_t actual_field_size =
sizeof(FT),
3679 bool check_field_size =
true,
3681 bool check_field_size =
false,
3684 bool privileges_only =
true,
3685 bool silence_warnings =
false,
3686 const char *warning_string = NULL);
3688 inline bool valid(
void)
const;
3689 inline bool step(
void);
3691 inline operator bool(
void)
const;
3692 inline bool operator()(
void)
const;
3699 Realm::MultiAffineAccessor<FT,DIM,COORD_T> accessor;
3701 Point<DIM,COORD_T> partial_step_point;
3703 int partial_step_dim;
3720 template<
typename T>
3724 size_t alignment = std::alignment_of<T>());
3727 inline T read(
void)
const;
3729 inline void write(T value)
const;
3731 inline T* ptr(
void)
const;
3733 inline T& ref(
void)
const;
3735 inline operator T(
void)
const;
3739 inline void finalize(Context ctx)
const;
3743 Realm::RegionInstance instance;
3744 Realm::AffineAccessor<T,1,coord_t> accessor;
3756 template<
typename REDOP,
bool EXCLUSIVE=false>
3760 size_t alignment = std::alignment_of<typename REDOP::RHS>());
3763 inline void reduce(
typename REDOP::RHS val)
const;
3765 inline void operator<<=(
typename REDOP::RHS val)
const;
3776 const void *initial_value = NULL,
3777 size_t alignment = 16);
3779 Memory::Kind memory_kind = Memory::Z_COPY_MEM,
3780 const void *initial_value = NULL,
3781 size_t alignment = 16);
3782 template<
typename T>
3784 template<
typename REDOP,
bool EXCLUSIVE>
3787 template<
typename T>
3789 template<
typename REDOP,
bool EXCLUSIVE>
3792 void finalize(Context ctx)
const;
3793 Realm::RegionInstance get_instance()
const;
3795 template<PrivilegeMode,
typename,
int,
typename,
typename,
bool>
3797 template<
typename,
bool,
int,
typename,
typename,
bool>
3799 Realm::RegionInstance instance;
3820 template<
typename T,
int DIM,
typename COORD_T = coord_t,
3821 #ifdef LEGION_BOUNDS_CHECKS
3822 bool CHECK_BOUNDS =
true>
3824 bool CHECK_BOUNDS =
false>
3828 static_assert(DIM > 0,
"DIM must be positive");
3829 static_assert(std::is_integral<COORD_T>::value,
"must be integral type");
3835 const T *initial_value = NULL,
3836 size_t alignment = std::alignment_of<T>(),
3837 bool fortran_order_dims =
false);
3840 const T *initial_value = NULL,
3841 size_t alignment = std::alignment_of<T>(),
3842 bool fortran_order_dims =
false);
3846 const T *initial_value = NULL,
3847 size_t alignment = std::alignment_of<T>(),
3848 bool fortran_order_dims =
false);
3851 const T *initial_value = NULL,
3852 size_t alignment = std::alignment_of<T>(),
3853 bool fortran_order_dims =
false);
3857 std::array<DimensionKind,DIM> ordering,
3858 const T *initial_value = NULL,
3859 size_t alignment = std::alignment_of<T>());
3862 std::array<DimensionKind,DIM> ordering,
3863 const T *initial_value = NULL,
3864 size_t alignment = std::alignment_of<T>());
3867 std::array<DimensionKind,DIM> ordering,
3868 const T *initial_value = NULL,
3869 size_t alignment = std::alignment_of<T>());
3872 std::array<DimensionKind,DIM> ordering,
3873 const T *initial_value = NULL,
3874 size_t alignment = std::alignment_of<T>());
3876 Memory get_memory_from_kind(Memory::Kind kind);
3877 void initialize_layout(
size_t alignment,
bool fortran_order_dims);
3878 void initialize(Memory memory,
3879 DomainT<DIM,COORD_T> bounds,
3880 const T *initial_value);
3883 inline T read(
const Point<DIM,COORD_T> &p)
const;
3885 inline void write(
const Point<DIM,COORD_T> &p, T value)
const;
3887 inline T* ptr(
const Point<DIM,COORD_T> &p)
const;
3889 inline T* ptr(
const Rect<DIM,COORD_T> &r)
const;
3891 inline T* ptr(
const Rect<DIM,COORD_T> &r,
size_t strides[DIM])
const;
3893 inline T& operator[](
const Point<DIM,COORD_T> &p)
const;
3896 Realm::RegionInstance get_instance()
const;
3900 Realm::RegionInstance instance;
3901 Realm::AffineAccessor<T,DIM,COORD_T> accessor;
3902 std::array<DimensionKind,DIM> ordering;
3904 #ifdef LEGION_BOUNDS_CHECKS
3905 DomainT<DIM,COORD_T> bounds;
3915 template<
typename COORD_T = coord_t>
3918 static_assert(std::is_integral<COORD_T>::value,
"must be integral type");
3925 const void *initial_value = NULL,
3926 size_t alignment = 16,
3927 bool fortran_order_dims =
false);
3931 const void *initial_value = NULL,
3932 size_t alignment = 16,
3933 bool fortran_order_dims =
false);
3938 const void *initial_value = NULL,
3939 size_t alignment = 16,
3940 bool fortran_order_dims =
false);
3944 const void *initial_value = NULL,
3945 size_t alignment = 16,
3946 bool fortran_order_dims =
false);
3948 template<
typename T,
int DIM>
3951 template<
typename T,
int DIM,
bool BC>
3954 inline void destroy(
void);
3955 inline Realm::RegionInstance get_instance(
void)
const {
return instance; }
3957 template<PrivilegeMode,
typename,
int,
typename,
typename,
bool>
3959 template<
typename,
bool,
int,
typename,
typename,
bool>
3961 Realm::RegionInstance instance;
3978 Internal::OutputRegionImpl *impl;
3980 FRIEND_ALL_RUNTIME_CLASSES
3981 explicit OutputRegion(Internal::OutputRegionImpl *impl);
3985 Memory target_memory(
void)
const;
3990 bool is_valid_output_region(
void)
const;
3997 template<
typename T,
3999 typename COORD_T = coord_t,
4000 #ifdef LEGION_BOUNDS_CHECKS
4001 bool CHECK_BOUNDS =
true>
4003 bool CHECK_BOUNDS =
false>
4006 create_buffer(
const Point<DIM, COORD_T> &extents,
4008 const T *initial_value = NULL,
4009 bool return_buffer =
false);
4011 void check_type_tag(TypeTag type_tag)
const;
4012 void check_field_size(FieldID field_id,
size_t field_size)
const;
4013 void get_layout(FieldID field_id,
4014 std::vector<DimensionKind> &ordering,
4015 size_t &alignment)
const;
4017 template<
typename T,
4019 typename COORD_T = coord_t,
4020 #ifdef LEGION_BOUNDS_CHECKS
4021 bool CHECK_BOUNDS =
true>
4023 bool CHECK_BOUNDS =
false>
4025 void return_data(
const Point<DIM,COORD_T> &extents,
4030 Realm::RegionInstance instance,
4031 bool check_constraints =
true);
4035 Realm::RegionInstance instance,
4036 const LayoutConstraintSet *constraints,
4037 bool check_constraints);
4061 MapperID
id = 0, MappingTagID tag = 0,
4063 const char *provenance =
"");
4065 inline void add_field(FieldID f);
4066 inline void add_grant(
Grant g);
4074 std::set<FieldID> fields;
4079 std::vector<Grant> grants;
4080 std::vector<PhaseBarrier> wait_barriers;
4081 std::vector<PhaseBarrier> arrive_barriers;
4088 std::string provenance;
4092 const std::vector<StaticDependence> *static_dependences;
4094 bool silence_warnings;
4109 MapperID
id = 0, MappingTagID tag = 0,
4111 const char *provenance =
"");
4113 inline void add_field(FieldID f);
4114 inline void add_grant(
Grant g);
4122 std::set<FieldID> fields;
4127 std::vector<Grant> grants;
4128 std::vector<PhaseBarrier> wait_barriers;
4129 std::vector<PhaseBarrier> arrive_barriers;
4136 std::string provenance;
4140 const std::vector<StaticDependence> *static_dependences;
4142 bool silence_warnings;
4166 inline void add_single_task(
const DomainPoint &point,
4171 MappingTagID mapping_tag;
4172 std::vector<TaskLauncher> single_tasks;
4173 std::vector<IndexTaskLauncher> index_tasks;
4182 std::string provenance;
4184 bool silence_warnings;
4207 Internal::LegionHandshakeImpl *impl;
4210 FRIEND_ALL_RUNTIME_CLASSES
4214 {
return impl == h.impl; }
4216 {
return impl < h.impl; }
4273 FRIEND_ALL_RUNTIME_CLASSES
4277 {
return impl == h.impl; }
4279 {
return impl < h.impl; }
4320 virtual UniqueID get_unique_id(
void)
const = 0;
4324 virtual uint64_t get_context_index(
void)
const = 0;
4326 virtual int get_depth(
void)
const = 0;
4328 virtual const Task* get_parent_task(
void)
const = 0;
4332 virtual const std::string_view& get_provenance_string(
4333 bool human =
true)
const = 0;
4335 virtual MappableType get_mappable_type(
void)
const = 0;
4336 virtual const Task* as_task(
void)
const {
return NULL; }
4337 virtual const Copy* as_copy(
void)
const {
return NULL; }
4338 virtual const InlineMapping* as_inline(
void)
const {
return NULL; }
4339 virtual const Acquire* as_acquire(
void)
const {
return NULL; }
4340 virtual const Release* as_release(
void)
const {
return NULL; }
4341 virtual const Close* as_close(
void)
const {
return NULL; }
4342 virtual const Fill* as_fill(
void)
const {
return NULL; }
4343 virtual const Partition* as_partition(
void)
const {
return NULL; }
4344 virtual const MustEpoch* as_must_epoch(
void)
const {
return NULL; }
4352 mutable const Task* parent_task;
4356 size_t mapper_data_size;
4363 typedef Legion::MappableType MappableType;
4365 static const MappableType TASK_MAPPABLE = ::LEGION_TASK_MAPPABLE;
4366 static const MappableType COPY_MAPPABLE = ::LEGION_COPY_MAPPABLE;
4367 static const MappableType INLINE_MAPPABLE = ::LEGION_INLINE_MAPPABLE;
4368 static const MappableType ACQUIRE_MAPPABLE = ::LEGION_ACQUIRE_MAPPABLE;
4369 static const MappableType RELEASE_MAPPABLE = ::LEGION_RELEASE_MAPPABLE;
4370 static const MappableType CLOSE_MAPPABLE = ::LEGION_CLOSE_MAPPABLE;
4371 static const MappableType FILL_MAPPABLE = ::LEGION_FILL_MAPPABLE;
4372 static const MappableType PARTITION_MAPPABLE =
4373 ::LEGION_PARTITION_MAPPABLE;
4374 static const MappableType MUST_EPOCH_MAPPABLE =
4375 ::LEGION_MUST_EPOCH_MAPPABLE;
4391 virtual bool has_parent_task(
void)
const = 0;
4393 virtual const char* get_task_name(
void)
const = 0;
4397 virtual Domain get_slice_domain(
void)
const = 0;
4411 virtual ShardID get_shard_id(
void)
const = 0;
4412 virtual size_t get_total_shards(
void)
const = 0;
4413 virtual DomainPoint get_shard_point(
void)
const = 0;
4414 virtual Domain get_shard_domain(
void)
const = 0;
4416 virtual MappableType get_mappable_type(
void)
const
4417 {
return LEGION_TASK_MAPPABLE; }
4418 virtual const Task* as_task(
void)
const {
return this; }
4422 std::vector<IndexSpaceRequirement> indexes;
4423 std::vector<RegionRequirement> regions;
4424 std::vector<OutputRequirement> output_regions;
4425 std::vector<Future> futures;
4426 std::vector<Grant> grants;
4427 std::vector<PhaseBarrier> wait_barriers;
4428 std::vector<PhaseBarrier> arrive_barriers;
4433 bool is_index_space;
4434 bool concurrent_task;
4435 bool must_epoch_task;
4440 size_t local_arglen;
4443 Processor orig_proc;
4444 Processor current_proc;
4445 Processor target_proc;
4446 unsigned steal_count;
4449 bool local_function;
4461 virtual MappableType get_mappable_type(
void)
const
4462 {
return LEGION_COPY_MAPPABLE; }
4463 virtual const Copy* as_copy(
void)
const {
return this; }
4466 std::vector<RegionRequirement> src_requirements;
4467 std::vector<RegionRequirement> dst_requirements;
4468 std::vector<RegionRequirement> src_indirect_requirements;
4469 std::vector<RegionRequirement> dst_indirect_requirements;
4470 std::vector<Grant> grants;
4471 std::vector<PhaseBarrier> wait_barriers;
4472 std::vector<PhaseBarrier> arrive_barriers;
4475 bool is_index_space;
4490 virtual MappableType get_mappable_type(
void)
const
4491 {
return LEGION_INLINE_MAPPABLE; }
4492 virtual const InlineMapping* as_inline(
void)
const {
return this; }
4493 virtual ShardID get_parent_shard(
void)
const {
return 0; }
4497 std::vector<Grant> grants;
4498 std::vector<PhaseBarrier> wait_barriers;
4499 std::vector<PhaseBarrier> arrive_barriers;
4500 LayoutConstraintID layout_constraint_id;
4512 virtual MappableType get_mappable_type(
void)
const
4513 {
return LEGION_ACQUIRE_MAPPABLE; }
4514 virtual const Acquire* as_acquire(
void)
const {
return this; }
4519 std::set<FieldID> fields;
4520 std::vector<Grant> grants;
4521 std::vector<PhaseBarrier> wait_barriers;
4522 std::vector<PhaseBarrier> arrive_barriers;
4534 virtual MappableType get_mappable_type(
void)
const
4535 {
return LEGION_RELEASE_MAPPABLE; }
4536 virtual const Release* as_release(
void)
const {
return this; }
4541 std::set<FieldID> fields;
4542 std::vector<Grant> grants;
4543 std::vector<PhaseBarrier> wait_barriers;
4544 std::vector<PhaseBarrier> arrive_barriers;
4560 virtual MappableType get_mappable_type(
void)
const
4561 {
return LEGION_CLOSE_MAPPABLE; }
4562 virtual const Close* as_close(
void)
const {
return this; }
4578 virtual MappableType get_mappable_type(
void)
const
4579 {
return LEGION_FILL_MAPPABLE; }
4580 virtual const Fill* as_fill(
void)
const {
return this; }
4584 std::vector<Grant> grants;
4585 std::vector<PhaseBarrier> wait_barriers;
4586 std::vector<PhaseBarrier> arrive_barriers;
4589 bool is_index_space;
4606 virtual MappableType get_mappable_type(
void)
const
4607 {
return LEGION_PARTITION_MAPPABLE; }
4608 virtual const Partition* as_partition(
void)
const {
return this; }
4610 enum PartitionKind {
4618 virtual PartitionKind get_partition_kind(
void)
const = 0;
4624 bool is_index_space;
4639 virtual MappableType get_mappable_type(
void)
const
4640 {
return LEGION_MUST_EPOCH_MAPPABLE; }
4641 virtual const MustEpoch* as_must_epoch(
void)
const {
return this; }
4643 std::vector<const Task*> individual_tasks;
4644 std::vector<const Task*> index_space_tasks;
4673 std::set<Processor> local_procs;
4693 bool idempotent =
false);
4766 const Domain &launch_domain);
4780 const Domain &launch_domain);
4796 const Domain &launch_domain,
4797 const void *args,
size_t size);
4813 const Domain &launch_domain,
4814 const void *args,
size_t size);
4827 LEGION_DEPRECATED(
"The interface for projection functors has been "
4828 "updated. Please use the new 'project' methods.")
4844 LEGION_DEPRECATED("The interface for projection functors has been "
4845 "updated. Please use the new 'project' methods.")
4860 const
Domain &launch_domain,
4863 const
Domain &launch_domain,
4889 const
Domain &launch_domain);
4891 const
Domain &launch_domain);
4892 virtual
bool is_complete(
Mappable *mappable,
unsigned index,
4894 virtual
bool is_complete(
Mappable *mappable,
unsigned index,
4904 virtual
bool is_exclusive(
void)
const {
return false; }
4912 virtual bool is_functional(
void)
const {
return false; }
4934 friend class Internal::Runtime;
4937 inline void set_runtime(
Runtime *rt) { runtime = rt; }
4962 virtual bool use_points(
void)
const {
return false; }
4965 virtual ShardID shard(
const DomainPoint &index_point,
4966 const Domain &index_domain,
4967 const size_t total_shards);
4970 const Domain &index_domain,
4971 const std::vector<DomainPoint> &shard_points,
4972 const Domain &shard_domain);
4974 virtual bool is_invertible(
void)
const {
return false; }
4976 virtual void invert(ShardID shard,
4977 const Domain &sharding_domain,
4978 const Domain &index_domain,
4979 const size_t total_shards,
4980 std::vector<DomainPoint> &points);
4982 virtual void invert_points(
const DomainPoint &shard_point,
4983 const std::vector<DomainPoint> &shard_points,
4984 const Domain &shard_domain,
4985 const Domain &index_domain,
4986 const Domain &sharding_domain,
4987 std::vector<DomainPoint> &index_points);
5009 virtual const void* callback_get_future(
size_t &size,
bool &owned,
5010 const Realm::ExternalInstanceResource *&resource,
5011 void (*&freefunc)(
const Realm::ExternalInstanceResource&),
5012 const void *&metadata,
size_t &metasize) = 0;
5013 virtual void callback_release_future(
void) = 0;
5028 virtual bool is_invertible(
void)
const {
return false; }
5032 const Domain &range) = 0;
5068 friend class Internal::Runtime;
5070 Runtime(Internal::Runtime *rt);
5088 TypeTag type_tag = 0,
5089 const char *provenance = NULL);
5091 template<
int DIM,
typename COORD_T>
5093 const Rect<DIM,COORD_T> &bounds,
5094 const char *provenance = NULL);
5095 template<
int DIM,
typename COORD_T>
5097 const DomainT<DIM,COORD_T> &bounds,
5098 const char *provenance = NULL);
5115 const Future &f, TypeTag type_tag = 0,
5116 const char *provenance = NULL);
5117 template<
int DIM,
typename COORD_T>
5119 const char *provenance = NULL);
5131 const std::vector<DomainPoint> &points,
5132 const char *provenance = NULL);
5134 template<
int DIM,
typename COORD_T>
5136 const std::vector<Point<DIM,COORD_T> > &points,
5137 const char *provenance = NULL);
5149 const std::vector<Domain> &rects,
5150 const char *provenance = NULL);
5152 template<
int DIM,
typename COORD_T>
5154 const std::vector<Rect<DIM,COORD_T> > &rects,
5155 const char *provenance = NULL);
5168 const std::vector<IndexSpace> &spaces,
5169 const char *provenance = NULL);
5171 template<
int DIM,
typename COORD_T>
5174 const char *provenance = NULL);
5187 const std::vector<IndexSpace> &spaces,
5188 const char *provenance = NULL);
5190 template<
int DIM,
typename COORD_T>
5193 const char *provenance = NULL);
5204 const char *provenance = NULL);
5206 template<
int DIM,
typename COORD_T>
5209 const char *provenance = NULL);
5218 LEGION_DEPRECATED(
"Use the new index space creation routines with a "
5219 "single domain or rectangle.")
5220 IndexSpace create_index_space(Context ctx,
size_t max_num_elmts);
5228 LEGION_DEPRECATED("Use the new index space creation routines with a "
5229 "single domain or rectangle.")
5231 const std::set<
Domain> &domains);
5254 const
bool unordered = false,
5255 const
bool recurse = true,
5256 const
char *provenance = NULL);
5280 const
bool unordered = false,
5281 const
bool recurse = true,
5282 const
char *provenance = NULL);
5310 size_t granularity = 1,
5312 LEGION_AUTO_GENERATE_ID,
5313 const
char *provenance = NULL);
5314 template<
int DIM, typename COORD_T,
5315 int COLOR_DIM, typename COLOR_COORD_T>
5319 size_t granularity = 1,
5320 Color color = LEGION_AUTO_GENERATE_ID,
5321 const
char *provenance = NULL);
5344 size_t granularity = 1,
5345 Color color = LEGION_AUTO_GENERATE_ID,
5346 const
char *provenance = NULL);
5347 template<
int DIM, typename COORD_T,
int COLOR_DIM, typename COLOR_COORD_T>
5350 const std::map<Point<COLOR_DIM,COLOR_COORD_T>,
int> &weights,
5352 size_t granularity = 1,
5353 Color color = LEGION_AUTO_GENERATE_ID,
5354 const
char *provenance = NULL);
5359 size_t granularity = 1,
5360 Color color = LEGION_AUTO_GENERATE_ID,
5361 const
char *provenance = NULL);
5362 template<
int DIM, typename COORD_T,
int COLOR_DIM, typename COLOR_COORD_T>
5365 const std::map<Point<COLOR_DIM,COLOR_COORD_T>,
size_t> &weights,
5367 size_t granularity = 1, Color color = LEGION_AUTO_GENERATE_ID,
5368 const
char *provenance = NULL);
5375 size_t granularity = 1,
5377 LEGION_AUTO_GENERATE_ID,
5378 const
char *provenance = NULL);
5379 template<
int DIM, typename COORD_T,
int COLOR_DIM, typename COLOR_COORD_T>
5384 size_t granularity = 1,
5385 Color color = LEGION_AUTO_GENERATE_ID,
5386 const
char *provenance = NULL);
5418 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5419 Color color = LEGION_AUTO_GENERATE_ID,
5420 const
char *provenance = NULL);
5421 template<
int DIM, typename COORD_T,
5422 int COLOR_DIM, typename COLOR_COORD_T>
5428 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5429 Color color = LEGION_AUTO_GENERATE_ID,
5430 const
char *provenance = NULL);
5463 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5464 Color color = LEGION_AUTO_GENERATE_ID,
5465 const
char *provenance = NULL);
5466 template<
int DIM, typename COORD_T,
5467 int COLOR_DIM, typename COLOR_COORD_T>
5474 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5475 Color color = LEGION_AUTO_GENERATE_ID,
5476 const
char *provenance = NULL);
5502 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5503 Color color = LEGION_AUTO_GENERATE_ID,
5504 bool dominates = false,
5505 const
char *provenance = NULL);
5506 template<
int DIM, typename COORD_T>
5507 IndexPartitionT<DIM,COORD_T> create_partition_by_intersection(Context ctx,
5510 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5511 Color color = LEGION_AUTO_GENERATE_ID,
5512 bool dominates = false,
5513 const
char *provenance = NULL);
5546 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5547 Color color = LEGION_AUTO_GENERATE_ID,
5548 const
char *provenance = NULL);
5549 template<
int DIM, typename COORD_T,
5550 int COLOR_DIM, typename COLOR_COORD_T>
5551 IndexPartitionT<DIM,COORD_T> create_partition_by_difference(Context ctx,
5556 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5557 Color color = LEGION_AUTO_GENERATE_ID,
5558 const
char *provenance = NULL);
5586 Color create_cross_product_partitions(Context ctx,
5590 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5591 Color color = LEGION_AUTO_GENERATE_ID,
5592 const
char *provenance = NULL);
5593 template<
int DIM, typename COORD_T,
5594 int COLOR_DIM, typename COLOR_COORD_T>
5595 Color create_cross_product_partitions(Context ctx,
5601 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5602 Color color = LEGION_AUTO_GENERATE_ID,
5603 const
char *provenance = NULL);
5630 void create_association(Context ctx,
5636 MappingTagID tag = 0,
5638 const
char *provenance = NULL);
5639 void create_bidirectional_association(Context ctx,
5647 MappingTagID tag = 0,
5650 const
char *provenance = NULL);
5652 template<
int DIM1, typename COORD_T1,
int DIM2, typename COORD_T2>
5653 void create_association(Context ctx,
5659 MappingTagID tag = 0,
5661 const
char *provenance = NULL);
5662 template<
int DIM1, typename COORD_T1,
int DIM2, typename COORD_T2>
5663 void create_bidirectional_association(Context ctx,
5671 MappingTagID tag = 0,
5673 const
char *provenance = NULL);
5706 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5707 Color color = LEGION_AUTO_GENERATE_ID,
5708 const
char *provenance = NULL);
5710 template<
int DIM,
int COLOR_DIM, typename COORD_T>
5711 IndexPartitionT<DIM,COORD_T> create_partition_by_restriction(Context ctx,
5714 Transform<DIM,COLOR_DIM,COORD_T> transform,
5715 Rect<DIM,COORD_T> extent,
5716 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5717 Color color = LEGION_AUTO_GENERATE_ID,
5718 const
char *provenance = NULL);
5739 Color color = LEGION_AUTO_GENERATE_ID,
5740 const
char *provenance = NULL);
5742 template<
int DIM, typename COORD_T>
5743 IndexPartitionT<DIM,COORD_T> create_partition_by_blockify(Context ctx,
5745 Point<DIM,COORD_T> blocking_factor,
5746 Color color = LEGION_AUTO_GENERATE_ID,
5747 const
char *provenance = NULL);
5764 Color color = LEGION_AUTO_GENERATE_ID,
5765 const
char *provenance = NULL);
5767 template<
int DIM, typename COORD_T>
5768 IndexPartitionT<DIM,COORD_T> create_partition_by_blockify(Context ctx,
5770 Point<DIM,COORD_T> blocking_factor,
5771 Point<DIM,COORD_T> origin,
5772 Color color = LEGION_AUTO_GENERATE_ID,
5773 const
char *provenance = NULL);
5800 bool perform_intersections = true,
5801 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5802 Color color = LEGION_AUTO_GENERATE_ID,
5803 const
char *provenance = NULL);
5804 template<
int DIM, typename COORD_T,
int COLOR_DIM, typename COLOR_COORD_T>
5808 Point<COLOR_DIM,COLOR_COORD_T>,
5809 DomainT<DIM,COORD_T> > &domains,
5811 COLOR_COORD_T> color_space,
5812 bool perform_intersections = true,
5813 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5814 Color color = LEGION_AUTO_GENERATE_ID,
5815 const
char *provenance = NULL);
5837 bool perform_intersections = true,
5838 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5839 Color color = LEGION_AUTO_GENERATE_ID,
5840 const
char *provenance = NULL);
5841 template<
int DIM, typename COORD_T,
int COLOR_DIM, typename COLOR_COORD_T>
5846 COLOR_COORD_T> color_space,
5847 bool perform_intersections = true,
5848 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5849 Color color = LEGION_AUTO_GENERATE_ID,
5850 const
char *provenance = NULL);
5870 template<
int DIM, typename COORD_T,
int COLOR_DIM, typename COLOR_COORD_T>
5873 const std::map<Point<COLOR_DIM,COLOR_COORD_T>,
5874 std::vector<Rect<DIM,COORD_T> > > &rectangles,
5876 COLOR_COORD_T> color_space,
5877 bool perform_intersections = true,
5878 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5879 Color color = LEGION_AUTO_GENERATE_ID,
5880 const
char *provenance = NULL,
5881 bool collective = false);
5918 LEGION_AUTO_GENERATE_ID,
5920 MappingTagID tag = 0,
5921 PartitionKind part_kind =
5922 LEGION_DISJOINT_KIND,
5925 const
char *provenance = NULL);
5926 template<
int DIM, typename COORD_T,
5927 int COLOR_DIM, typename COLOR_COORD_T>
5933 Color color = LEGION_AUTO_GENERATE_ID,
5934 MapperID
id = 0, MappingTagID tag = 0,
5935 PartitionKind part_kind = LEGION_DISJOINT_KIND,
5937 const
char *provenance = NULL);
5979 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5980 Color color = LEGION_AUTO_GENERATE_ID,
5981 MapperID
id = 0, MappingTagID tag = 0,
5983 const
char *provenance = NULL);
5984 template<
int DIM1, typename COORD_T1,
5985 int DIM2, typename COORD_T2,
5986 int COLOR_DIM, typename COLOR_COORD_T>
5993 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5994 Color color = LEGION_AUTO_GENERATE_ID,
5995 MapperID
id = 0, MappingTagID tag = 0,
5997 const
char *provenance = NULL);
6005 PartitionKind part_kind = LEGION_COMPUTE_KIND,
6006 Color color = LEGION_AUTO_GENERATE_ID,
6007 MapperID
id = 0, MappingTagID tag = 0,
6009 const
char *provenance = NULL);
6010 template<
int DIM1, typename COORD_T1,
6011 int DIM2, typename COORD_T2,
6012 int COLOR_DIM, typename COLOR_COORD_T>
6020 PartitionKind part_kind = LEGION_COMPUTE_KIND,
6021 Color color = LEGION_AUTO_GENERATE_ID,
6022 MapperID
id = 0, MappingTagID tag = 0,
6024 const
char *provenance = NULL);
6063 PartitionKind part_kind = LEGION_COMPUTE_KIND,
6064 Color color = LEGION_AUTO_GENERATE_ID,
6065 MapperID
id = 0, MappingTagID tag = 0,
6067 const
char *provenance = NULL);
6068 template<
int DIM1, typename COORD_T1,
6069 int DIM2, typename COORD_T2,
6070 int COLOR_DIM, typename COLOR_COORD_T>
6071 IndexPartitionT<DIM1,COORD_T1> create_partition_by_preimage(Context ctx,
6077 PartitionKind part_kind = LEGION_COMPUTE_KIND,
6078 Color color = LEGION_AUTO_GENERATE_ID,
6079 MapperID
id = 0, MappingTagID tag = 0,
6081 const
char *provenance = NULL);
6089 PartitionKind part_kind = LEGION_COMPUTE_KIND,
6090 Color color = LEGION_AUTO_GENERATE_ID,
6091 MapperID
id = 0, MappingTagID tag = 0,
6093 const
char *provenance = NULL);
6094 template<
int DIM1, typename COORD_T1,
6095 int DIM2, typename COORD_T2,
6096 int COLOR_DIM, typename COLOR_COORD_T>
6104 PartitionKind part_kind = LEGION_COMPUTE_KIND,
6105 Color color = LEGION_AUTO_GENERATE_ID,
6106 MapperID
id = 0, MappingTagID tag = 0,
6108 const
char *provenance = NULL);
6144 PartitionKind part_kind = LEGION_COMPUTE_KIND,
6145 Color color = LEGION_AUTO_GENERATE_ID,
6146 const
char *provenance = NULL);
6147 template<
int DIM, typename COORD_T,
6148 int COLOR_DIM, typename COLOR_COORD_T>
6152 PartitionKind part_kind = LEGION_COMPUTE_KIND,
6153 Color color = LEGION_AUTO_GENERATE_ID,
6154 const
char *provenance = NULL);
6176 const
char *provenance = NULL);
6177 template<
int DIM, typename COORD_T,
6178 int COLOR_DIM, typename COLOR_COORD_T>
6179 IndexSpaceT<DIM,COORD_T> create_index_space_union(Context ctx,
6181 Point<COLOR_DIM,COLOR_COORD_T> color,
6182 const typename std::vector<
6184 const
char *provenance = NULL);
6203 const
char *provenance = NULL);
6204 template<
int DIM, typename COORD_T,
6205 int COLOR_DIM, typename COLOR_COORD_T>
6206 IndexSpaceT<DIM,COORD_T> create_index_space_union(Context ctx,
6208 Point<COLOR_DIM,COLOR_COORD_T> color,
6210 const
char *provenance = NULL);
6233 const
char *provenance = NULL);
6234 template<
int DIM, typename COORD_T,
6235 int COLOR_DIM, typename COLOR_COORD_T>
6236 IndexSpaceT<DIM,COORD_T> create_index_space_intersection(Context ctx,
6238 Point<COLOR_DIM,COLOR_COORD_T> color,
6239 const typename std::vector<
6241 const
char *provenance = NULL);
6261 const
char *provenannce=NULL);
6262 template<
int DIM, typename COORD_T,
6263 int COLOR_DIM, typename COLOR_COORD_T>
6264 IndexSpaceT<DIM,COORD_T> create_index_space_intersection(Context ctx,
6266 Point<COLOR_DIM,COLOR_COORD_T> color,
6268 const
char *provenance = NULL);
6297 const
char *provenancne = NULL);
6298 template<
int DIM, typename COORD_T,
6299 int COLOR_DIM, typename COLOR_COORD_T>
6300 IndexSpaceT<DIM,COORD_T> create_index_space_difference(Context ctx,
6302 Point<COLOR_DIM,COLOR_COORD_T> color,
6304 const typename std::vector<
6306 const
char *provenance = NULL);
6330 template<
int DIM, typename COORD_T>
6345 bool has_index_partition(Context ctx,
IndexSpace parent, Color color);
6346 bool has_index_partition(Context ctx,
IndexSpace parent,
6349 bool has_index_partition(
IndexSpace parent, Color color);
6353 template<
int DIM, typename COORD_T>
6354 bool has_index_partition(
IndexSpaceT<DIM,COORD_T> parent, Color color);
6375 template<
int DIM, typename COORD_T,
6376 int COLOR_DIM, typename COLOR_COORD_T>
6379 Point<COLOR_DIM,COLOR_COORD_T> color);
6397 template<
int DIM, typename COORD_T,
6398 int COLOR_DIM, typename COLOR_COORD_T>
6400 Point<COLOR_DIM,COLOR_COORD_T> color);
6414 LEGION_DEPRECATED("Multiple domains are no longer supported.")
6417 LEGION_DEPRECATED("Multiple domains are no longer supported.")
6418 bool has_multiple_domains(
IndexSpace handle);
6433 template<
int DIM, typename COORD_T>
6434 DomainT<DIM,COORD_T> get_index_space_domain(
6449 LEGION_DEPRECATED("Multiple domains are no longer supported.")
6451 std::vector<
Domain> &domains);
6453 LEGION_DEPRECATED("Multiple domains are no longer supported.")
6454 void get_index_space_domains(
IndexSpace handle,
6455 std::vector<
Domain> &domains);
6470 template<
int DIM, typename COORD_T,
6471 int COLOR_DIM, typename COLOR_COORD_T>
6472 DomainT<COLOR_DIM,COLOR_COORD_T>
6488 template<
int DIM, typename COORD_T,
6489 int COLOR_DIM, typename COLOR_COORD_T>
6504 void get_index_space_partition_colors(Context ctx,
IndexSpace sp,
6505 std::set<Color> &colors);
6506 void get_index_space_partition_colors(Context ctx,
IndexSpace sp,
6509 void get_index_space_partition_colors(
IndexSpace sp,
6510 std::set<Color> &colors);
6511 void get_index_space_partition_colors(
IndexSpace sp,
6551 Color get_index_space_color(
IndexSpace handle);
6554 template<
int DIM, typename COORD_T,
6555 int COLOR_DIM, typename COLOR_COORD_T>
6556 Point<COLOR_DIM,COLOR_COORD_T>
6557 get_index_space_color(
IndexSpaceT<DIM,COORD_T> handle);
6569 DomainPoint get_index_partition_color_point(Context ctx,
6587 template<
int DIM, typename COORD_T>
6601 bool has_parent_index_partition(
IndexSpace handle);
6616 template<
int DIM, typename COORD_T>
6630 unsigned get_index_space_depth(
IndexSpace handle);
6668 template<
int DIM, typename COORD_T>
6669 bool safe_cast(Context ctx,
6670 Point<DIM,COORD_T> point,
6683 FieldSpace create_field_space(Context ctx, const
char *provenance = NULL);
6696 const std::vector<
size_t> &field_sizes,
6697 std::vector<FieldID> &resulting_fields,
6698 CustomSerdezID serdez_id = 0,
6699 const
char *provenance = NULL);
6712 const std::vector<
Future> &field_sizes,
6713 std::vector<FieldID> &resulting_fields,
6714 CustomSerdezID serdez_id = 0,
6715 const
char *provenance = NULL);
6737 const
bool unordered = false,
6738 const
char *provenance = NULL);
6748 size_t get_field_size(Context ctx,
FieldSpace handle, FieldID fid);
6750 size_t get_field_size(
FieldSpace handle, FieldID fid);
6761 std::vector<FieldID> &fields);
6763 void get_field_space_fields(
FieldSpace handle,
6764 std::vector<FieldID> &fields);
6775 std::set<FieldID> &fields);
6777 void get_field_space_fields(
FieldSpace handle,
6778 std::set<FieldID> &fields);
6799 bool task_local = false,
6800 const
char *provenance = NULL);
6802 template<
int DIM, typename COORD_T>
6806 bool task_local = false,
6807 const
char *provenance = NULL);
6829 const
bool unordered = false,
6830 const
char *provenance = NULL);
6839 LEGION_DEPRECATED("Destruction of logical partitions are no-ops now."
6840 "Logical partitions are automatically destroyed when their root "
6841 "logical region or their index spartition are destroyed.")
6843 const
bool unordered = false);
6865 const std::set<FieldID> &fields);
6886 template<
int DIM, typename COORD_T>
6913 template<
int DIM, typename COORD_T>
6928 bool has_logical_partition_by_color(Context ctx,
6955 template<
int DIM, typename COORD_T>
6977 template<
int DIM, typename COORD_T>
7004 template<
int DIM, typename COORD_T,
7005 int COLOR_DIM, typename COLOR_COORD_T>
7008 Point<COLOR_DIM,COLOR_COORD_T> color);
7020 bool has_logical_subregion_by_color(Context ctx,
7027 template<
int DIM, typename COORD_T,
7028 int COLOR_DIM, typename COLOR_COORD_T>
7030 Point<COLOR_DIM,COLOR_COORD_T> color);
7052 template<
int DIM, typename COORD_T>
7068 DomainPoint get_logical_region_color_point(Context ctx,
7074 template<
int DIM, typename COORD_T,
7075 int COLOR_DIM, typename COLOR_COORD_T>
7076 Point<COLOR_DIM,COLOR_COORD_T>
7077 get_logical_region_color_point(
LogicalRegionT<DIM,COORD_T> handle);
7089 DomainPoint get_logical_partition_color_point(Context ctx,
7108 template<
int DIM, typename COORD_T>
7137 template<
int DIM, typename COORD_T>
7161 LEGION_DEPRECATED("
ArgumentMap can be constructed directly.")
7218 ReductionOpID redop,
bool ordered = true,
7245 ReductionOpID redop,
bool ordered = true,
7246 MapperID map_id = 0, MappingTagID tag = 0,
7247 const
char *provenance = NULL,
7279 bool collective = false, ShardingID sid = 0,
7280 bool implicit_sharding = false,
7281 const
char *provenance = NULL);
7282 LEGION_DEPRECATED("Use the version that takes an
IndexSpace instead")
7285 bool collective = false, ShardingID sid = 0,
7286 bool implicit_sharding = false);
7313 bool collective = false, ShardingID sid = 0,
7314 bool implicit_sharding = false,
7315 const
char *provenance = NULL);
7316 LEGION_DEPRECATED("Use the version that takes an
IndexSpace instead")
7319 bool collective = false, ShardingID sid = 0,
7320 bool implicit_sharding = false);
7344 PointTransformFnptr fnptr,
7345 const
char *provenance = NULL);
7366 bool take_ownership = false,
7367 const
char *provenance = NULL);
7384 LEGION_DEPRECATED("Launching tasks should be done with the new task "
7385 "launcher interface.")
7386 Future execute_task(Context ctx, TaskID task_id,
7393 MappingTagID tag = 0);
7413 LEGION_DEPRECATED("Launching tasks should be done with the new task "
7414 "launcher interface.")
7423 bool must_paralleism = false,
7425 MappingTagID tag = 0);
7448 LEGION_DEPRECATED("Launching tasks should be done with the new task "
7449 "launcher interface.")
7450 Future execute_index_space(Context ctx, TaskID task_id,
7457 ReductionOpID reduction,
7460 bool must_parallelism = false,
7462 MappingTagID tag = 0);
7492 MapperID
id = 0, MappingTagID tag = 0,
7493 const
char *provenance = NULL);
7507 MapperID
id = 0, MappingTagID tag = 0,
7508 const
char *provenance = NULL);
7520 const
char *provenance = NULL);
7538 void unmap_all_regions(Context ctx);
7574 template<typename T>
7576 FieldID fid, const T &value,
7593 FieldID fid, const
void *value,
size_t value_size,
7622 template<typename T>
7624 const std::set<FieldID> &fields, const T &value,
7640 const std::set<FieldID> &fields,
7641 const
void *value,
size_t value_size,
7655 const std::set<FieldID> &fields,
7706 const
bool flush = true,
7707 const
bool unordered = false,
7708 const
char *provenance = NULL);
7743 const
bool flush = true,
7744 const
bool unordered = false,
7745 const
char *provenance = NULL);
7753 void progress_unordered_operations(Context ctx);
7785 LEGION_DEPRECATED("Attaching specific HDF5 file type is deprecated "
7786 "in favor of generic attach launcher interface.")
7789 const std::map<FieldID,const
char*> &field_map,
7790 LegionFileMode mode);
7808 LEGION_DEPRECATED("Detaching specific HDF5 file type is deprecated "
7809 "in favor of generic detach interface.")
7818 LEGION_DEPRECATED("Attaching generic file type is deprecated "
7819 "in favor of generic attach launcher interface.")
7822 const std::vector<FieldID> &field_vec,
7823 LegionFileMode mode);
7830 LEGION_DEPRECATED("Detaching generic file type is deprecated "
7831 "in favor of generic detach interface.")
7868 const
char *provenance = NULL);
7880 const
char *provenance = NULL);
7894 const
char *provenance = NULL);
7908 const
char *provenance = NULL);
7927 const
char *provenance = NULL);
7949 void destroy_lock(Context ctx,
Lock l);
7975 void release_grant(Context ctx,
Grant grant);
8039 ReductionOpID redop,
8040 const
void *init_value,
8060 void arrive_dynamic_collective(Context ctx,
8063 size_t size,
unsigned count = 1);
8074 void defer_dynamic_collective_arrival(Context ctx,
8077 unsigned count = 1);
8090 const
char *provenance = NULL);
8133 Future issue_mapping_fence(Context ctx, const
char *provenance = NULL);
8144 Future issue_execution_fence(Context ctx, const
char *provenance = NULL);
8178 void begin_trace(Context ctx, TraceID tid,
bool logical_only = false,
8179 bool static_trace = false, const std::set<RegionTreeID> *managed = NULL,
8180 const
char *provenance = NULL);
8184 void end_trace(Context ctx, TraceID tid, const
char *provenance = NULL);
8199 LEGION_DEPRECATED("Use begin_trace with static_trace=true")
8200 void begin_static_trace(Context ctx,
8201 const std::set<RegionTreeID> *managed = NULL);
8206 LEGION_DEPRECATED("Use end_trace")
8207 void end_static_trace(Context ctx);
8213 TraceID generate_dynamic_trace_id(
void);
8225 TraceID generate_library_trace_ids(const
char *name,
size_t count);
8234 static TraceID generate_static_trace_id(
void);
8252 void complete_frame(Context ctx, const
char *provenance = NULL);
8284 Future select_tunable_value(Context ctx, TunableID tid,
8285 MapperID mapper = 0, MappingTagID tag = 0,
8286 const
void *args = NULL,
size_t argsize = 0);
8295 LEGION_DEPRECATED("Tunable values should now be obtained via the "
8296 "generic interface that returns a future result.")
8297 int get_tunable_value(Context ctx, TunableID tid,
8298 MapperID mapper = 0, MappingTagID tag = 0);
8308 const
Task* get_local_task(Context ctx);
8317 void* get_local_task_variable_untyped(Context ctx, LocalVariableID
id);
8318 template<typename T>
8319 T* get_local_task_variable(Context ctx, LocalVariableID
id);
8331 void set_local_task_variable_untyped(Context ctx, LocalVariableID
id,
8332 const
void *value,
void (*destructor)(
void*) = NULL);
8333 template<typename T>
8334 void set_local_task_variable(Context ctx, LocalVariableID
id,
8335 const T* value,
void (*destructor)(
void*) = NULL);
8358 Future get_current_time_in_microseconds(Context ctx,
8369 Future get_current_time_in_nanoseconds(Context ctx,
8387 static
long long get_zero_time(
void);
8406 Mapping::Mapper* get_mapper(Context ctx, MapperID
id,
8407 Processor target = Processor::NO_PROC);
8422 Mapping::MapperContext begin_mapper_call(Context ctx, MapperID
id,
8423 Processor target = Processor::NO_PROC);
8430 void end_mapper_call(Mapping::MapperContext ctx);
8438 Processor get_executing_processor(Context ctx);
8446 const
Task* get_current_task(Context ctx);
8459 size_t query_available_memory(Context ctx, Memory target);
8490 void yield(Context ctx);
8529 void concurrent_task_barrier(Context ctx);
8542 void start_profiling_range(Context ctx);
8543 void stop_profiling_range(Context ctx, const
char *provenance);
8551 bool is_MPI_interop_configured(
void);
8560 const std::map<
int,AddressSpace>& find_forward_MPI_mapping(
void);
8569 const std::map<AddressSpace,
int>& find_reverse_MPI_mapping(
void);
8574 int find_local_MPI_rank(
void);
8588 void attach_semantic_information(TaskID task_id, SemanticTag tag,
8589 const
void *buffer,
size_t size,
8590 bool is_mutable = false,
bool local_only = false);
8600 void attach_semantic_information(
IndexSpace handle, SemanticTag tag,
8601 const
void *buffer,
size_t size,
bool is_mutable = false);
8612 const
void *buffer,
size_t size,
bool is_mutable = false);
8622 void attach_semantic_information(
FieldSpace handle, SemanticTag tag,
8623 const
void *buffer,
size_t size,
bool is_mutable = false);
8635 SemanticTag tag, const
void *buffer,
8636 size_t size,
bool is_mutable = false);
8647 const
void *buffer,
size_t size,
bool is_mutable = false);
8658 SemanticTag tag, const
void *buffer,
8659 size_t size,
bool is_mutable = false);
8668 void attach_name(TaskID task_id, const
char *name,
8669 bool is_mutable = false,
8670 bool local_only = false);
8679 bool is_mutable = false);
8688 bool is_mutable = false);
8697 bool is_mutable = false);
8707 const
char *name,
bool is_mutable = false);
8716 bool is_mutable = false);
8725 bool is_mutable = false);
8737 bool retrieve_semantic_information(TaskID task_id, SemanticTag tag,
8738 const
void *&result,
size_t &size,
8739 bool can_fail = false,
8740 bool wait_until_ready = false);
8752 bool retrieve_semantic_information(
IndexSpace handle, SemanticTag tag,
8753 const
void *&result,
size_t &size,
8754 bool can_fail = false,
8755 bool wait_until_ready = false);
8768 const
void *&result,
size_t &size,
8769 bool can_fail = false,
8770 bool wait_until_ready = false);
8782 bool retrieve_semantic_information(
FieldSpace handle, SemanticTag tag,
8783 const
void *&result,
size_t &size,
8784 bool can_fail = false,
8785 bool wait_until_ready = false);
8798 bool retrieve_semantic_information(
FieldSpace handle, FieldID fid,
8800 const
void *&result,
size_t &size,
8801 bool can_fail = false,
8802 bool wait_until_ready = false);
8815 const
void *&result,
size_t &size,
8816 bool can_fail = false,
8817 bool wait_until_ready = false);
8831 const
void *&result,
size_t &size,
8832 bool can_fail = false,
8833 bool wait_until_ready = false);
8840 void retrieve_name(TaskID task_id, const
char *&result);
8869 void retrieve_name(
FieldSpace handle, FieldID fid, const
char *&result);
8898 void print_once(Context ctx, FILE *f, const
char *message);
8906 void log_once(Context ctx, Realm::LoggerMessage &message);
8919 Mapping::MapperRuntime* get_mapper_runtime(
void);
8925 MapperID generate_dynamic_mapper_id(
void);
8937 MapperID generate_library_mapper_ids(const
char *name,
size_t count);
8946 static MapperID generate_static_mapper_id(
void);
8959 void add_mapper(MapperID map_id, Mapping::Mapper *mapper,
8960 Processor proc = Processor::NO_PROC);
8973 void replace_default_mapper(Mapping::Mapper *mapper,
8974 Processor proc = Processor::NO_PROC);
8981 ProjectionID generate_dynamic_projection_id(
void);
8993 ProjectionID generate_library_projection_ids(const
char *name,
9003 static ProjectionID generate_static_projection_id(
void);
9018 void register_projection_functor(ProjectionID pid,
9020 bool silence_warnings = false,
9021 const
char *warning_string = NULL);
9032 static
void preregister_projection_functor(ProjectionID pid,
9047 ShardingID generate_dynamic_sharding_id(
void);
9059 ShardingID generate_library_sharding_ids(const
char *name,
size_t count);
9068 static ShardingID generate_static_sharding_id(
void);
9082 void register_sharding_functor(ShardingID sid,
9084 bool silence_warnings = false,
9085 const
char *warning_string = NULL);
9097 static
void preregister_sharding_functor(ShardingID sid,
9112 ReductionOpID generate_dynamic_reduction_id(
void);
9124 ReductionOpID generate_library_reduction_ids(const
char *name,
9134 static ReductionOpID generate_static_reduction_id(
void);
9150 template<typename REDOP>
9151 static
void register_reduction_op(ReductionOpID redop_id,
9152 bool permit_duplicates = false);
9174 static
void register_reduction_op(ReductionOpID redop_id,
9176 SerdezInitFnptr init_fnptr = NULL,
9177 SerdezFoldFnptr fold_fnptr = NULL,
9178 bool permit_duplicates = false);
9185 static const ReductionOp* get_reduction_op(ReductionOpID redop_id);
9187 #ifdef LEGION_GPU_REDUCTIONS
9188 template<
typename REDOP>
9189 LEGION_DEPRECATED(
"Use register_reduction_op instead")
9190 static
void preregister_gpu_reduction_op(ReductionOpID redop_id);
9234 template<
typename SERDEZ>
9236 bool permit_duplicates =
false);
9251 SerdezOp *serdez_op,
9252 bool permit_duplicates =
false);
9462 static int start(
int argc,
char **argv,
bool background =
false,
9463 bool supply_default_mapper =
true,
bool filter =
false);
9481 bool filter =
false,
bool parse =
true);
9544 Processor::Kind proc_kind,
9545 const char *task_name = NULL,
9546 bool control_replicable =
false,
9547 unsigned shard_per_address_space = 1,
9579 Realm::Event effects = Realm::Event::NO_EVENT);
9613 int ext_participants = 1,
9614 int legion_participants = 1);
9628 int mpi_participants = 1,
9629 int legion_participants = 1);
9643 LEGION_DEPRECATED(
"Projection functions should now be specified "
9644 "using projection functor objects")
9658 LEGION_DEPRECATED(
"Projection functions should now be specified "
9659 "using projection functor objects")
9679 bool dedup =
true,
size_t dedup_tag = 0);
9680 static void add_registration_callback(
9681 RegistrationWithArgsCallbackFnptr callback,
const UntypedBuffer &buffer,
9682 bool dedup =
true,
size_t dedup_tag = 0);
9709 RegistrationCallbackFnptr callback,
bool global,
9710 bool deduplicate =
true,
size_t dedup_tag = 0);
9711 static void perform_registration_callback(
9712 RegistrationWithArgsCallbackFnptr callback,
9714 bool deduplicate =
true ,
size_t dedup_tag = 0);
9727 LEGION_DEPRECATED(
"Legion now supports multiple registration callbacks "
9728 "added via the add_registration_callback method.")
9729 static
void set_registration_callback(RegistrationCallbackFnptr callback);
9741 static
void enable_profiling(
void);
9745 static
void disable_profiling(
void);
9749 static
void dump_profiling(
void);
9762 LayoutConstraintID register_layout(
9770 void release_layout(LayoutConstraintID layout_id);
9783 static LayoutConstraintID preregister_layout(
9785 LayoutConstraintID layout_id =
9786 LEGION_AUTO_GENERATE_ID);
9794 LayoutConstraintID layout_id);
9801 void get_layout_constraints(LayoutConstraintID layout_id,
9802 LayoutConstraintSet &layout_constraints);
9809 const
char* get_layout_constraints_name(LayoutConstraintID layout_id);
9819 TaskID generate_dynamic_task_id(
void);
9831 TaskID generate_library_task_ids(const
char *name,
size_t count);
9840 static TaskID generate_static_task_id(
void);
9849 template<typename T,
9853 VariantID vid = LEGION_AUTO_GENERATE_ID);
9863 template<typename T, typename UDT,
9865 Context,
Runtime*, const UDT&)>
9867 const UDT &user_data,
9868 VariantID vid = LEGION_AUTO_GENERATE_ID);
9881 VariantID vid = LEGION_AUTO_GENERATE_ID);
9891 template<typename UDT,
9893 Context,
Runtime*, const UDT&)>
9895 const UDT &user_data,
9896 VariantID vid = LEGION_AUTO_GENERATE_ID);
9918 const CodeDescriptor &codedesc,
9919 const
void *user_data = NULL,
9920 size_t user_len = 0,
9921 size_t return_type_size =
9922 LEGION_MAX_RETURN_SIZE,
9923 VariantID vid = LEGION_AUTO_GENERATE_ID,
9924 bool has_return_type_size = true);
9936 template<typename T,
9939 static VariantID preregister_task_variant(
9941 const
char *task_name = NULL,
9942 VariantID vid = LEGION_AUTO_GENERATE_ID);
9955 template<typename T, typename UDT,
9957 Context,
Runtime*, const UDT&)>
9958 static VariantID preregister_task_variant(
9960 const UDT &user_data,
9961 const
char *task_name = NULL,
9962 VariantID vid = LEGION_AUTO_GENERATE_ID);
9977 static VariantID preregister_task_variant(
9979 const
char *task_name = NULL,
9980 VariantID vid = LEGION_AUTO_GENERATE_ID);
9993 template<typename UDT,
9995 Context,
Runtime*, const UDT&)>
9996 static VariantID preregister_task_variant(
9998 const
char *task_name = NULL,
9999 VariantID vid = LEGION_AUTO_GENERATE_ID);
10022 static VariantID preregister_task_variant(
10024 const CodeDescriptor &codedesc,
10025 const
void *user_data = NULL,
10026 size_t user_len = 0,
10027 const
char *task_name = NULL,
10028 VariantID vid = LEGION_AUTO_GENERATE_ID,
10029 size_t return_type_size = LEGION_MAX_RETURN_SIZE,
10030 bool has_return_type_size = true,
10031 bool check_task_id = true);
10047 Processor p, const
Task *& task,
10049 Context& ctx,
Runtime *& runtime);
10069 const
void *retvalptr = NULL,
10070 size_t retvalsize = 0,
10071 bool owned = false,
10072 Realm::RegionInstance inst =
10073 Realm::RegionInstance::NO_INST,
10074 const
void *metadataptr = NULL,
10075 size_t metadatasize = 0);
10096 const
void *retvalptr,
size_t retvalsize,
bool owned,
10097 const Realm::ExternalInstanceResource &allocation,
10098 void (*freefunc)(const Realm::ExternalInstanceResource&) = NULL,
10099 const
void *metadataptr = NULL,
size_t metadatasize = 0);
10112 bool owned = false);
10128 template<typename T,
10131 LEGION_DEPRECATED("
Task registration should be done with "
10133 static TaskID register_legion_task(TaskID
id, Processor::Kind proc_kind,
10134 bool single,
bool index,
10135 VariantID vid =LEGION_AUTO_GENERATE_ID,
10137 const
char *task_name = NULL);
10154 LEGION_DEPRECATED("
Task registration should be done with "
10156 static TaskID register_legion_task(TaskID
id, Processor::Kind proc_kind,
10157 bool single,
bool index,
10158 VariantID vid =LEGION_AUTO_GENERATE_ID,
10160 const
char *task_name = NULL);
10176 template<typename T, typename UDT,
10178 Context,
Runtime*, const UDT&)>
10179 LEGION_DEPRECATED("
Task registration should be done with "
10181 static TaskID register_legion_task(TaskID
id, Processor::Kind proc_kind,
10182 bool single,
bool index,
10183 const UDT &user_data,
10184 VariantID vid =LEGION_AUTO_GENERATE_ID,
10186 const
char *task_name = NULL);
10202 template<typename UDT,
10204 Context,
Runtime*, const UDT&)>
10205 LEGION_DEPRECATED("
Task registration should be done with "
10207 static TaskID register_legion_task(TaskID
id, Processor::Kind proc_kind,
10208 bool single,
bool index,
10209 const UDT &user_data,
10210 VariantID vid =LEGION_AUTO_GENERATE_ID,
10212 const
char *task_name = NULL);
10220 static
bool has_runtime(
void);
10229 static
Runtime* get_runtime(Processor p = Processor::NO_PROC);
10237 static
bool has_context(
void);
10245 static Context get_context(
void);
10252 static const
Task* get_context_task(Context ctx);
10257 const
void *transform,
10258 size_t transform_size,
10259 const
void *extent,
10260 size_t extent_size,
10261 PartitionKind part_kind, Color color,
10262 const
char *provenance);
10263 IndexSpace create_index_space_union_internal(Context ctx,
10265 const
void *realm_color,
size_t color_size,
10266 TypeTag type_tag, const
char *provenance,
10268 IndexSpace create_index_space_union_internal(Context ctx,
10270 const
void *realm_color,
size_t color_size,
10271 TypeTag type_tag, const
char *provenance,
10273 IndexSpace create_index_space_intersection_internal(Context ctx,
10275 const
void *realm_color,
size_t color_size,
10276 TypeTag type_tag, const
char *provenance,
10278 IndexSpace create_index_space_intersection_internal(Context ctx,
10280 const
void *realm_color,
size_t color_size,
10281 TypeTag type_tag, const
char *provenance,
10283 IndexSpace create_index_space_difference_internal(Context ctx,
10285 const
void *realm_color,
size_t color_size,
10286 TypeTag type_tag, const
char *provenance,
10290 const
void *realm_color,TypeTag type_tag);
10292 const
void *realm_color,TypeTag type_tag);
10293 void get_index_partition_color_space_internal(
IndexPartition handle,
10294 void *realm_is, TypeTag type_tag);
10295 void get_index_space_domain_internal(
IndexSpace handle,
10296 void *realm_is, TypeTag type_tag);
10297 void get_index_space_color_internal(
IndexSpace handle,
10298 void *realm_color, TypeTag type_tag);
10300 const
void *realm_point,TypeTag type_tag);
10303 const
void *realm_color,TypeTag type_tag);
10304 bool has_logical_subregion_by_color_internal(
10306 const
void *realm_color,TypeTag type_tag);
10309 friend class LegionTaskWrapper;
10310 friend class LegionSerialization;
10312 template<typename T>
10314 template<typename T,
int DIM, typename COORD_T,
bool CHECK_BOUNDS>
10319 Realm::RegionInstance create_task_local_instance(Memory memory,
10320 Realm::InstanceLayoutGeneric *layout);
10321 void destroy_task_local_instance(Realm::RegionInstance instance);
10327 ShardID get_shard_id(Context ctx,
bool I_know_what_I_am_doing = false);
10330 size_t get_num_shards(Context ctx,
bool I_know_what_I_am_doing = false);
10349 Future consensus_match(Context ctx, const
void *input,
void *output,
10350 size_t num_elements,
size_t element_size, const
char *provenance = NULL);
10352 friend class Mapper;
10358 #include "legion/legion.inl"
10363 #include "legion/legion_mapping.h"
Definition: legion.h:4508
void set_point(const DomainPoint &point, const UntypedBuffer &arg, bool replace=true)
bool remove_point(const DomainPoint &point)
bool remove_point(const PT point[DIM])
bool has_point(const DomainPoint &point)
void set_point_arg(const PT point[DIM], const UntypedBuffer &arg, bool replace=false)
void set_point(const DomainPoint &point, const Future &f, bool replace=true)
UntypedBuffer get_point(const DomainPoint &point) const
Definition: legion_types.h:209
Definition: legion_types.h:210
Definition: legion.h:4556
Definition: legion.h:4457
Definition: legion.h:3826
Definition: legion.h:3757
Definition: legion.h:3721
Definition: legion_domain.h:253
Definition: legion_domain.h:132
Definition: legion_domain.h:610
Definition: legion.h:2738
Definition: legion.h:2806
FieldID allocate_field(size_t field_size, FieldID desired_fieldid=LEGION_AUTO_GENERATE_ID, CustomSerdezID serdez_id=0, bool local_field=false, const char *provenance=NULL)
void allocate_local_fields(const std::vector< size_t > &field_sizes, std::vector< FieldID > &resulting_fields, CustomSerdezID serdez_id=0, const char *provenance=NULL)
FieldID allocate_local_field(size_t field_size, FieldID desired_fieldid=LEGION_AUTO_GENERATE_ID, CustomSerdezID serdez_id=0, const char *provenance=NULL)
void allocate_fields(const std::vector< size_t > &field_sizes, std::vector< FieldID > &resulting_fields, CustomSerdezID serdez_id=0, bool local_fields=false, const char *provenance=NULL)
FieldSpace get_field_space(void) const
void free_fields(const std::set< FieldID > &to_free, const bool unordered=false, const char *provenance=NULL)
void free_field(FieldID fid, const bool unordered=false, const char *provenance=NULL)
static const FieldSpace NO_SPACE
Definition: legion.h:202
Definition: legion.h:4574
Definition: legion.h:5005
Definition: legion.h:1183
void get_memories(std::set< Memory > &memories, bool silence_warnings=false, const char *warning_string=NULL) const
void get_void_result(bool silence_warnings=false, const char *warning_string=NULL) const
T get_result(bool silence_warnings=false, const char *warning_string=NULL) const
Span< T, PM > get_span(Memory::Kind memory, bool silence_warnings=false, const char *warning_string=NULL) const
bool is_empty(bool block=false, bool silence_warnings=false, const char *warning_string=NULL) const
const void * get_buffer(Memory::Kind memory, size_t *extent_in_bytes=NULL, bool check_extent=false, bool silence_warnings=false, const char *warning_string=NULL) const
bool is_ready(bool subscribe=false) const
Definition: legion.h:1397
Domain get_future_map_domain(void) const
void get_void_result(const PT point[DIM]) const
T get_result(const DomainPoint &point, bool silence_warnings=false, const char *warning_string=NULL) const
void wait_all_results(bool silence_warnings=false, const char *warning_string=NULL) const
void get_void_result(const DomainPoint &point, bool silence_warnings=false, const char *warning_string=NULL) const
Future get_future(const PT point[DIM]) const
Future get_future(const DomainPoint &point) const
RT get_result(const PT point[DIM]) const
static const IndexSpace NO_SPACE
Definition: legion.h:87
Definition: legion.h:4486
Definition: legion_types.h:2967
Definition: legion.h:4201
void legion_handoff_to_ext(void) const
PhaseBarrier get_legion_wait_phase_barrier(void) const
PhaseBarrier get_legion_arrive_phase_barrier(void) const
void ext_handoff_to_legion(void) const
void legion_wait_on_ext(void) const
void ext_wait_on_legion(void) const
void advance_legion_handshake(void) const
static const LogicalPartition NO_PART
Definition: legion.h:306
static const LogicalRegion NO_REGION
Definition: legion.h:238
Definition: legion.h:4266
void legion_handoff_to_mpi(void) const
Definition: legion.h:4297
void mpi_handoff_to_legion(void) const
Definition: legion.h:4286
void legion_wait_on_mpi(void) const
Definition: legion.h:4302
void mpi_wait_on_legion(void) const
Definition: legion.h:4291
Definition: legion.h:4315
Definition: legion.h:4635
Definition: legion.h:3972
Definition: legion.h:3371
Definition: legion.h:4602
Definition: legion.h:2591
LogicalRegion get_logical_region(void) const
void get_memories(std::set< Memory > &memories, bool silence_warnings=false, const char *warning_string=NULL) const
void wait_until_valid(bool silence_warnings=false, const char *warning_string=NULL)
PrivilegeMode get_privilege(void) const
bool is_valid(void) const
bool is_mapped(void) const
void get_fields(std::vector< FieldID > &fields) const
Definition: legion.h:3593
Definition: legion.h:3633
Definition: legion.h:4717
virtual unsigned get_depth(void) const =0
virtual LogicalRegion project(const Mappable *mappable, unsigned index, LogicalPartition upper_bound, const DomainPoint &point)
virtual LogicalRegion project(LogicalPartition upper_bound, const DomainPoint &point, const Domain &launch_domain, const void *args, size_t size)
virtual LogicalRegion project(const Mappable *mappable, unsigned index, LogicalRegion upper_bound, const DomainPoint &point)
virtual LogicalRegion project(LogicalRegion upper_bound, const DomainPoint &point, const Domain &launch_domain)
virtual bool is_invertible(void) const
Definition: legion.h:4919
virtual LogicalRegion project(LogicalPartition upper_bound, const DomainPoint &point, const Domain &launch_domain)
virtual LogicalRegion project(LogicalRegion upper_bound, const DomainPoint &point, const Domain &launch_domain, const void *args, size_t size)
Definition: legion.h:3103
Definition: legion.h:4530
Definition: legion.h:5064
static void register_custom_serdez_op(CustomSerdezID serdez_id, bool permit_duplicates=false)
Context begin_implicit_task(TaskID top_task_id, MapperID mapper_id, Processor::Kind proc_kind, const char *task_name=NULL, bool control_replicable=false, unsigned shard_per_address_space=1, int shard_id=-1, DomainPoint shard_point=DomainPoint())
static int wait_for_shutdown(void)
void unbind_implicit_task_from_external_thread(Context ctx)
IndexSpace create_index_space(Context ctx, const std::vector< DomainPoint > &points, const char *provenance=NULL)
CustomSerdezID generate_dynamic_serdez_id(void)
static void set_return_code(int return_code)
static LegionHandshake create_external_handshake(bool init_in_ext=true, int ext_participants=1, int legion_participants=1)
IndexSpace create_index_space(Context ctx, size_t dimensions, const Future &f, TypeTag type_tag=0, const char *provenance=NULL)
static const SerdezOp * get_serdez_op(CustomSerdezID serdez_id)
static void configure_MPI_interoperability(int rank)
static void set_top_level_task_id(TaskID top_id)
IndexSpace union_index_spaces(Context ctx, const std::vector< IndexSpace > &spaces, const char *provenance=NULL)
CustomSerdezID generate_library_serdez_ids(const char *name, size_t count)
void finish_implicit_task(Context ctx, Realm::Event effects=Realm::Event::NO_EVENT)
static CustomSerdezID generate_static_serdez_id(void)
static int start(int argc, char **argv, bool background=false, bool supply_default_mapper=true, bool filter=false)
Future launch_top_level_task(const TaskLauncher &launcher)
static ProjectionID register_region_function(ProjectionID handle)
static ProjectionID register_partition_function(ProjectionID handle)
IndexSpace create_index_space(Context ctx, const std::vector< Domain > &rects, const char *provenance=NULL)
static void register_custom_serdez_op(CustomSerdezID serdez_id, SerdezOp *serdez_op, bool permit_duplicates=false)
IndexSpace intersect_index_spaces(Context ctx, const std::vector< IndexSpace > &spaces, const char *provenance=NULL)
static void set_top_level_task_mapper_id(MapperID mapper_id)
void bind_implicit_task_to_external_thread(Context ctx)
IndexSpace subtract_index_spaces(Context ctx, IndexSpace left, IndexSpace right, const char *provenance=NULL)
IndexSpace create_index_space(Context ctx, const Domain &bounds, TypeTag type_tag=0, const char *provenance=NULL)
static MPILegionHandshake create_handshake(bool init_in_MPI=true, int mpi_participants=1, int legion_participants=1)
static void perform_registration_callback(RegistrationCallbackFnptr callback, bool global, bool deduplicate=true, size_t dedup_tag=0)
static const char * get_legion_version(void)
static void initialize(int *argc, char ***argv, bool filter=false, bool parse=true)
static size_t get_maximum_dimension(void)
static void add_registration_callback(RegistrationCallbackFnptr callback, bool dedup=true, size_t dedup_tag=0)
Definition: legion.h:4955
Definition: legion_domain.h:734
Definition: legion.h:3668
Definition: legion.h:4386
Definition: legion_types.h:207
Definition: legion_types.h:3475
Definition: legion.h:3916
Definition: legion.h:3772
void legion_task_preamble(const void *data, size_t datalen, realm_id_t proc_id, legion_task_t *taskptr, const legion_physical_region_t **regionptr, unsigned *num_regions_ptr, legion_context_t *ctxptr, legion_runtime_t *runtimeptr)
void legion_task_postamble(legion_runtime_t runtime, legion_context_t ctx, const void *retval, size_t retsize)
Definition: legion.h:4055
Definition: legion.h:2212
Definition: legion.h:1835
Definition: legion.h:2171
Definition: legion.h:1146
Definition: legion.h:2004
Definition: legion.h:2304
Definition: legion.h:1916
Definition: legion.h:2064
Definition: legion.h:1118
Definition: legion.h:1650
Definition: legion.h:1775
Definition: legion.h:2460
Definition: legion.h:4162
Definition: legion.h:1078
IndexSpace color_space
Definition: legion.h:1108
FieldSpace field_space
Definition: legion.h:1105
bool global_indexing
Definition: legion.h:1106
bool valid_requirement
Definition: legion.h:1107
Definition: legion.h:2497
Definition: legion.h:2394
ProjectionType handle_type
Definition: legion.h:1003
std::set< FieldID > privilege_fields
Definition: legion.h:994
RegionRequirement & add_field(FieldID fid, bool instance=true)
RegionRequirement(LogicalPartition pid, ProjectionID _proj, const std::set< FieldID > &privilege_fields, const std::vector< FieldID > &instance_fields, PrivilegeMode _priv, CoherenceProperty _prop, LogicalRegion _parent, MappingTagID _tag=0, bool _verified=false)
RegionRequirement(LogicalRegion _handle, ProjectionID _proj, const std::set< FieldID > &privilege_fields, const std::vector< FieldID > &instance_fields, PrivilegeMode _priv, CoherenceProperty _prop, LogicalRegion _parent, MappingTagID _tag=0, bool _verified=false)
ProjectionID projection
Definition: legion.h:1004
LogicalRegion parent
Definition: legion.h:998
void * projection_args
Definition: legion.h:1006
std::vector< FieldID > instance_fields
Definition: legion.h:995
LogicalPartition partition
Definition: legion.h:993
MappingTagID tag
Definition: legion.h:1000
CoherenceProperty prop
Definition: legion.h:997
ReductionOpID redop
Definition: legion.h:999
RegionRequirement(LogicalRegion _handle, const std::set< FieldID > &privilege_fields, const std::vector< FieldID > &instance_fields, ReductionOpID op, CoherenceProperty _prop, LogicalRegion _parent, MappingTagID _tag=0, bool _verified=false)
RegionRequirement(LogicalPartition pid, ProjectionID _proj, const std::set< FieldID > &privilege_fields, const std::vector< FieldID > &instance_fields, ReductionOpID op, CoherenceProperty _prop, LogicalRegion _parent, MappingTagID _tag=0, bool _verified=false)
PrivilegeMode privilege
Definition: legion.h:996
RegionRequirement(LogicalRegion _handle, ProjectionID _proj, const std::set< FieldID > &privilege_fields, const std::vector< FieldID > &instance_fields, ReductionOpID op, CoherenceProperty _prop, LogicalRegion _parent, MappingTagID _tag=0, bool _verified=false)
size_t projection_args_size
Definition: legion.h:1007
RegionFlags flags
Definition: legion.h:1001
RegionRequirement(LogicalRegion _handle, const std::set< FieldID > &privilege_fields, const std::vector< FieldID > &instance_fields, PrivilegeMode _priv, CoherenceProperty _prop, LogicalRegion _parent, MappingTagID _tag=0, bool _verified=false)
LogicalRegion region
Definition: legion.h:992
Definition: legion.h:4670
Definition: legion.h:4103
Definition: legion.h:1509
Definition: legion.h:4689
Definition: legion.h:1547
Definition: legion.h:2521
Definition: legion.h:2410
Definition: legion.h:2428