5081 friend class Internal::Runtime;
5083 Runtime(Internal::Runtime *rt);
5101 TypeTag type_tag = 0,
5102 const char *provenance = NULL);
5104 template<
int DIM,
typename COORD_T>
5105 IndexSpaceT<DIM,COORD_T> create_index_space(Context ctx,
5106 const Rect<DIM,COORD_T> &bounds,
5107 const char *provenance = NULL);
5108 template<
int DIM,
typename COORD_T>
5109 IndexSpaceT<DIM,COORD_T> create_index_space(Context ctx,
5110 const DomainT<DIM,COORD_T> &bounds,
5111 const char *provenance = NULL);
5128 const Future &f, TypeTag type_tag = 0,
5129 const char *provenance = NULL);
5130 template<
int DIM,
typename COORD_T>
5131 IndexSpaceT<DIM,COORD_T> create_index_space(Context ctx,
const Future &f,
5132 const char *provenance = NULL);
5144 const std::vector<DomainPoint> &points,
5145 const char *provenance = NULL);
5147 template<
int DIM,
typename COORD_T>
5148 IndexSpaceT<DIM,COORD_T> create_index_space(Context ctx,
5149 const std::vector<Point<DIM,COORD_T> > &points,
5150 const char *provenance = NULL);
5162 const std::vector<Domain> &rects,
5163 const char *provenance = NULL);
5165 template<
int DIM,
typename COORD_T>
5166 IndexSpaceT<DIM,COORD_T> create_index_space(Context ctx,
5167 const std::vector<Rect<DIM,COORD_T> > &rects,
5168 const char *provenance = NULL);
5181 const std::vector<IndexSpace> &spaces,
5182 const char *provenance = NULL);
5184 template<
int DIM,
typename COORD_T>
5185 IndexSpaceT<DIM,COORD_T> union_index_spaces(Context ctx,
5186 const std::vector<IndexSpaceT<DIM,COORD_T> > &spaces,
5187 const char *provenance = NULL);
5200 const std::vector<IndexSpace> &spaces,
5201 const char *provenance = NULL);
5203 template<
int DIM,
typename COORD_T>
5204 IndexSpaceT<DIM,COORD_T> intersect_index_spaces(Context ctx,
5205 const std::vector<IndexSpaceT<DIM,COORD_T> > &spaces,
5206 const char *provenance = NULL);
5217 const char *provenance = NULL);
5219 template<
int DIM,
typename COORD_T>
5220 IndexSpaceT<DIM,COORD_T> subtract_index_spaces(Context ctx,
5221 IndexSpaceT<DIM,COORD_T> left, IndexSpaceT<DIM,COORD_T> right,
5222 const char *provenance = NULL);
5231 LEGION_DEPRECATED(
"Use the new index space creation routines with a "
5232 "single domain or rectangle.")
5233 IndexSpace create_index_space(Context ctx,
size_t max_num_elmts);
5241 LEGION_DEPRECATED("Use the new index space creation routines with a "
5242 "single domain or rectangle.")
5244 const std::set<
Domain> &domains);
5267 const
bool unordered = false,
5268 const
bool recurse = true,
5269 const
char *provenance = NULL);
5293 const
bool unordered = false,
5294 const
bool recurse = true,
5295 const
char *provenance = NULL);
5323 size_t granularity = 1,
5325 LEGION_AUTO_GENERATE_ID,
5326 const
char *provenance = NULL);
5327 template<
int DIM, typename COORD_T,
5328 int COLOR_DIM, typename COLOR_COORD_T>
5332 size_t granularity = 1,
5333 Color color = LEGION_AUTO_GENERATE_ID,
5334 const
char *provenance = NULL);
5357 size_t granularity = 1,
5358 Color color = LEGION_AUTO_GENERATE_ID,
5359 const
char *provenance = NULL);
5360 template<
int DIM, typename COORD_T,
int COLOR_DIM, typename COLOR_COORD_T>
5363 const std::map<Point<COLOR_DIM,COLOR_COORD_T>,
int> &weights,
5365 size_t granularity = 1,
5366 Color color = LEGION_AUTO_GENERATE_ID,
5367 const
char *provenance = NULL);
5372 size_t granularity = 1,
5373 Color color = LEGION_AUTO_GENERATE_ID,
5374 const
char *provenance = NULL);
5375 template<
int DIM, typename COORD_T,
int COLOR_DIM, typename COLOR_COORD_T>
5378 const std::map<Point<COLOR_DIM,COLOR_COORD_T>,
size_t> &weights,
5380 size_t granularity = 1, Color color = LEGION_AUTO_GENERATE_ID,
5381 const
char *provenance = NULL);
5388 size_t granularity = 1,
5390 LEGION_AUTO_GENERATE_ID,
5391 const
char *provenance = NULL);
5392 template<
int DIM, typename COORD_T,
int COLOR_DIM, typename COLOR_COORD_T>
5397 size_t granularity = 1,
5398 Color color = LEGION_AUTO_GENERATE_ID,
5399 const
char *provenance = NULL);
5431 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5432 Color color = LEGION_AUTO_GENERATE_ID,
5433 const
char *provenance = NULL);
5434 template<
int DIM, typename COORD_T,
5435 int COLOR_DIM, typename COLOR_COORD_T>
5441 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5442 Color color = LEGION_AUTO_GENERATE_ID,
5443 const
char *provenance = NULL);
5476 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5477 Color color = LEGION_AUTO_GENERATE_ID,
5478 const
char *provenance = NULL);
5479 template<
int DIM, typename COORD_T,
5480 int COLOR_DIM, typename COLOR_COORD_T>
5487 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5488 Color color = LEGION_AUTO_GENERATE_ID,
5489 const
char *provenance = NULL);
5515 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5516 Color color = LEGION_AUTO_GENERATE_ID,
5517 bool dominates = false,
5518 const
char *provenance = NULL);
5519 template<
int DIM, typename COORD_T>
5520 IndexPartitionT<DIM,COORD_T> create_partition_by_intersection(Context ctx,
5523 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5524 Color color = LEGION_AUTO_GENERATE_ID,
5525 bool dominates = false,
5526 const
char *provenance = NULL);
5559 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5560 Color color = LEGION_AUTO_GENERATE_ID,
5561 const
char *provenance = NULL);
5562 template<
int DIM, typename COORD_T,
5563 int COLOR_DIM, typename COLOR_COORD_T>
5564 IndexPartitionT<DIM,COORD_T> create_partition_by_difference(Context ctx,
5569 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5570 Color color = LEGION_AUTO_GENERATE_ID,
5571 const
char *provenance = NULL);
5599 Color create_cross_product_partitions(Context ctx,
5603 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5604 Color color = LEGION_AUTO_GENERATE_ID,
5605 const
char *provenance = NULL);
5606 template<
int DIM, typename COORD_T,
5607 int COLOR_DIM, typename COLOR_COORD_T>
5608 Color create_cross_product_partitions(Context ctx,
5614 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5615 Color color = LEGION_AUTO_GENERATE_ID,
5616 const
char *provenance = NULL);
5643 void create_association(Context ctx,
5649 MappingTagID tag = 0,
5651 const
char *provenance = NULL);
5652 void create_bidirectional_association(Context ctx,
5660 MappingTagID tag = 0,
5663 const
char *provenance = NULL);
5665 template<
int DIM1, typename COORD_T1,
int DIM2, typename COORD_T2>
5666 void create_association(Context ctx,
5672 MappingTagID tag = 0,
5674 const
char *provenance = NULL);
5675 template<
int DIM1, typename COORD_T1,
int DIM2, typename COORD_T2>
5676 void create_bidirectional_association(Context ctx,
5684 MappingTagID tag = 0,
5686 const
char *provenance = NULL);
5719 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5720 Color color = LEGION_AUTO_GENERATE_ID,
5721 const
char *provenance = NULL);
5723 template<
int DIM,
int COLOR_DIM, typename COORD_T>
5724 IndexPartitionT<DIM,COORD_T> create_partition_by_restriction(Context ctx,
5727 Transform<DIM,COLOR_DIM,COORD_T> transform,
5728 Rect<DIM,COORD_T> extent,
5729 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5730 Color color = LEGION_AUTO_GENERATE_ID,
5731 const
char *provenance = NULL);
5752 Color color = LEGION_AUTO_GENERATE_ID,
5753 const
char *provenance = NULL);
5755 template<
int DIM, typename COORD_T>
5756 IndexPartitionT<DIM,COORD_T> create_partition_by_blockify(Context ctx,
5758 Point<DIM,COORD_T> blocking_factor,
5759 Color color = LEGION_AUTO_GENERATE_ID,
5760 const
char *provenance = NULL);
5777 Color color = LEGION_AUTO_GENERATE_ID,
5778 const
char *provenance = NULL);
5780 template<
int DIM, typename COORD_T>
5781 IndexPartitionT<DIM,COORD_T> create_partition_by_blockify(Context ctx,
5783 Point<DIM,COORD_T> blocking_factor,
5784 Point<DIM,COORD_T> origin,
5785 Color color = LEGION_AUTO_GENERATE_ID,
5786 const
char *provenance = NULL);
5813 bool perform_intersections = true,
5814 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5815 Color color = LEGION_AUTO_GENERATE_ID,
5816 const
char *provenance = NULL);
5817 template<
int DIM, typename COORD_T,
int COLOR_DIM, typename COLOR_COORD_T>
5821 Point<COLOR_DIM,COLOR_COORD_T>,
5822 DomainT<DIM,COORD_T> > &domains,
5824 COLOR_COORD_T> color_space,
5825 bool perform_intersections = true,
5826 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5827 Color color = LEGION_AUTO_GENERATE_ID,
5828 const
char *provenance = NULL);
5850 bool perform_intersections = true,
5851 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5852 Color color = LEGION_AUTO_GENERATE_ID,
5853 const
char *provenance = NULL);
5854 template<
int DIM, typename COORD_T,
int COLOR_DIM, typename COLOR_COORD_T>
5859 COLOR_COORD_T> color_space,
5860 bool perform_intersections = true,
5861 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5862 Color color = LEGION_AUTO_GENERATE_ID,
5863 const
char *provenance = NULL);
5883 template<
int DIM, typename COORD_T,
int COLOR_DIM, typename COLOR_COORD_T>
5886 const std::map<Point<COLOR_DIM,COLOR_COORD_T>,
5887 std::vector<Rect<DIM,COORD_T> > > &rectangles,
5889 COLOR_COORD_T> color_space,
5890 bool perform_intersections = true,
5891 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5892 Color color = LEGION_AUTO_GENERATE_ID,
5893 const
char *provenance = NULL,
5894 bool collective = false);
5931 LEGION_AUTO_GENERATE_ID,
5933 MappingTagID tag = 0,
5934 PartitionKind part_kind =
5935 LEGION_DISJOINT_KIND,
5938 const
char *provenance = NULL);
5939 template<
int DIM, typename COORD_T,
5940 int COLOR_DIM, typename COLOR_COORD_T>
5946 Color color = LEGION_AUTO_GENERATE_ID,
5947 MapperID
id = 0, MappingTagID tag = 0,
5948 PartitionKind part_kind = LEGION_DISJOINT_KIND,
5950 const
char *provenance = NULL);
5992 PartitionKind part_kind = LEGION_COMPUTE_KIND,
5993 Color color = LEGION_AUTO_GENERATE_ID,
5994 MapperID
id = 0, MappingTagID tag = 0,
5996 const
char *provenance = NULL);
5997 template<
int DIM1, typename COORD_T1,
5998 int DIM2, typename COORD_T2,
5999 int COLOR_DIM, typename COLOR_COORD_T>
6006 PartitionKind part_kind = LEGION_COMPUTE_KIND,
6007 Color color = LEGION_AUTO_GENERATE_ID,
6008 MapperID
id = 0, MappingTagID tag = 0,
6010 const
char *provenance = NULL);
6018 PartitionKind part_kind = LEGION_COMPUTE_KIND,
6019 Color color = LEGION_AUTO_GENERATE_ID,
6020 MapperID
id = 0, MappingTagID tag = 0,
6022 const
char *provenance = NULL);
6023 template<
int DIM1, typename COORD_T1,
6024 int DIM2, typename COORD_T2,
6025 int COLOR_DIM, typename COLOR_COORD_T>
6033 PartitionKind part_kind = LEGION_COMPUTE_KIND,
6034 Color color = LEGION_AUTO_GENERATE_ID,
6035 MapperID
id = 0, MappingTagID tag = 0,
6037 const
char *provenance = NULL);
6076 PartitionKind part_kind = LEGION_COMPUTE_KIND,
6077 Color color = LEGION_AUTO_GENERATE_ID,
6078 MapperID
id = 0, MappingTagID tag = 0,
6080 const
char *provenance = NULL);
6081 template<
int DIM1, typename COORD_T1,
6082 int DIM2, typename COORD_T2,
6083 int COLOR_DIM, typename COLOR_COORD_T>
6084 IndexPartitionT<DIM1,COORD_T1> create_partition_by_preimage(Context ctx,
6090 PartitionKind part_kind = LEGION_COMPUTE_KIND,
6091 Color color = LEGION_AUTO_GENERATE_ID,
6092 MapperID
id = 0, MappingTagID tag = 0,
6094 const
char *provenance = NULL);
6102 PartitionKind part_kind = LEGION_COMPUTE_KIND,
6103 Color color = LEGION_AUTO_GENERATE_ID,
6104 MapperID
id = 0, MappingTagID tag = 0,
6106 const
char *provenance = NULL);
6107 template<
int DIM1, typename COORD_T1,
6108 int DIM2, typename COORD_T2,
6109 int COLOR_DIM, typename COLOR_COORD_T>
6117 PartitionKind part_kind = LEGION_COMPUTE_KIND,
6118 Color color = LEGION_AUTO_GENERATE_ID,
6119 MapperID
id = 0, MappingTagID tag = 0,
6121 const
char *provenance = NULL);
6157 PartitionKind part_kind = LEGION_COMPUTE_KIND,
6158 Color color = LEGION_AUTO_GENERATE_ID,
6159 const
char *provenance = NULL);
6160 template<
int DIM, typename COORD_T,
6161 int COLOR_DIM, typename COLOR_COORD_T>
6165 PartitionKind part_kind = LEGION_COMPUTE_KIND,
6166 Color color = LEGION_AUTO_GENERATE_ID,
6167 const
char *provenance = NULL);
6189 const
char *provenance = NULL);
6190 template<
int DIM, typename COORD_T,
6191 int COLOR_DIM, typename COLOR_COORD_T>
6192 IndexSpaceT<DIM,COORD_T> create_index_space_union(Context ctx,
6194 Point<COLOR_DIM,COLOR_COORD_T> color,
6195 const typename std::vector<
6197 const
char *provenance = NULL);
6216 const
char *provenance = NULL);
6217 template<
int DIM, typename COORD_T,
6218 int COLOR_DIM, typename COLOR_COORD_T>
6219 IndexSpaceT<DIM,COORD_T> create_index_space_union(Context ctx,
6221 Point<COLOR_DIM,COLOR_COORD_T> color,
6223 const
char *provenance = NULL);
6246 const
char *provenance = NULL);
6247 template<
int DIM, typename COORD_T,
6248 int COLOR_DIM, typename COLOR_COORD_T>
6249 IndexSpaceT<DIM,COORD_T> create_index_space_intersection(Context ctx,
6251 Point<COLOR_DIM,COLOR_COORD_T> color,
6252 const typename std::vector<
6254 const
char *provenance = NULL);
6274 const
char *provenannce=NULL);
6275 template<
int DIM, typename COORD_T,
6276 int COLOR_DIM, typename COLOR_COORD_T>
6277 IndexSpaceT<DIM,COORD_T> create_index_space_intersection(Context ctx,
6279 Point<COLOR_DIM,COLOR_COORD_T> color,
6281 const
char *provenance = NULL);
6310 const
char *provenancne = NULL);
6311 template<
int DIM, typename COORD_T,
6312 int COLOR_DIM, typename COLOR_COORD_T>
6313 IndexSpaceT<DIM,COORD_T> create_index_space_difference(Context ctx,
6315 Point<COLOR_DIM,COLOR_COORD_T> color,
6317 const typename std::vector<
6319 const
char *provenance = NULL);
6343 template<
int DIM, typename COORD_T>
6358 bool has_index_partition(Context ctx,
IndexSpace parent, Color color);
6359 bool has_index_partition(Context ctx,
IndexSpace parent,
6362 bool has_index_partition(
IndexSpace parent, Color color);
6366 template<
int DIM, typename COORD_T>
6367 bool has_index_partition(
IndexSpaceT<DIM,COORD_T> parent, Color color);
6388 template<
int DIM, typename COORD_T,
6389 int COLOR_DIM, typename COLOR_COORD_T>
6392 Point<COLOR_DIM,COLOR_COORD_T> color);
6410 template<
int DIM, typename COORD_T,
6411 int COLOR_DIM, typename COLOR_COORD_T>
6413 Point<COLOR_DIM,COLOR_COORD_T> color);
6427 LEGION_DEPRECATED("Multiple domains are no longer supported.")
6430 LEGION_DEPRECATED("Multiple domains are no longer supported.")
6431 bool has_multiple_domains(
IndexSpace handle);
6446 template<
int DIM, typename COORD_T>
6447 DomainT<DIM,COORD_T> get_index_space_domain(
6462 LEGION_DEPRECATED("Multiple domains are no longer supported.")
6464 std::vector<
Domain> &domains);
6466 LEGION_DEPRECATED("Multiple domains are no longer supported.")
6467 void get_index_space_domains(
IndexSpace handle,
6468 std::vector<
Domain> &domains);
6483 template<
int DIM, typename COORD_T,
6484 int COLOR_DIM, typename COLOR_COORD_T>
6485 DomainT<COLOR_DIM,COLOR_COORD_T>
6501 template<
int DIM, typename COORD_T,
6502 int COLOR_DIM, typename COLOR_COORD_T>
6517 void get_index_space_partition_colors(Context ctx,
IndexSpace sp,
6518 std::set<Color> &colors);
6519 void get_index_space_partition_colors(Context ctx,
IndexSpace sp,
6522 void get_index_space_partition_colors(
IndexSpace sp,
6523 std::set<Color> &colors);
6524 void get_index_space_partition_colors(
IndexSpace sp,
6564 Color get_index_space_color(
IndexSpace handle);
6567 template<
int DIM, typename COORD_T,
6568 int COLOR_DIM, typename COLOR_COORD_T>
6569 Point<COLOR_DIM,COLOR_COORD_T>
6570 get_index_space_color(
IndexSpaceT<DIM,COORD_T> handle);
6582 DomainPoint get_index_partition_color_point(Context ctx,
6600 template<
int DIM, typename COORD_T>
6614 bool has_parent_index_partition(
IndexSpace handle);
6629 template<
int DIM, typename COORD_T>
6643 unsigned get_index_space_depth(
IndexSpace handle);
6681 template<
int DIM, typename COORD_T>
6682 bool safe_cast(Context ctx,
6683 Point<DIM,COORD_T> point,
6696 FieldSpace create_field_space(Context ctx, const
char *provenance = NULL);
6709 const std::vector<
size_t> &field_sizes,
6710 std::vector<FieldID> &resulting_fields,
6711 CustomSerdezID serdez_id = 0,
6712 const
char *provenance = NULL);
6725 const std::vector<
Future> &field_sizes,
6726 std::vector<FieldID> &resulting_fields,
6727 CustomSerdezID serdez_id = 0,
6728 const
char *provenance = NULL);
6750 const
bool unordered = false,
6751 const
char *provenance = NULL);
6761 size_t get_field_size(Context ctx,
FieldSpace handle, FieldID fid);
6763 size_t get_field_size(
FieldSpace handle, FieldID fid);
6774 std::vector<FieldID> &fields);
6776 void get_field_space_fields(
FieldSpace handle,
6777 std::vector<FieldID> &fields);
6788 std::set<FieldID> &fields);
6790 void get_field_space_fields(
FieldSpace handle,
6791 std::set<FieldID> &fields);
6812 bool task_local = false,
6813 const
char *provenance = NULL);
6815 template<
int DIM, typename COORD_T>
6819 bool task_local = false,
6820 const
char *provenance = NULL);
6842 const
bool unordered = false,
6843 const
char *provenance = NULL);
6852 LEGION_DEPRECATED("Destruction of logical partitions are no-ops now."
6853 "Logical partitions are automatically destroyed when their root "
6854 "logical region or their index spartition are destroyed.")
6856 const
bool unordered = false);
6878 const std::set<FieldID> &fields);
6899 template<
int DIM, typename COORD_T>
6926 template<
int DIM, typename COORD_T>
6941 bool has_logical_partition_by_color(Context ctx,
6968 template<
int DIM, typename COORD_T>
6990 template<
int DIM, typename COORD_T>
7017 template<
int DIM, typename COORD_T,
7018 int COLOR_DIM, typename COLOR_COORD_T>
7021 Point<COLOR_DIM,COLOR_COORD_T> color);
7033 bool has_logical_subregion_by_color(Context ctx,
7040 template<
int DIM, typename COORD_T,
7041 int COLOR_DIM, typename COLOR_COORD_T>
7043 Point<COLOR_DIM,COLOR_COORD_T> color);
7065 template<
int DIM, typename COORD_T>
7081 DomainPoint get_logical_region_color_point(Context ctx,
7087 template<
int DIM, typename COORD_T,
7088 int COLOR_DIM, typename COLOR_COORD_T>
7089 Point<COLOR_DIM,COLOR_COORD_T>
7090 get_logical_region_color_point(
LogicalRegionT<DIM,COORD_T> handle);
7102 DomainPoint get_logical_partition_color_point(Context ctx,
7121 template<
int DIM, typename COORD_T>
7150 template<
int DIM, typename COORD_T>
7174 LEGION_DEPRECATED("
ArgumentMap can be constructed directly.")
7231 ReductionOpID redop,
bool ordered = true,
7258 ReductionOpID redop,
bool ordered = true,
7259 MapperID map_id = 0, MappingTagID tag = 0,
7260 const
char *provenance = NULL,
7292 bool collective = false, ShardingID sid = 0,
7293 bool implicit_sharding = false,
7294 const
char *provenance = NULL);
7295 LEGION_DEPRECATED("Use the version that takes an
IndexSpace instead")
7298 bool collective = false, ShardingID sid = 0,
7299 bool implicit_sharding = false);
7326 bool collective = false, ShardingID sid = 0,
7327 bool implicit_sharding = false,
7328 const
char *provenance = NULL);
7329 LEGION_DEPRECATED("Use the version that takes an
IndexSpace instead")
7332 bool collective = false, ShardingID sid = 0,
7333 bool implicit_sharding = false);
7357 PointTransformFnptr fnptr,
7358 const
char *provenance = NULL);
7379 bool take_ownership = false,
7380 const
char *provenance = NULL);
7397 LEGION_DEPRECATED("Launching tasks should be done with the new task "
7398 "launcher interface.")
7399 Future execute_task(Context ctx, TaskID task_id,
7406 MappingTagID tag = 0);
7426 LEGION_DEPRECATED("Launching tasks should be done with the new task "
7427 "launcher interface.")
7436 bool must_paralleism = false,
7438 MappingTagID tag = 0);
7461 LEGION_DEPRECATED("Launching tasks should be done with the new task "
7462 "launcher interface.")
7463 Future execute_index_space(Context ctx, TaskID task_id,
7470 ReductionOpID reduction,
7473 bool must_parallelism = false,
7475 MappingTagID tag = 0);
7505 MapperID
id = 0, MappingTagID tag = 0,
7506 const
char *provenance = NULL);
7520 MapperID
id = 0, MappingTagID tag = 0,
7521 const
char *provenance = NULL);
7533 const
char *provenance = NULL);
7551 void unmap_all_regions(Context ctx);
7587 template<typename T>
7589 FieldID fid, const T &value,
7606 FieldID fid, const
void *value,
size_t value_size,
7635 template<typename T>
7637 const std::set<FieldID> &fields, const T &value,
7653 const std::set<FieldID> &fields,
7654 const
void *value,
size_t value_size,
7668 const std::set<FieldID> &fields,
7719 const
bool flush = true,
7720 const
bool unordered = false,
7721 const
char *provenance = NULL);
7756 const
bool flush = true,
7757 const
bool unordered = false,
7758 const
char *provenance = NULL);
7766 void progress_unordered_operations(Context ctx);
7798 LEGION_DEPRECATED("Attaching specific HDF5 file type is deprecated "
7799 "in favor of generic attach launcher interface.")
7802 const std::map<FieldID,const
char*> &field_map,
7803 LegionFileMode mode);
7821 LEGION_DEPRECATED("Detaching specific HDF5 file type is deprecated "
7822 "in favor of generic detach interface.")
7831 LEGION_DEPRECATED("Attaching generic file type is deprecated "
7832 "in favor of generic attach launcher interface.")
7835 const std::vector<FieldID> &field_vec,
7836 LegionFileMode mode);
7843 LEGION_DEPRECATED("Detaching generic file type is deprecated "
7844 "in favor of generic detach interface.")
7881 const
char *provenance = NULL);
7893 const
char *provenance = NULL);
7907 const
char *provenance = NULL);
7921 const
char *provenance = NULL);
7940 const
char *provenance = NULL);
7962 void destroy_lock(Context ctx,
Lock l);
7988 void release_grant(Context ctx,
Grant grant);
8052 ReductionOpID redop,
8053 const
void *init_value,
8073 void arrive_dynamic_collective(Context ctx,
8076 size_t size,
unsigned count = 1);
8087 void defer_dynamic_collective_arrival(Context ctx,
8090 unsigned count = 1);
8103 const
char *provenance = NULL);
8146 Future issue_mapping_fence(Context ctx, const
char *provenance = NULL);
8157 Future issue_execution_fence(Context ctx, const
char *provenance = NULL);
8191 void begin_trace(Context ctx, TraceID tid,
bool logical_only = false,
8192 bool static_trace = false, const std::set<RegionTreeID> *managed = NULL,
8193 const
char *provenance = NULL);
8197 void end_trace(Context ctx, TraceID tid, const
char *provenance = NULL);
8212 LEGION_DEPRECATED("Use begin_trace with static_trace=true")
8213 void begin_static_trace(Context ctx,
8214 const std::set<RegionTreeID> *managed = NULL);
8219 LEGION_DEPRECATED("Use end_trace")
8220 void end_static_trace(Context ctx);
8226 TraceID generate_dynamic_trace_id(
void);
8238 TraceID generate_library_trace_ids(const
char *name,
size_t count);
8247 static TraceID generate_static_trace_id(
void);
8265 void complete_frame(Context ctx, const
char *provenance = NULL);
8297 Future select_tunable_value(Context ctx, TunableID tid,
8298 MapperID mapper = 0, MappingTagID tag = 0,
8299 const
void *args = NULL,
size_t argsize = 0);
8308 LEGION_DEPRECATED("Tunable values should now be obtained via the "
8309 "generic interface that returns a future result.")
8310 int get_tunable_value(Context ctx, TunableID tid,
8311 MapperID mapper = 0, MappingTagID tag = 0);
8321 const
Task* get_local_task(Context ctx);
8330 void* get_local_task_variable_untyped(Context ctx, LocalVariableID
id);
8331 template<typename T>
8332 T* get_local_task_variable(Context ctx, LocalVariableID
id);
8344 void set_local_task_variable_untyped(Context ctx, LocalVariableID
id,
8345 const
void *value,
void (*destructor)(
void*) = NULL);
8346 template<typename T>
8347 void set_local_task_variable(Context ctx, LocalVariableID
id,
8348 const T* value,
void (*destructor)(
void*) = NULL);
8371 Future get_current_time_in_microseconds(Context ctx,
8382 Future get_current_time_in_nanoseconds(Context ctx,
8400 static
long long get_zero_time(
void);
8419 Mapping::Mapper* get_mapper(Context ctx, MapperID
id,
8420 Processor target = Processor::NO_PROC);
8435 Mapping::MapperContext begin_mapper_call(Context ctx, MapperID
id,
8436 Processor target = Processor::NO_PROC);
8443 void end_mapper_call(Mapping::MapperContext ctx);
8451 Processor get_executing_processor(Context ctx);
8459 const
Task* get_current_task(Context ctx);
8472 size_t query_available_memory(Context ctx, Memory target);
8503 void yield(Context ctx);
8542 void concurrent_task_barrier(Context ctx);
8555 void start_profiling_range(Context ctx);
8556 void stop_profiling_range(Context ctx, const
char *provenance);
8564 bool is_MPI_interop_configured(
void);
8573 const std::map<
int,AddressSpace>& find_forward_MPI_mapping(
void);
8582 const std::map<AddressSpace,
int>& find_reverse_MPI_mapping(
void);
8587 int find_local_MPI_rank(
void);
8601 void attach_semantic_information(TaskID task_id, SemanticTag tag,
8602 const
void *buffer,
size_t size,
8603 bool is_mutable = false,
bool local_only = false);
8613 void attach_semantic_information(
IndexSpace handle, SemanticTag tag,
8614 const
void *buffer,
size_t size,
bool is_mutable = false);
8625 const
void *buffer,
size_t size,
bool is_mutable = false);
8635 void attach_semantic_information(
FieldSpace handle, SemanticTag tag,
8636 const
void *buffer,
size_t size,
bool is_mutable = false);
8648 SemanticTag tag, const
void *buffer,
8649 size_t size,
bool is_mutable = false);
8660 const
void *buffer,
size_t size,
bool is_mutable = false);
8671 SemanticTag tag, const
void *buffer,
8672 size_t size,
bool is_mutable = false);
8681 void attach_name(TaskID task_id, const
char *name,
8682 bool is_mutable = false,
8683 bool local_only = false);
8692 bool is_mutable = false);
8701 bool is_mutable = false);
8710 bool is_mutable = false);
8720 const
char *name,
bool is_mutable = false);
8729 bool is_mutable = false);
8738 bool is_mutable = false);
8750 bool retrieve_semantic_information(TaskID task_id, SemanticTag tag,
8751 const
void *&result,
size_t &size,
8752 bool can_fail = false,
8753 bool wait_until_ready = false);
8765 bool retrieve_semantic_information(
IndexSpace handle, SemanticTag tag,
8766 const
void *&result,
size_t &size,
8767 bool can_fail = false,
8768 bool wait_until_ready = false);
8781 const
void *&result,
size_t &size,
8782 bool can_fail = false,
8783 bool wait_until_ready = false);
8795 bool retrieve_semantic_information(
FieldSpace handle, SemanticTag tag,
8796 const
void *&result,
size_t &size,
8797 bool can_fail = false,
8798 bool wait_until_ready = false);
8811 bool retrieve_semantic_information(
FieldSpace handle, FieldID fid,
8813 const
void *&result,
size_t &size,
8814 bool can_fail = false,
8815 bool wait_until_ready = false);
8828 const
void *&result,
size_t &size,
8829 bool can_fail = false,
8830 bool wait_until_ready = false);
8844 const
void *&result,
size_t &size,
8845 bool can_fail = false,
8846 bool wait_until_ready = false);
8853 void retrieve_name(TaskID task_id, const
char *&result);
8882 void retrieve_name(
FieldSpace handle, FieldID fid, const
char *&result);
8911 void print_once(Context ctx, FILE *f, const
char *message);
8919 void log_once(Context ctx, Realm::LoggerMessage &message);
8932 Mapping::MapperRuntime* get_mapper_runtime(
void);
8938 MapperID generate_dynamic_mapper_id(
void);
8950 MapperID generate_library_mapper_ids(const
char *name,
size_t count);
8959 static MapperID generate_static_mapper_id(
void);
8972 void add_mapper(MapperID map_id, Mapping::Mapper *mapper,
8973 Processor proc = Processor::NO_PROC);
8986 void replace_default_mapper(Mapping::Mapper *mapper,
8987 Processor proc = Processor::NO_PROC);
8994 ProjectionID generate_dynamic_projection_id(
void);
9006 ProjectionID generate_library_projection_ids(const
char *name,
9016 static ProjectionID generate_static_projection_id(
void);
9031 void register_projection_functor(ProjectionID pid,
9033 bool silence_warnings = false,
9034 const
char *warning_string = NULL);
9045 static
void preregister_projection_functor(ProjectionID pid,
9060 ShardingID generate_dynamic_sharding_id(
void);
9072 ShardingID generate_library_sharding_ids(const
char *name,
size_t count);
9081 static ShardingID generate_static_sharding_id(
void);
9095 void register_sharding_functor(ShardingID sid,
9097 bool silence_warnings = false,
9098 const
char *warning_string = NULL);
9110 static
void preregister_sharding_functor(ShardingID sid,
9125 ReductionOpID generate_dynamic_reduction_id(
void);
9137 ReductionOpID generate_library_reduction_ids(const
char *name,
9147 static ReductionOpID generate_static_reduction_id(
void);
9163 template<typename REDOP>
9164 static
void register_reduction_op(ReductionOpID redop_id,
9165 bool permit_duplicates = false);
9187 static
void register_reduction_op(ReductionOpID redop_id,
9189 SerdezInitFnptr init_fnptr = NULL,
9190 SerdezFoldFnptr fold_fnptr = NULL,
9191 bool permit_duplicates = false);
9198 static const ReductionOp* get_reduction_op(ReductionOpID redop_id);
9200#ifdef LEGION_GPU_REDUCTIONS
9201 template<
typename REDOP>
9202 LEGION_DEPRECATED(
"Use register_reduction_op instead")
9203 static
void preregister_gpu_reduction_op(ReductionOpID redop_id);
9247 template<
typename SERDEZ>
9249 bool permit_duplicates =
false);
9264 SerdezOp *serdez_op,
9265 bool permit_duplicates =
false);
9475 static int start(
int argc,
char **argv,
bool background =
false,
9476 bool supply_default_mapper =
true,
bool filter =
false);
9494 bool filter =
false,
bool parse =
true);
9557 Processor::Kind proc_kind,
9558 const char *task_name = NULL,
9559 bool control_replicable =
false,
9560 unsigned shard_per_address_space = 1,
9592 Realm::Event effects = Realm::Event::NO_EVENT);
9626 int ext_participants = 1,
9627 int legion_participants = 1);
9641 int mpi_participants = 1,
9642 int legion_participants = 1);
9656 LEGION_DEPRECATED(
"Projection functions should now be specified "
9657 "using projection functor objects")
9671 LEGION_DEPRECATED(
"Projection functions should now be specified "
9672 "using projection functor objects")
9692 bool dedup =
true,
size_t dedup_tag = 0);
9693 static void add_registration_callback(
9694 RegistrationWithArgsCallbackFnptr callback,
const UntypedBuffer &buffer,
9695 bool dedup =
true,
size_t dedup_tag = 0);
9722 RegistrationCallbackFnptr callback,
bool global,
9723 bool deduplicate =
true,
size_t dedup_tag = 0);
9724 static void perform_registration_callback(
9725 RegistrationWithArgsCallbackFnptr callback,
9727 bool deduplicate =
true ,
size_t dedup_tag = 0);
9740 LEGION_DEPRECATED(
"Legion now supports multiple registration callbacks "
9741 "added via the add_registration_callback method.")
9742 static
void set_registration_callback(RegistrationCallbackFnptr callback);
9754 static
void enable_profiling(
void);
9758 static
void disable_profiling(
void);
9762 static
void dump_profiling(
void);
9775 LayoutConstraintID register_layout(
9783 void release_layout(LayoutConstraintID layout_id);
9796 static LayoutConstraintID preregister_layout(
9798 LayoutConstraintID layout_id =
9799 LEGION_AUTO_GENERATE_ID);
9807 LayoutConstraintID layout_id);
9814 void get_layout_constraints(LayoutConstraintID layout_id,
9815 LayoutConstraintSet &layout_constraints);
9822 const
char* get_layout_constraints_name(LayoutConstraintID layout_id);
9832 TaskID generate_dynamic_task_id(
void);
9844 TaskID generate_library_task_ids(const
char *name,
size_t count);
9853 static TaskID generate_static_task_id(
void);
9862 template<typename T,
9866 VariantID vid = LEGION_AUTO_GENERATE_ID);
9876 template<typename T, typename UDT,
9878 Context,
Runtime*, const UDT&)>
9880 const UDT &user_data,
9881 VariantID vid = LEGION_AUTO_GENERATE_ID);
9894 VariantID vid = LEGION_AUTO_GENERATE_ID);
9904 template<typename UDT,
9906 Context,
Runtime*, const UDT&)>
9908 const UDT &user_data,
9909 VariantID vid = LEGION_AUTO_GENERATE_ID);
9931 const CodeDescriptor &codedesc,
9932 const
void *user_data = NULL,
9933 size_t user_len = 0,
9934 size_t return_type_size =
9935 LEGION_MAX_RETURN_SIZE,
9936 VariantID vid = LEGION_AUTO_GENERATE_ID,
9937 bool has_return_type_size = true);
9949 template<typename T,
9952 static VariantID preregister_task_variant(
9954 const
char *task_name = NULL,
9955 VariantID vid = LEGION_AUTO_GENERATE_ID);
9968 template<typename T, typename UDT,
9970 Context,
Runtime*, const UDT&)>
9971 static VariantID preregister_task_variant(
9973 const UDT &user_data,
9974 const
char *task_name = NULL,
9975 VariantID vid = LEGION_AUTO_GENERATE_ID);
9990 static VariantID preregister_task_variant(
9992 const
char *task_name = NULL,
9993 VariantID vid = LEGION_AUTO_GENERATE_ID);
10006 template<typename UDT,
10008 Context,
Runtime*, const UDT&)>
10009 static VariantID preregister_task_variant(
10011 const
char *task_name = NULL,
10012 VariantID vid = LEGION_AUTO_GENERATE_ID);
10035 static VariantID preregister_task_variant(
10037 const CodeDescriptor &codedesc,
10038 const
void *user_data = NULL,
10039 size_t user_len = 0,
10040 const
char *task_name = NULL,
10041 VariantID vid = LEGION_AUTO_GENERATE_ID,
10042 size_t return_type_size = LEGION_MAX_RETURN_SIZE,
10043 bool has_return_type_size = true,
10044 bool check_task_id = true);
10060 Processor p, const
Task *& task,
10062 Context& ctx,
Runtime *& runtime);
10082 const
void *retvalptr = NULL,
10083 size_t retvalsize = 0,
10084 bool owned = false,
10085 Realm::RegionInstance inst =
10086 Realm::RegionInstance::NO_INST,
10087 const
void *metadataptr = NULL,
10088 size_t metadatasize = 0);
10109 const
void *retvalptr,
size_t retvalsize,
bool owned,
10110 const Realm::ExternalInstanceResource &allocation,
10111 void (*freefunc)(const Realm::ExternalInstanceResource&) = NULL,
10112 const
void *metadataptr = NULL,
size_t metadatasize = 0);
10125 bool owned = false);
10141 template<typename T,
10144 LEGION_DEPRECATED("
Task registration should be done with "
10146 static TaskID register_legion_task(TaskID
id, Processor::Kind proc_kind,
10147 bool single,
bool index,
10148 VariantID vid =LEGION_AUTO_GENERATE_ID,
10150 const
char *task_name = NULL);
10167 LEGION_DEPRECATED("
Task registration should be done with "
10169 static TaskID register_legion_task(TaskID
id, Processor::Kind proc_kind,
10170 bool single,
bool index,
10171 VariantID vid =LEGION_AUTO_GENERATE_ID,
10173 const
char *task_name = NULL);
10189 template<typename T, typename UDT,
10191 Context,
Runtime*, const UDT&)>
10192 LEGION_DEPRECATED("
Task registration should be done with "
10194 static TaskID register_legion_task(TaskID
id, Processor::Kind proc_kind,
10195 bool single,
bool index,
10196 const UDT &user_data,
10197 VariantID vid =LEGION_AUTO_GENERATE_ID,
10199 const
char *task_name = NULL);
10215 template<typename UDT,
10217 Context,
Runtime*, const UDT&)>
10218 LEGION_DEPRECATED("
Task registration should be done with "
10220 static TaskID register_legion_task(TaskID
id, Processor::Kind proc_kind,
10221 bool single,
bool index,
10222 const UDT &user_data,
10223 VariantID vid =LEGION_AUTO_GENERATE_ID,
10225 const
char *task_name = NULL);
10233 static
bool has_runtime(
void);
10242 static
Runtime* get_runtime(Processor p = Processor::NO_PROC);
10250 static
bool has_context(
void);
10258 static Context get_context(
void);
10265 static const
Task* get_context_task(Context ctx);
10270 const
void *transform,
10271 size_t transform_size,
10272 const
void *extent,
10273 size_t extent_size,
10274 PartitionKind part_kind, Color color,
10275 const
char *provenance);
10276 IndexSpace create_index_space_union_internal(Context ctx,
10278 const
void *realm_color,
size_t color_size,
10279 TypeTag type_tag, const
char *provenance,
10281 IndexSpace create_index_space_union_internal(Context ctx,
10283 const
void *realm_color,
size_t color_size,
10284 TypeTag type_tag, const
char *provenance,
10286 IndexSpace create_index_space_intersection_internal(Context ctx,
10288 const
void *realm_color,
size_t color_size,
10289 TypeTag type_tag, const
char *provenance,
10291 IndexSpace create_index_space_intersection_internal(Context ctx,
10293 const
void *realm_color,
size_t color_size,
10294 TypeTag type_tag, const
char *provenance,
10296 IndexSpace create_index_space_difference_internal(Context ctx,
10298 const
void *realm_color,
size_t color_size,
10299 TypeTag type_tag, const
char *provenance,
10303 const
void *realm_color,TypeTag type_tag);
10305 const
void *realm_color,TypeTag type_tag);
10306 void get_index_partition_color_space_internal(
IndexPartition handle,
10307 void *realm_is, TypeTag type_tag);
10308 void get_index_space_domain_internal(
IndexSpace handle,
10309 void *realm_is, TypeTag type_tag);
10310 void get_index_space_color_internal(
IndexSpace handle,
10311 void *realm_color, TypeTag type_tag);
10313 const
void *realm_point,TypeTag type_tag);
10316 const
void *realm_color,TypeTag type_tag);
10317 bool has_logical_subregion_by_color_internal(
10319 const
void *realm_color,TypeTag type_tag);
10322 friend class LegionTaskWrapper;
10323 friend class LegionSerialization;
10325 template<typename T>
10327 template<typename T,
int DIM, typename COORD_T,
bool CHECK_BOUNDS>
10332 Realm::RegionInstance create_task_local_instance(Memory memory,
10333 Realm::InstanceLayoutGeneric *layout);
10334 void destroy_task_local_instance(Realm::RegionInstance instance,
10335 Realm::Event precondition);
10341 ShardID get_shard_id(Context ctx,
bool I_know_what_I_am_doing = false);
10344 size_t get_num_shards(Context ctx,
bool I_know_what_I_am_doing = false);
10363 Future consensus_match(Context ctx, const
void *input,
void *output,
10364 size_t num_elements,
size_t element_size, const
char *provenance = NULL);
10366 friend class Mapper;