5139 friend class Internal::Runtime;
5141 Runtime(Internal::Runtime *rt);
5162 TypeTag type_tag = 0,
5163 const char *provenance = NULL,
5164 const bool take_ownership =
false);
5166 template<
int DIM,
typename COORD_T>
5167 IndexSpaceT<DIM,COORD_T> create_index_space(Context ctx,
5168 const Rect<DIM,COORD_T> &bounds,
5169 const char *provenance = NULL);
5170 template<
int DIM,
typename COORD_T>
5171 IndexSpaceT<DIM,COORD_T> create_index_space(Context ctx,
5172 const DomainT<DIM,COORD_T> &bounds,
5173 const char *provenance = NULL,
5174 const bool take_ownership =
false);
5191 const Future &f, TypeTag type_tag = 0,
5192 const char *provenance = NULL);
5193 template<
int DIM,
typename COORD_T>
5194 IndexSpaceT<DIM,COORD_T> create_index_space(Context ctx,
const Future &f,
5195 const char *provenance = NULL);
5207 const std::vector<DomainPoint> &points,
5208 const char *provenance = NULL);
5210 template<
int DIM,
typename COORD_T>
5211 IndexSpaceT<DIM,COORD_T> create_index_space(Context ctx,
5212 const std::vector<Point<DIM,COORD_T> > &points,
5213 const char *provenance = NULL);
5225 const std::vector<Domain> &rects,
5226 const char *provenance = NULL);
5228 template<
int DIM,
typename COORD_T>
5229 IndexSpaceT<DIM,COORD_T> create_index_space(Context ctx,
5230 const std::vector<Rect<DIM,COORD_T> > &rects,
5231 const char *provenance = NULL);
5244 const std::vector<IndexSpace> &spaces,
5245 const char *provenance = NULL);
5247 template<
int DIM,
typename COORD_T>
5248 IndexSpaceT<DIM,COORD_T> union_index_spaces(Context ctx,
5249 const std::vector<IndexSpaceT<DIM,COORD_T> > &spaces,
5250 const char *provenance = NULL);
5263 const std::vector<IndexSpace> &spaces,
5264 const char *provenance = NULL);
5266 template<
int DIM,
typename COORD_T>
5267 IndexSpaceT<DIM,COORD_T> intersect_index_spaces(Context ctx,
5268 const std::vector<IndexSpaceT<DIM,COORD_T> > &spaces,
5269 const char *provenance = NULL);
5280 const char *provenance = NULL);
5282 template<
int DIM,
typename COORD_T>
5283 IndexSpaceT<DIM,COORD_T> subtract_index_spaces(Context ctx,
5284 IndexSpaceT<DIM,COORD_T> left, IndexSpaceT<DIM,COORD_T> right,
5285 const char *provenance = NULL);
5294 LEGION_DEPRECATED(
"Use the new index space creation routines with a "
5295 "single domain or rectangle.")
5296 IndexSpace create_index_space(Context ctx,
size_t max_num_elmts);
5304 LEGION_DEPRECATED("Use the new index space creation routines with a "
5305 "single domain or rectangle.")
5307 const std::set<
Domain> &domains);
5330 const
bool unordered = false,
5331 const
bool recurse = true,
5332 const
char *provenance = NULL);
5356 const
bool unordered = false,
5357 const
bool recurse = true,
5358 const
char *provenance = NULL);
5386 size_t granularity = 1,
5388 LEGION_AUTO_GENERATE_ID,
5389 const
char *provenance = NULL);
5390 template<
int DIM, typename COORD_T,
5391 int COLOR_DIM, typename COLOR_COORD_T>
5395 size_t granularity = 1,
5396 Color color = LEGION_AUTO_GENERATE_ID,
5397 const
char *provenance = NULL);
5420 size_t granularity = 1,
5421 Color color = LEGION_AUTO_GENERATE_ID,
5422 const
char *provenance = NULL);
5423 template<
int DIM, typename COORD_T,
int COLOR_DIM, typename COLOR_COORD_T>
5426 const std::map<Point<COLOR_DIM,COLOR_COORD_T>,
int> &weights,
5428 size_t granularity = 1,
5429 Color color = LEGION_AUTO_GENERATE_ID,
5430 const
char *provenance = NULL);
5435 size_t granularity = 1,
5436 Color color = LEGION_AUTO_GENERATE_ID,
5437 const
char *provenance = NULL);
5438 template<
int DIM, typename COORD_T,
int COLOR_DIM, typename COLOR_COORD_T>
5441 const std::map<Point<COLOR_DIM,COLOR_COORD_T>,
size_t> &weights,
5443 size_t granularity = 1, Color color = LEGION_AUTO_GENERATE_ID,
5444 const
char *provenance = NULL);
5451 size_t granularity = 1,
5453 LEGION_AUTO_GENERATE_ID,
5454 const
char *provenance = NULL);
5455 template<
int DIM, typename COORD_T,
int COLOR_DIM, typename COLOR_COORD_T>
5460 size_t granularity = 1,
5461 Color color = LEGION_AUTO_GENERATE_ID,
5462 const
char *provenance = NULL);
5494 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5495 Color color = LEGION_AUTO_GENERATE_ID,
5496 const
char *provenance = NULL);
5497 template<
int DIM, typename COORD_T,
5498 int COLOR_DIM, typename COLOR_COORD_T>
5504 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5505 Color color = LEGION_AUTO_GENERATE_ID,
5506 const
char *provenance = NULL);
5539 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5540 Color color = LEGION_AUTO_GENERATE_ID,
5541 const
char *provenance = NULL);
5542 template<
int DIM, typename COORD_T,
5543 int COLOR_DIM, typename COLOR_COORD_T>
5550 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5551 Color color = LEGION_AUTO_GENERATE_ID,
5552 const
char *provenance = NULL);
5578 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5579 Color color = LEGION_AUTO_GENERATE_ID,
5580 bool dominates = false,
5581 const
char *provenance = NULL);
5582 template<
int DIM, typename COORD_T>
5583 IndexPartitionT<DIM,COORD_T> create_partition_by_intersection(Context ctx,
5586 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5587 Color color = LEGION_AUTO_GENERATE_ID,
5588 bool dominates = false,
5589 const
char *provenance = NULL);
5622 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5623 Color color = LEGION_AUTO_GENERATE_ID,
5624 const
char *provenance = NULL);
5625 template<
int DIM, typename COORD_T,
5626 int COLOR_DIM, typename COLOR_COORD_T>
5627 IndexPartitionT<DIM,COORD_T> create_partition_by_difference(Context ctx,
5632 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5633 Color color = LEGION_AUTO_GENERATE_ID,
5634 const
char *provenance = NULL);
5662 Color create_cross_product_partitions(Context ctx,
5666 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5667 Color color = LEGION_AUTO_GENERATE_ID,
5668 const
char *provenance = NULL);
5669 template<
int DIM, typename COORD_T,
5670 int COLOR_DIM, typename COLOR_COORD_T>
5671 Color create_cross_product_partitions(Context ctx,
5677 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5678 Color color = LEGION_AUTO_GENERATE_ID,
5679 const
char *provenance = NULL);
5706 void create_association(Context ctx,
5712 MappingTagID tag = 0,
5714 const
char *provenance = NULL);
5715 void create_bidirectional_association(Context ctx,
5723 MappingTagID tag = 0,
5726 const
char *provenance = NULL);
5728 template<
int DIM1, typename COORD_T1,
int DIM2, typename COORD_T2>
5729 void create_association(Context ctx,
5735 MappingTagID tag = 0,
5737 const
char *provenance = NULL);
5738 template<
int DIM1, typename COORD_T1,
int DIM2, typename COORD_T2>
5739 void create_bidirectional_association(Context ctx,
5747 MappingTagID tag = 0,
5749 const
char *provenance = NULL);
5782 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5783 Color color = LEGION_AUTO_GENERATE_ID,
5784 const
char *provenance = NULL);
5786 template<
int DIM,
int COLOR_DIM, typename COORD_T>
5787 IndexPartitionT<DIM,COORD_T> create_partition_by_restriction(Context ctx,
5790 Transform<DIM,COLOR_DIM,COORD_T> transform,
5791 Rect<DIM,COORD_T> extent,
5792 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5793 Color color = LEGION_AUTO_GENERATE_ID,
5794 const
char *provenance = NULL);
5815 Color color = LEGION_AUTO_GENERATE_ID,
5816 const
char *provenance = NULL);
5818 template<
int DIM, typename COORD_T>
5819 IndexPartitionT<DIM,COORD_T> create_partition_by_blockify(Context ctx,
5821 Point<DIM,COORD_T> blocking_factor,
5822 Color color = LEGION_AUTO_GENERATE_ID,
5823 const
char *provenance = NULL);
5840 Color color = LEGION_AUTO_GENERATE_ID,
5841 const
char *provenance = NULL);
5843 template<
int DIM, typename COORD_T>
5844 IndexPartitionT<DIM,COORD_T> create_partition_by_blockify(Context ctx,
5846 Point<DIM,COORD_T> blocking_factor,
5847 Point<DIM,COORD_T> origin,
5848 Color color = LEGION_AUTO_GENERATE_ID,
5849 const
char *provenance = NULL);
5878 bool perform_intersections = true,
5879 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5880 Color color = LEGION_AUTO_GENERATE_ID,
5881 const
char *provenance = NULL,
5882 bool take_ownership = false);
5883 template<
int DIM, typename COORD_T,
int COLOR_DIM, typename COLOR_COORD_T>
5887 Point<COLOR_DIM,COLOR_COORD_T>,
5888 DomainT<DIM,COORD_T> > &domains,
5890 COLOR_COORD_T> color_space,
5891 bool perform_intersections = true,
5892 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5893 Color color = LEGION_AUTO_GENERATE_ID,
5894 const
char *provenance = NULL,
5895 bool take_ownership = false);
5917 bool perform_intersections = true,
5918 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5919 Color color = LEGION_AUTO_GENERATE_ID,
5920 const
char *provenance = NULL);
5921 template<
int DIM, typename COORD_T,
int COLOR_DIM, typename COLOR_COORD_T>
5926 COLOR_COORD_T> color_space,
5927 bool perform_intersections = true,
5928 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5929 Color color = LEGION_AUTO_GENERATE_ID,
5930 const
char *provenance = NULL);
5950 template<
int DIM, typename COORD_T,
int COLOR_DIM, typename COLOR_COORD_T>
5953 const std::map<Point<COLOR_DIM,COLOR_COORD_T>,
5954 std::vector<Rect<DIM,COORD_T> > > &rectangles,
5956 COLOR_COORD_T> color_space,
5957 bool perform_intersections = true,
5958 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5959 Color color = LEGION_AUTO_GENERATE_ID,
5960 const
char *provenance = NULL,
5961 bool collective = false);
5998 LEGION_AUTO_GENERATE_ID,
6000 MappingTagID tag = 0,
6001 PartitionKind part_kind =
6002 LEGION_DISJOINT_KIND,
6005 const
char *provenance = NULL);
6006 template<
int DIM, typename COORD_T,
6007 int COLOR_DIM, typename COLOR_COORD_T>
6013 Color color = LEGION_AUTO_GENERATE_ID,
6014 MapperID
id = 0, MappingTagID tag = 0,
6015 PartitionKind part_kind = LEGION_DISJOINT_KIND,
6017 const
char *provenance = NULL);
6059 PartitionKind part_kind = LEGION_COMPUTE_KIND,
6060 Color color = LEGION_AUTO_GENERATE_ID,
6061 MapperID
id = 0, MappingTagID tag = 0,
6063 const
char *provenance = NULL);
6064 template<
int DIM1, typename COORD_T1,
6065 int DIM2, typename COORD_T2,
6066 int COLOR_DIM, typename COLOR_COORD_T>
6073 PartitionKind part_kind = LEGION_COMPUTE_KIND,
6074 Color color = LEGION_AUTO_GENERATE_ID,
6075 MapperID
id = 0, MappingTagID tag = 0,
6077 const
char *provenance = NULL);
6085 PartitionKind part_kind = LEGION_COMPUTE_KIND,
6086 Color color = LEGION_AUTO_GENERATE_ID,
6087 MapperID
id = 0, MappingTagID tag = 0,
6089 const
char *provenance = NULL);
6090 template<
int DIM1, typename COORD_T1,
6091 int DIM2, typename COORD_T2,
6092 int COLOR_DIM, typename COLOR_COORD_T>
6100 PartitionKind part_kind = LEGION_COMPUTE_KIND,
6101 Color color = LEGION_AUTO_GENERATE_ID,
6102 MapperID
id = 0, MappingTagID tag = 0,
6104 const
char *provenance = NULL);
6143 PartitionKind part_kind = LEGION_COMPUTE_KIND,
6144 Color color = LEGION_AUTO_GENERATE_ID,
6145 MapperID
id = 0, MappingTagID tag = 0,
6147 const
char *provenance = NULL);
6148 template<
int DIM1, typename COORD_T1,
6149 int DIM2, typename COORD_T2,
6150 int COLOR_DIM, typename COLOR_COORD_T>
6151 IndexPartitionT<DIM1,COORD_T1> create_partition_by_preimage(Context ctx,
6157 PartitionKind part_kind = LEGION_COMPUTE_KIND,
6158 Color color = LEGION_AUTO_GENERATE_ID,
6159 MapperID
id = 0, MappingTagID tag = 0,
6161 const
char *provenance = NULL);
6169 PartitionKind part_kind = LEGION_COMPUTE_KIND,
6170 Color color = LEGION_AUTO_GENERATE_ID,
6171 MapperID
id = 0, MappingTagID tag = 0,
6173 const
char *provenance = NULL);
6174 template<
int DIM1, typename COORD_T1,
6175 int DIM2, typename COORD_T2,
6176 int COLOR_DIM, typename COLOR_COORD_T>
6184 PartitionKind part_kind = LEGION_COMPUTE_KIND,
6185 Color color = LEGION_AUTO_GENERATE_ID,
6186 MapperID
id = 0, MappingTagID tag = 0,
6188 const
char *provenance = NULL);
6224 PartitionKind part_kind = LEGION_COMPUTE_KIND,
6225 Color color = LEGION_AUTO_GENERATE_ID,
6226 const
char *provenance = NULL);
6227 template<
int DIM, typename COORD_T,
6228 int COLOR_DIM, typename COLOR_COORD_T>
6232 PartitionKind part_kind = LEGION_COMPUTE_KIND,
6233 Color color = LEGION_AUTO_GENERATE_ID,
6234 const
char *provenance = NULL);
6256 const
char *provenance = NULL);
6257 template<
int DIM, typename COORD_T,
6258 int COLOR_DIM, typename COLOR_COORD_T>
6259 IndexSpaceT<DIM,COORD_T> create_index_space_union(Context ctx,
6261 Point<COLOR_DIM,COLOR_COORD_T> color,
6262 const typename std::vector<
6264 const
char *provenance = NULL);
6283 const
char *provenance = NULL);
6284 template<
int DIM, typename COORD_T,
6285 int COLOR_DIM, typename COLOR_COORD_T>
6286 IndexSpaceT<DIM,COORD_T> create_index_space_union(Context ctx,
6288 Point<COLOR_DIM,COLOR_COORD_T> color,
6290 const
char *provenance = NULL);
6313 const
char *provenance = NULL);
6314 template<
int DIM, typename COORD_T,
6315 int COLOR_DIM, typename COLOR_COORD_T>
6316 IndexSpaceT<DIM,COORD_T> create_index_space_intersection(Context ctx,
6318 Point<COLOR_DIM,COLOR_COORD_T> color,
6319 const typename std::vector<
6321 const
char *provenance = NULL);
6341 const
char *provenannce=NULL);
6342 template<
int DIM, typename COORD_T,
6343 int COLOR_DIM, typename COLOR_COORD_T>
6344 IndexSpaceT<DIM,COORD_T> create_index_space_intersection(Context ctx,
6346 Point<COLOR_DIM,COLOR_COORD_T> color,
6348 const
char *provenance = NULL);
6377 const
char *provenancne = NULL);
6378 template<
int DIM, typename COORD_T,
6379 int COLOR_DIM, typename COLOR_COORD_T>
6380 IndexSpaceT<DIM,COORD_T> create_index_space_difference(Context ctx,
6382 Point<COLOR_DIM,COLOR_COORD_T> color,
6384 const typename std::vector<
6386 const
char *provenance = NULL);
6410 template<
int DIM, typename COORD_T>
6425 bool has_index_partition(Context ctx,
IndexSpace parent, Color color);
6426 bool has_index_partition(Context ctx,
IndexSpace parent,
6429 bool has_index_partition(
IndexSpace parent, Color color);
6433 template<
int DIM, typename COORD_T>
6434 bool has_index_partition(
IndexSpaceT<DIM,COORD_T> parent, Color color);
6455 template<
int DIM, typename COORD_T,
6456 int COLOR_DIM, typename COLOR_COORD_T>
6459 Point<COLOR_DIM,COLOR_COORD_T> color);
6477 template<
int DIM, typename COORD_T,
6478 int COLOR_DIM, typename COLOR_COORD_T>
6480 Point<COLOR_DIM,COLOR_COORD_T> color);
6494 LEGION_DEPRECATED("Multiple domains are no longer supported.")
6497 LEGION_DEPRECATED("Multiple domains are no longer supported.")
6498 bool has_multiple_domains(
IndexSpace handle);
6513 template<
int DIM, typename COORD_T>
6514 DomainT<DIM,COORD_T> get_index_space_domain(
6529 LEGION_DEPRECATED("Multiple domains are no longer supported.")
6531 std::vector<
Domain> &domains);
6533 LEGION_DEPRECATED("Multiple domains are no longer supported.")
6534 void get_index_space_domains(
IndexSpace handle,
6535 std::vector<
Domain> &domains);
6550 template<
int DIM, typename COORD_T,
6551 int COLOR_DIM, typename COLOR_COORD_T>
6552 DomainT<COLOR_DIM,COLOR_COORD_T>
6568 template<
int DIM, typename COORD_T,
6569 int COLOR_DIM, typename COLOR_COORD_T>
6584 void get_index_space_partition_colors(Context ctx,
IndexSpace sp,
6585 std::set<Color> &colors);
6586 void get_index_space_partition_colors(Context ctx,
IndexSpace sp,
6589 void get_index_space_partition_colors(
IndexSpace sp,
6590 std::set<Color> &colors);
6591 void get_index_space_partition_colors(
IndexSpace sp,
6631 Color get_index_space_color(
IndexSpace handle);
6634 template<
int DIM, typename COORD_T,
6635 int COLOR_DIM, typename COLOR_COORD_T>
6636 Point<COLOR_DIM,COLOR_COORD_T>
6637 get_index_space_color(
IndexSpaceT<DIM,COORD_T> handle);
6649 DomainPoint get_index_partition_color_point(Context ctx,
6667 template<
int DIM, typename COORD_T>
6681 bool has_parent_index_partition(
IndexSpace handle);
6696 template<
int DIM, typename COORD_T>
6710 unsigned get_index_space_depth(
IndexSpace handle);
6748 template<
int DIM, typename COORD_T>
6749 bool safe_cast(Context ctx,
6750 Point<DIM,COORD_T> point,
6763 FieldSpace create_field_space(Context ctx, const
char *provenance = NULL);
6776 const std::vector<
size_t> &field_sizes,
6777 std::vector<FieldID> &resulting_fields,
6778 CustomSerdezID serdez_id = 0,
6779 const
char *provenance = NULL);
6792 const std::vector<
Future> &field_sizes,
6793 std::vector<FieldID> &resulting_fields,
6794 CustomSerdezID serdez_id = 0,
6795 const
char *provenance = NULL);
6817 const
bool unordered = false,
6818 const
char *provenance = NULL);
6828 size_t get_field_size(Context ctx,
FieldSpace handle, FieldID fid);
6830 size_t get_field_size(
FieldSpace handle, FieldID fid);
6841 std::vector<FieldID> &fields);
6843 void get_field_space_fields(
FieldSpace handle,
6844 std::vector<FieldID> &fields);
6855 std::set<FieldID> &fields);
6857 void get_field_space_fields(
FieldSpace handle,
6858 std::set<FieldID> &fields);
6879 bool task_local = false,
6880 const
char *provenance = NULL);
6882 template<
int DIM, typename COORD_T>
6886 bool task_local = false,
6887 const
char *provenance = NULL);
6909 const
bool unordered = false,
6910 const
char *provenance = NULL);
6919 LEGION_DEPRECATED("Destruction of logical partitions are no-ops now."
6920 "Logical partitions are automatically destroyed when their root "
6921 "logical region or their index spartition are destroyed.")
6923 const
bool unordered = false);
6945 const std::set<FieldID> &fields);
6966 template<
int DIM, typename COORD_T>
6993 template<
int DIM, typename COORD_T>
7008 bool has_logical_partition_by_color(Context ctx,
7035 template<
int DIM, typename COORD_T>
7057 template<
int DIM, typename COORD_T>
7084 template<
int DIM, typename COORD_T,
7085 int COLOR_DIM, typename COLOR_COORD_T>
7088 Point<COLOR_DIM,COLOR_COORD_T> color);
7100 bool has_logical_subregion_by_color(Context ctx,
7107 template<
int DIM, typename COORD_T,
7108 int COLOR_DIM, typename COLOR_COORD_T>
7110 Point<COLOR_DIM,COLOR_COORD_T> color);
7132 template<
int DIM, typename COORD_T>
7148 DomainPoint get_logical_region_color_point(Context ctx,
7154 template<
int DIM, typename COORD_T,
7155 int COLOR_DIM, typename COLOR_COORD_T>
7156 Point<COLOR_DIM,COLOR_COORD_T>
7157 get_logical_region_color_point(
LogicalRegionT<DIM,COORD_T> handle);
7169 DomainPoint get_logical_partition_color_point(Context ctx,
7188 template<
int DIM, typename COORD_T>
7217 template<
int DIM, typename COORD_T>
7241 LEGION_DEPRECATED("
ArgumentMap can be constructed directly.")
7298 ReductionOpID redop,
bool ordered = true,
7325 ReductionOpID redop,
bool ordered = true,
7326 MapperID map_id = 0, MappingTagID tag = 0,
7327 const
char *provenance = NULL,
7359 bool collective = false, ShardingID sid = 0,
7360 bool implicit_sharding = false,
7361 const
char *provenance = NULL);
7362 LEGION_DEPRECATED("Use the version that takes an
IndexSpace instead")
7365 bool collective = false, ShardingID sid = 0,
7366 bool implicit_sharding = false);
7393 bool collective = false, ShardingID sid = 0,
7394 bool implicit_sharding = false,
7395 const
char *provenance = NULL);
7396 LEGION_DEPRECATED("Use the version that takes an
IndexSpace instead")
7399 bool collective = false, ShardingID sid = 0,
7400 bool implicit_sharding = false);
7424 PointTransformFnptr fnptr,
7425 const
char *provenance = NULL);
7446 bool take_ownership = false,
7447 const
char *provenance = NULL);
7464 LEGION_DEPRECATED("Launching tasks should be done with the new task "
7465 "launcher interface.")
7466 Future execute_task(Context ctx, TaskID task_id,
7473 MappingTagID tag = 0);
7493 LEGION_DEPRECATED("Launching tasks should be done with the new task "
7494 "launcher interface.")
7503 bool must_paralleism = false,
7505 MappingTagID tag = 0);
7528 LEGION_DEPRECATED("Launching tasks should be done with the new task "
7529 "launcher interface.")
7530 Future execute_index_space(Context ctx, TaskID task_id,
7537 ReductionOpID reduction,
7540 bool must_parallelism = false,
7542 MappingTagID tag = 0);
7572 MapperID
id = 0, MappingTagID tag = 0,
7573 const
char *provenance = NULL);
7587 MapperID
id = 0, MappingTagID tag = 0,
7588 const
char *provenance = NULL);
7600 const
char *provenance = NULL);
7618 void unmap_all_regions(Context ctx);
7654 template<typename T>
7656 FieldID fid, const T &value,
7673 FieldID fid, const
void *value,
size_t value_size,
7702 template<typename T>
7704 const std::set<FieldID> &fields, const T &value,
7720 const std::set<FieldID> &fields,
7721 const
void *value,
size_t value_size,
7735 const std::set<FieldID> &fields,
7786 const
bool flush = true,
7787 const
bool unordered = false,
7788 const
char *provenance = NULL);
7823 const
bool flush = true,
7824 const
bool unordered = false,
7825 const
char *provenance = NULL);
7833 void progress_unordered_operations(Context ctx);
7865 LEGION_DEPRECATED("Attaching specific HDF5 file type is deprecated "
7866 "in favor of generic attach launcher interface.")
7869 const std::map<FieldID,const
char*> &field_map,
7870 LegionFileMode mode);
7888 LEGION_DEPRECATED("Detaching specific HDF5 file type is deprecated "
7889 "in favor of generic detach interface.")
7898 LEGION_DEPRECATED("Attaching generic file type is deprecated "
7899 "in favor of generic attach launcher interface.")
7902 const std::vector<FieldID> &field_vec,
7903 LegionFileMode mode);
7910 LEGION_DEPRECATED("Detaching generic file type is deprecated "
7911 "in favor of generic detach interface.")
7948 const
char *provenance = NULL);
7960 const
char *provenance = NULL);
7974 const
char *provenance = NULL);
7988 const
char *provenance = NULL);
8007 const
char *provenance = NULL);
8029 void destroy_lock(Context ctx,
Lock l);
8055 void release_grant(Context ctx,
Grant grant);
8119 ReductionOpID redop,
8120 const
void *init_value,
8140 void arrive_dynamic_collective(Context ctx,
8143 size_t size,
unsigned count = 1);
8154 void defer_dynamic_collective_arrival(Context ctx,
8157 unsigned count = 1);
8170 const
char *provenance = NULL);
8213 Future issue_mapping_fence(Context ctx, const
char *provenance = NULL);
8224 Future issue_execution_fence(Context ctx, const
char *provenance = NULL);
8258 void begin_trace(Context ctx, TraceID tid,
bool logical_only = false,
8259 bool static_trace = false, const std::set<RegionTreeID> *managed = NULL,
8260 const
char *provenance = NULL);
8264 void end_trace(Context ctx, TraceID tid, const
char *provenance = NULL);
8279 LEGION_DEPRECATED("Use begin_trace with static_trace=true")
8280 void begin_static_trace(Context ctx,
8281 const std::set<RegionTreeID> *managed = NULL);
8286 LEGION_DEPRECATED("Use end_trace")
8287 void end_static_trace(Context ctx);
8293 TraceID generate_dynamic_trace_id(
void);
8305 TraceID generate_library_trace_ids(const
char *name,
size_t count);
8314 static TraceID generate_static_trace_id(
void);
8332 void complete_frame(Context ctx, const
char *provenance = NULL);
8364 Future select_tunable_value(Context ctx, TunableID tid,
8365 MapperID mapper = 0, MappingTagID tag = 0,
8366 const
void *args = NULL,
size_t argsize = 0);
8375 LEGION_DEPRECATED("Tunable values should now be obtained via the "
8376 "generic interface that returns a future result.")
8377 int get_tunable_value(Context ctx, TunableID tid,
8378 MapperID mapper = 0, MappingTagID tag = 0);
8388 const
Task* get_local_task(Context ctx);
8397 void* get_local_task_variable_untyped(Context ctx, LocalVariableID
id);
8398 template<typename T>
8399 T* get_local_task_variable(Context ctx, LocalVariableID
id);
8411 void set_local_task_variable_untyped(Context ctx, LocalVariableID
id,
8412 const
void *value,
void (*destructor)(
void*) = NULL);
8413 template<typename T>
8414 void set_local_task_variable(Context ctx, LocalVariableID
id,
8415 const T* value,
void (*destructor)(
void*) = NULL);
8438 Future get_current_time_in_microseconds(Context ctx,
8449 Future get_current_time_in_nanoseconds(Context ctx,
8467 static
long long get_zero_time(
void);
8486 Mapping::Mapper* get_mapper(Context ctx, MapperID
id,
8487 Processor target = Processor::NO_PROC);
8502 Mapping::MapperContext begin_mapper_call(Context ctx, MapperID
id,
8503 Processor target = Processor::NO_PROC);
8510 void end_mapper_call(Mapping::MapperContext ctx);
8518 Processor get_executing_processor(Context ctx);
8526 const
Task* get_current_task(Context ctx);
8542 size_t query_available_memory(Context ctx, Memory target);
8553 void release_memory_pool(Context ctx, Memory target);
8584 void yield(Context ctx);
8623 void concurrent_task_barrier(Context ctx);
8636 void start_profiling_range(Context ctx);
8637 void stop_profiling_range(Context ctx, const
char *provenance);
8645 bool is_MPI_interop_configured(
void);
8654 const std::map<
int,AddressSpace>& find_forward_MPI_mapping(
void);
8663 const std::map<AddressSpace,
int>& find_reverse_MPI_mapping(
void);
8668 int find_local_MPI_rank(
void);
8682 void attach_semantic_information(TaskID task_id, SemanticTag tag,
8683 const
void *buffer,
size_t size,
8684 bool is_mutable = false,
bool local_only = false);
8694 void attach_semantic_information(
IndexSpace handle, SemanticTag tag,
8695 const
void *buffer,
size_t size,
bool is_mutable = false);
8706 const
void *buffer,
size_t size,
bool is_mutable = false);
8716 void attach_semantic_information(
FieldSpace handle, SemanticTag tag,
8717 const
void *buffer,
size_t size,
bool is_mutable = false);
8729 SemanticTag tag, const
void *buffer,
8730 size_t size,
bool is_mutable = false);
8741 const
void *buffer,
size_t size,
bool is_mutable = false);
8752 SemanticTag tag, const
void *buffer,
8753 size_t size,
bool is_mutable = false);
8762 void attach_name(TaskID task_id, const
char *name,
8763 bool is_mutable = false,
8764 bool local_only = false);
8773 bool is_mutable = false);
8782 bool is_mutable = false);
8791 bool is_mutable = false);
8801 const
char *name,
bool is_mutable = false);
8810 bool is_mutable = false);
8819 bool is_mutable = false);
8831 bool retrieve_semantic_information(TaskID task_id, SemanticTag tag,
8832 const
void *&result,
size_t &size,
8833 bool can_fail = false,
8834 bool wait_until_ready = false);
8846 bool retrieve_semantic_information(
IndexSpace handle, SemanticTag tag,
8847 const
void *&result,
size_t &size,
8848 bool can_fail = false,
8849 bool wait_until_ready = false);
8862 const
void *&result,
size_t &size,
8863 bool can_fail = false,
8864 bool wait_until_ready = false);
8876 bool retrieve_semantic_information(
FieldSpace handle, SemanticTag tag,
8877 const
void *&result,
size_t &size,
8878 bool can_fail = false,
8879 bool wait_until_ready = false);
8892 bool retrieve_semantic_information(
FieldSpace handle, FieldID fid,
8894 const
void *&result,
size_t &size,
8895 bool can_fail = false,
8896 bool wait_until_ready = false);
8909 const
void *&result,
size_t &size,
8910 bool can_fail = false,
8911 bool wait_until_ready = false);
8925 const
void *&result,
size_t &size,
8926 bool can_fail = false,
8927 bool wait_until_ready = false);
8934 void retrieve_name(TaskID task_id, const
char *&result);
8963 void retrieve_name(
FieldSpace handle, FieldID fid, const
char *&result);
8992 void print_once(Context ctx, FILE *f, const
char *message);
9000 void log_once(Context ctx, Realm::LoggerMessage &message);
9013 Mapping::MapperRuntime* get_mapper_runtime(
void);
9019 MapperID generate_dynamic_mapper_id(
void);
9031 MapperID generate_library_mapper_ids(const
char *name,
size_t count);
9040 static MapperID generate_static_mapper_id(
void);
9053 void add_mapper(MapperID map_id, Mapping::Mapper *mapper,
9054 Processor proc = Processor::NO_PROC);
9067 void replace_default_mapper(Mapping::Mapper *mapper,
9068 Processor proc = Processor::NO_PROC);
9075 ProjectionID generate_dynamic_projection_id(
void);
9087 ProjectionID generate_library_projection_ids(const
char *name,
9097 static ProjectionID generate_static_projection_id(
void);
9112 void register_projection_functor(ProjectionID pid,
9114 bool silence_warnings = false,
9115 const
char *warning_string = NULL);
9126 static
void preregister_projection_functor(ProjectionID pid,
9141 ShardingID generate_dynamic_sharding_id(
void);
9153 ShardingID generate_library_sharding_ids(const
char *name,
size_t count);
9162 static ShardingID generate_static_sharding_id(
void);
9176 void register_sharding_functor(ShardingID sid,
9178 bool silence_warnings = false,
9179 const
char *warning_string = NULL);
9191 static
void preregister_sharding_functor(ShardingID sid,
9206 ConcurrentID generate_dynamic_concurrent_id(
void);
9218 ConcurrentID generate_library_concurrent_ids(const
char *name,
9228 static ConcurrentID generate_static_concurrent_id(
void);
9243 void register_concurrent_coloring_functor(ConcurrentID cid,
9245 bool silence_warnings = false,
9246 const
char *warning_string = NULL);
9257 static
void preregister_concurrent_coloring_functor(ConcurrentID cid,
9273 ReductionOpID generate_dynamic_reduction_id(
void);
9285 ReductionOpID generate_library_reduction_ids(const
char *name,
9295 static ReductionOpID generate_static_reduction_id(
void);
9311 template<typename REDOP>
9312 static
void register_reduction_op(ReductionOpID redop_id,
9313 bool permit_duplicates = false);
9335 static
void register_reduction_op(ReductionOpID redop_id,
9337 SerdezInitFnptr init_fnptr = NULL,
9338 SerdezFoldFnptr fold_fnptr = NULL,
9339 bool permit_duplicates = false);
9346 static const ReductionOp* get_reduction_op(ReductionOpID redop_id);
9348#ifdef LEGION_GPU_REDUCTIONS
9349 template<
typename REDOP>
9350 LEGION_DEPRECATED(
"Use register_reduction_op instead")
9351 static
void preregister_gpu_reduction_op(ReductionOpID redop_id);
9395 template<
typename SERDEZ>
9397 bool permit_duplicates =
false);
9412 SerdezOp *serdez_op,
9413 bool permit_duplicates =
false);
9641 static int start(
int argc,
char **argv,
bool background =
false,
9642 bool supply_default_mapper =
true,
bool filter =
false);
9660 bool filter =
false,
bool parse =
true);
9723 Processor::Kind proc_kind,
9724 const char *task_name = NULL,
9725 bool control_replicable =
false,
9726 unsigned shard_per_address_space = 1,
9758 Realm::Event effects = Realm::Event::NO_EVENT);
9792 int ext_participants = 1,
9793 int legion_participants = 1);
9807 int mpi_participants = 1,
9808 int legion_participants = 1);
9822 LEGION_DEPRECATED(
"Projection functions should now be specified "
9823 "using projection functor objects")
9837 LEGION_DEPRECATED(
"Projection functions should now be specified "
9838 "using projection functor objects")
9858 bool dedup =
true,
size_t dedup_tag = 0);
9859 static void add_registration_callback(
9860 RegistrationWithArgsCallbackFnptr callback,
const UntypedBuffer &buffer,
9861 bool dedup =
true,
size_t dedup_tag = 0);
9888 RegistrationCallbackFnptr callback,
bool global,
9889 bool deduplicate =
true,
size_t dedup_tag = 0);
9890 static void perform_registration_callback(
9891 RegistrationWithArgsCallbackFnptr callback,
9893 bool deduplicate =
true ,
size_t dedup_tag = 0);
9906 LEGION_DEPRECATED(
"Legion now supports multiple registration callbacks "
9907 "added via the add_registration_callback method.")
9908 static
void set_registration_callback(RegistrationCallbackFnptr callback);
9920 static
void enable_profiling(
void);
9924 static
void disable_profiling(
void);
9928 static
void dump_profiling(
void);
9941 LayoutConstraintID register_layout(
9949 void release_layout(LayoutConstraintID layout_id);
9962 static LayoutConstraintID preregister_layout(
9964 LayoutConstraintID layout_id =
9965 LEGION_AUTO_GENERATE_ID);
9973 LayoutConstraintID layout_id);
9980 void get_layout_constraints(LayoutConstraintID layout_id,
9981 LayoutConstraintSet &layout_constraints);
9988 const
char* get_layout_constraints_name(LayoutConstraintID layout_id);
9998 TaskID generate_dynamic_task_id(
void);
10010 TaskID generate_library_task_ids(const
char *name,
size_t count);
10019 static TaskID generate_static_task_id(
void);
10028 template<typename T,
10032 VariantID vid = LEGION_AUTO_GENERATE_ID);
10042 template<typename T, typename UDT,
10044 Context,
Runtime*, const UDT&)>
10046 const UDT &user_data,
10047 VariantID vid = LEGION_AUTO_GENERATE_ID);
10060 VariantID vid = LEGION_AUTO_GENERATE_ID);
10070 template<typename UDT,
10072 Context,
Runtime*, const UDT&)>
10074 const UDT &user_data,
10075 VariantID vid = LEGION_AUTO_GENERATE_ID);
10097 const CodeDescriptor &codedesc,
10098 const
void *user_data = NULL,
10099 size_t user_len = 0,
10100 size_t return_type_size =
10101 LEGION_MAX_RETURN_SIZE,
10102 VariantID vid = LEGION_AUTO_GENERATE_ID,
10103 bool has_return_type_size = true);
10115 template<typename T,
10118 static VariantID preregister_task_variant(
10120 const
char *task_name = NULL,
10121 VariantID vid = LEGION_AUTO_GENERATE_ID);
10134 template<typename T, typename UDT,
10136 Context,
Runtime*, const UDT&)>
10137 static VariantID preregister_task_variant(
10139 const UDT &user_data,
10140 const
char *task_name = NULL,
10141 VariantID vid = LEGION_AUTO_GENERATE_ID);
10156 static VariantID preregister_task_variant(
10158 const
char *task_name = NULL,
10159 VariantID vid = LEGION_AUTO_GENERATE_ID);
10172 template<typename UDT,
10174 Context,
Runtime*, const UDT&)>
10175 static VariantID preregister_task_variant(
10177 const
char *task_name = NULL,
10178 VariantID vid = LEGION_AUTO_GENERATE_ID);
10201 static VariantID preregister_task_variant(
10203 const CodeDescriptor &codedesc,
10204 const
void *user_data = NULL,
10205 size_t user_len = 0,
10206 const
char *task_name = NULL,
10207 VariantID vid = LEGION_AUTO_GENERATE_ID,
10208 size_t return_type_size = LEGION_MAX_RETURN_SIZE,
10209 bool has_return_type_size = true,
10210 bool check_task_id = true);
10226 Processor p, const
Task *& task,
10228 Context& ctx,
Runtime *& runtime);
10248 const
void *retvalptr = NULL,
10249 size_t retvalsize = 0,
10250 bool owned = false,
10251 Realm::RegionInstance inst =
10252 Realm::RegionInstance::NO_INST,
10253 const
void *metadataptr = NULL,
10254 size_t metadatasize = 0);
10275 const
void *retvalptr,
size_t retvalsize,
bool owned,
10276 const Realm::ExternalInstanceResource &allocation,
10277 void (*freefunc)(const Realm::ExternalInstanceResource&) = NULL,
10278 const
void *metadataptr = NULL,
size_t metadatasize = 0);
10291 bool owned = false);
10308 const
Domain &domain,
bool take_ownership,
10309 const
void *metadataptr = NULL,
size_t metadatasize = 0);
10325 template<typename T,
10328 LEGION_DEPRECATED("
Task registration should be done with "
10330 static TaskID register_legion_task(TaskID
id, Processor::Kind proc_kind,
10331 bool single,
bool index,
10332 VariantID vid =LEGION_AUTO_GENERATE_ID,
10334 const
char *task_name = NULL);
10351 LEGION_DEPRECATED("
Task registration should be done with "
10353 static TaskID register_legion_task(TaskID
id, Processor::Kind proc_kind,
10354 bool single,
bool index,
10355 VariantID vid =LEGION_AUTO_GENERATE_ID,
10357 const
char *task_name = NULL);
10373 template<typename T, typename UDT,
10375 Context,
Runtime*, const UDT&)>
10376 LEGION_DEPRECATED("
Task registration should be done with "
10378 static TaskID register_legion_task(TaskID
id, Processor::Kind proc_kind,
10379 bool single,
bool index,
10380 const UDT &user_data,
10381 VariantID vid =LEGION_AUTO_GENERATE_ID,
10383 const
char *task_name = NULL);
10399 template<typename UDT,
10401 Context,
Runtime*, const UDT&)>
10402 LEGION_DEPRECATED("
Task registration should be done with "
10404 static TaskID register_legion_task(TaskID
id, Processor::Kind proc_kind,
10405 bool single,
bool index,
10406 const UDT &user_data,
10407 VariantID vid =LEGION_AUTO_GENERATE_ID,
10409 const
char *task_name = NULL);
10417 static
bool has_runtime(
void);
10426 static
Runtime* get_runtime(Processor p = Processor::NO_PROC);
10434 static
bool has_context(
void);
10442 static Context get_context(
void);
10449 static const
Task* get_context_task(Context ctx);
10454 const
void *transform,
10455 size_t transform_size,
10456 const
void *extent,
10457 size_t extent_size,
10458 PartitionKind part_kind, Color color,
10459 const
char *provenance);
10460 IndexSpace create_index_space_union_internal(Context ctx,
10462 const
void *realm_color,
size_t color_size,
10463 TypeTag type_tag, const
char *provenance,
10465 IndexSpace create_index_space_union_internal(Context ctx,
10467 const
void *realm_color,
size_t color_size,
10468 TypeTag type_tag, const
char *provenance,
10470 IndexSpace create_index_space_intersection_internal(Context ctx,
10472 const
void *realm_color,
size_t color_size,
10473 TypeTag type_tag, const
char *provenance,
10475 IndexSpace create_index_space_intersection_internal(Context ctx,
10477 const
void *realm_color,
size_t color_size,
10478 TypeTag type_tag, const
char *provenance,
10480 IndexSpace create_index_space_difference_internal(Context ctx,
10482 const
void *realm_color,
size_t color_size,
10483 TypeTag type_tag, const
char *provenance,
10487 const
void *realm_color,TypeTag type_tag);
10489 const
void *realm_color,TypeTag type_tag);
10490 void get_index_partition_color_space_internal(
IndexPartition handle,
10491 void *realm_is, TypeTag type_tag);
10492 void get_index_space_domain_internal(
IndexSpace handle,
10493 void *realm_is, TypeTag type_tag);
10494 void get_index_space_color_internal(
IndexSpace handle,
10495 void *realm_color, TypeTag type_tag);
10497 const
void *realm_point,TypeTag type_tag);
10500 const
void *realm_color,TypeTag type_tag);
10501 bool has_logical_subregion_by_color_internal(
10503 const
void *realm_color,TypeTag type_tag);
10506 friend class LegionTaskWrapper;
10507 friend class LegionSerialization;
10513 ShardID get_shard_id(Context ctx,
bool I_know_what_I_am_doing = false);
10516 size_t get_num_shards(Context ctx,
bool I_know_what_I_am_doing = false);
10535 Future consensus_match(Context ctx, const
void *input,
void *output,
10536 size_t num_elements,
size_t element_size, const
char *provenance = NULL);
10538 friend class Mapper;