20#ifndef REALM_INDEXSPACE_H
21#define REALM_INDEXSPACE_H
26#define REALM_SKIP_INLINES
28#undef REALM_SKIP_INLINES
66 size_t _subfield_offset = 0);
68 size_t _subfield_offset = 0);
70 bool exclusive =
false);
95 template <
int N,
typename T =
int>
97 template <
int N,
typename T =
int>
106 template <
typename IS,
typename FT>
120 template <
int N,
typename T =
int>
133 template <
typename T2>
146 template <
int M,
int N,
typename T =
int>
159 template <
typename T2>
175 template <
int N,
typename T,
int N2,
typename T2>
213 template <
int N,
typename T,
int N2,
typename T2>
228 UNSTRUCTURED_PTR = 2,
229 UNSTRUCTURED_RANGE = 3,
249 template <
int N,
typename T =
int>
259 template <
int N2,
typename T2 =
int>
278 template <
int N2,
typename T2 =
int>
284 const std::vector<RegionInstance> &_insts,
FieldID _field_id,
285 size_t _subfield_offset = 0,
bool _is_ranges =
false,
286 bool _oor_possible =
false,
bool _aliasing_possible =
false)
290 , field_id(_field_id)
291 , subfield_offset(_subfield_offset)
292 , is_ranges(_is_ranges)
293 , oor_possible(_oor_possible)
294 , aliasing_possible(_aliasing_possible)
322 template <
int N,
typename T>
528 template <
typename LAMBDA>
530 template <
typename LAMBDA>
537 const std::vector<size_t>& field_sizes,
562 size_t fill_value_size,
Event wait_on = Event::NO_EVENT,
563 int priority = 0)
const;
581 const std::vector<CopySrcDstField> &dsts,
583 int priority = 0)
const;
600 Event copy(std::vector<CopySrcDstField> &&srcs, std::vector<CopySrcDstField> &&dsts,
602 int priority = 0)
const;
622 const std::vector<CopySrcDstField> &dsts,
625 int priority = 0)
const;
643 Event copy(std::vector<CopySrcDstField> &&srcs, std::vector<CopySrcDstField> &&dsts,
646 int priority = 0)
const;
668 Event wait_on = Event::NO_EVENT)
const;
674 Event wait_on = Event::NO_EVENT)
const;
692 const std::vector<int> &weights,
695 Event wait_on = Event::NO_EVENT)
const;
699 const std::vector<size_t> &weights,
702 Event wait_on = Event::NO_EVENT)
const;
707 template <
typename FT>
711 Event wait_on = Event::NO_EVENT)
const;
713 template <
typename FT>
734 template <
typename FT,
typename FT2>
741 template <
typename FT,
typename FT2>
746 Event wait_on = Event::NO_EVENT)
const;
765 template <
int N2,
typename T2,
typename TRANSFORM>
769 Event wait_on = Event::NO_EVENT)
const;
771 template <
int N2,
typename T2,
typename TRANSFORM>
775 Event wait_on = Event::NO_EVENT)
const;
777 template <
int N2,
typename T2>
782 Event wait_on = Event::NO_EVENT)
const;
801 template <
int N2,
typename T2>
808 template <
int N2,
typename T2>
814 Event wait_on = Event::NO_EVENT)
const;
817 template <
int N2,
typename T2>
824 template <
int N2,
typename T2>
830 Event wait_on = Event::NO_EVENT)
const;
849 template <
int N2,
typename T2>
856 Event wait_on = Event::NO_EVENT)
const;
858 template <
int N2,
typename T2>
864 Event wait_on = Event::NO_EVENT)
const;
883 template <
int N2,
typename T2,
typename TRANSFORM>
887 Event wait_on = Event::NO_EVENT)
const;
889 template <
int N2,
typename T2,
typename TRANSFORM>
893 Event wait_on = Event::NO_EVENT)
const;
895 template <
int N2,
typename T2>
900 Event wait_on = Event::NO_EVENT)
const;
918 template <
int N2,
typename T2>
925 template <
int N2,
typename T2>
931 Event wait_on = Event::NO_EVENT)
const;
933 template <
int N2,
typename T2>
940 template <
int N2,
typename T2>
946 Event wait_on = Event::NO_EVENT)
const;
959 template <
int N2,
typename T2>
964 Event wait_on = Event::NO_EVENT)
const;
989 Event wait_on = Event::NO_EVENT);
996 Event wait_on = Event::NO_EVENT);
1003 Event wait_on = Event::NO_EVENT);
1010 Event wait_on = Event::NO_EVENT);
1028 Event wait_on = Event::NO_EVENT);
1035 Event wait_on = Event::NO_EVENT);
1042 Event wait_on = Event::NO_EVENT);
1049 Event wait_on = Event::NO_EVENT);
1066 Event wait_on = Event::NO_EVENT);
1073 Event wait_on = Event::NO_EVENT);
1080 Event wait_on = Event::NO_EVENT);
1087 Event wait_on = Event::NO_EVENT);
1095 Event wait_on = Event::NO_EVENT);
1101 Event wait_on = Event::NO_EVENT);
1104 template <
int N,
typename T>
1120 template <
int N,
typename T>
1122 template <
int N,
typename T>
1129 template <
int N,
typename T>
1131 template <
int N,
typename T>
1136 template <
int N,
typename T>
1141 const std::vector<CopySrcDstField> &dsts,
1143 int priority = 0)
const;
1145 template <
int N,
typename T>
1147 const std::vector<CopySrcDstField> &dsts,
1150 int priority = 0)
const;
1159 static constexpr size_t MAX_TYPE_SIZE = DIMTYPES::MaxSize::value;
1160 static constexpr size_t STORAGE_BYTES = (2 *
REALM_MAX_DIM + 2) * MAX_TYPE_SIZE;
1161 typedef char Storage_unaligned[STORAGE_BYTES];
1167 template <
int N,
typename T>
1190 virtual size_t size(
void)
const = 0;
1193 template <
int N,
typename T>
1195 template <
int N,
typename T>
1197 template <
int N,
typename T>
1203 template <
int N,
typename T>
1222 template <
int N,
typename T>
1227 bool fortran_order =
true);
1240 template <
int N,
typename T>
1248 template <
int N,
typename T>
1256 size_t cur_entry{0};
1280 template <
int N,
typename T>
1281 struct less<
Realm::IndexSpace<N, T>> {
1287#include "realm/indexspace.inl"
Definition indexspace.h:1223
virtual size_t size(void) const
AffineLinearizedIndexSpace(const IndexSpace< N, T > &_indexspace, bool fortran_order=true)
virtual size_t linearize(const Point< N, T > &p) const
virtual LinearizedIndexSpaceIntfc * clone(void) const
size_t offset
Definition indexspace.h:1235
size_t volume
Definition indexspace.h:1235
Rect< N, T > dbg_bounds
Definition indexspace.h:1237
Point< N, ptrdiff_t > strides
Definition indexspace.h:1236
Definition codedesc.h:249
Definition indexspace.h:260
Point< N2, T2 > offset_hi
Definition indexspace.h:268
virtual ~Affine(void)
Definition indexspace.h:262
virtual REALM_INTERNAL_API_EXTERNAL_LINKAGE IndirectionInfo * create_info(const IndexSpace< N, T > &is) const
Matrix< N, N2, T2 > transform
Definition indexspace.h:267
CopyIndirection< N2, T2 >::Base * next_indirection
Definition indexspace.h:265
std::vector< IndexSpace< N2, T2 > > spaces
Definition indexspace.h:271
Rect< N2, T2 > wrap
Definition indexspace.h:270
Point< N2, T2 > divisor
Definition indexspace.h:269
std::vector< RegionInstance > insts
Definition indexspace.h:272
Definition indexspace.h:252
virtual ~Base(void)
Definition indexspace.h:254
virtual REALM_INTERNAL_API_EXTERNAL_LINKAGE IndirectionInfo * create_info(const IndexSpace< N, T > &is) const =0
Definition indexspace.h:279
FieldID field_id
Definition indexspace.h:303
virtual ~Unstructured(void)
Definition indexspace.h:296
CopyIndirection< N2, T2 >::Base * next_indirection
Definition indexspace.h:298
std::vector< RegionInstance > insts
Definition indexspace.h:302
bool aliasing_possible
Definition indexspace.h:307
bool is_ranges
Definition indexspace.h:305
std::vector< IndexSpace< N2, T2 > > spaces
Definition indexspace.h:301
Unstructured()
Definition indexspace.h:281
Unstructured(RegionInstance _ind_inst, const std::vector< IndexSpace< N2, T2 > > &_spaces, const std::vector< RegionInstance > &_insts, FieldID _field_id, size_t _subfield_offset=0, bool _is_ranges=false, bool _oor_possible=false, bool _aliasing_possible=false)
Definition indexspace.h:282
virtual REALM_INTERNAL_API_EXTERNAL_LINKAGE IndirectionInfo * create_info(const IndexSpace< N, T > &is) const
bool oor_possible
Definition indexspace.h:306
size_t subfield_offset
Definition indexspace.h:304
RegionInstance inst
Definition indexspace.h:300
Definition indexspace.h:250
Definition indexspace.h:214
DomainTransform(void)=default
DomainTransform(const std::vector< FieldDataDescriptor< IndexSpace< N2, T2 >, Rect< N, T > > > &_field_data)
StructuredTransform< N, T, N2, T2 > structured_transform
Definition indexspace.h:233
std::vector< FieldDataDescriptor< IndexSpace< N2, T2 >, Point< N, T > > > ptr_data
Definition indexspace.h:234
DomainTransform(const std::vector< FieldDataDescriptor< IndexSpace< N2, T2 >, Point< N, T > > > &_field_data)
std::vector< FieldDataDescriptor< IndexSpace< N2, T2 >, Rect< N, T > > > range_data
Definition indexspace.h:235
DomainTransform(const StructuredTransform< N, T, N2, T2 > &_transform)
DomainTransformType
Definition indexspace.h:225
Definition indexspace.h:1115
Event copy(const std::vector< CopySrcDstField > &srcs, const std::vector< CopySrcDstField > &dsts, const ProfilingRequestSet &requests, Event wait_on=Event::NO_EVENT, int priority=0) const
const IndexSpace< N, T > & as_index_space() const
IndexSpaceGeneric & operator=(const IndexSpaceGeneric ©_from)
IndexSpaceGenericImpl * impl
Definition indexspace.h:1153
IndexSpaceGeneric(const Rect< N, T > ©_from)
IndexSpaceGeneric(const IndexSpace< N, T > ©_from)
IndexSpaceGeneric(const IndexSpaceGeneric ©_from)
void destroy(Event wait_on=Event::NO_EVENT)
Event copy(const std::vector< CopySrcDstField > &srcs, const std::vector< CopySrcDstField > &dsts, const std::vector< const typename CopyIndirection< N, T >::Base * > &indirects, const ProfilingRequestSet &requests, Event wait_on=Event::NO_EVENT, int priority=0) const
Storage_aligned raw_storage
Definition indexspace.h:1164
IndexSpaceGeneric & operator=(const IndexSpace< N, T > ©_from)
IndexSpaceGeneric & operator=(const Rect< N, T > ©_from)
REALM_ALIGNED_TYPE_SAMEAS(Storage_aligned, Storage_unaligned, DIMTYPES::MaxSizeType< MAX_TYPE_SIZE >::TYPE)
Definition transfer.h:463
Definition indexspace.h:1179
LinearizedIndexSpaceIntfc(int _dim, int _idxtype)
virtual ~LinearizedIndexSpaceIntfc(void)
virtual size_t size(void) const =0
virtual LinearizedIndexSpaceIntfc * clone(void) const =0
const LinearizedIndexSpace< N, T > & as_dim(void) const
int idxtype
Definition indexspace.h:1200
LinearizedIndexSpace< N, T > & as_dim(void)
int dim
Definition indexspace.h:1200
bool check_dim(void) const
Definition indexspace.h:1204
IndexSpace< N, T > indexspace
Definition indexspace.h:1213
virtual size_t linearize(const Point< N, T > &p) const =0
LinearizedIndexSpace(const IndexSpace< N, T > &_indexspace)
Definition profiling.h:363
Definition sparsity.h:171
#define REALM_INTERNAL_API_EXTERNAL_LINKAGE
Definition compiler_support.h:218
#define REALM_CUDA_HD
Definition compiler_support.h:95
#define REALM_PUBLIC_API
Definition compiler_support.h:217
Definition activemsg.h:38
realm_field_id_t FieldID
Definition instance.h:45
DynamicTemplates::TypeList< int, unsignedint, longlong >::TL DIMTYPES
Definition indexspace.h:48
int CustomSerdezID
Definition custom_serdez.h:148
DynamicTemplates::IntList< 1, REALM_MAX_DIM > DIMCOUNTS
Definition indexspace.h:47
DynamicTemplates::TypeList< int, bool >::TL FLDTYPES
Definition indexspace.h:49
::realm_reduction_op_id_t ReductionOpID
Definition event.h:38
std::ostream & operator<<(std::ostream &os, const DenseRectangleList< N, T > &drl)
Definition indexspace.h:1279
#define REALM_MAX_DIM
Definition realm_config.h:34
Definition indexspace.h:59
CopySrcDstField & set_indirect(int _indirect_index, FieldID _field_id, size_t _size, size_t _subfield_offset=0)
void * indirect
Definition indexspace.h:89
CopySrcDstField(const CopySrcDstField ©_from)
CopySrcDstField & operator=(const CopySrcDstField ©_from)
CopySrcDstField & set_redop(ReductionOpID _redop_id, bool _is_fold, bool exclusive=false)
bool red_fold
Definition indexspace.h:81
CustomSerdezID serdez_id
Definition indexspace.h:83
CopySrcDstField & set_serdez(CustomSerdezID _serdez_id)
RegionInstance inst
Definition indexspace.h:77
char direct[8]
Definition indexspace.h:88
CopySrcDstField & set_field(RegionInstance _inst, FieldID _field_id, size_t _size, size_t _subfield_offset=0)
static const size_t MAX_DIRECT_SIZE
Definition indexspace.h:86
ReductionOpID redop_id
Definition indexspace.h:80
CopySrcDstField & set_fill(T value)
FieldID field_id
Definition indexspace.h:78
bool red_exclusive
Definition indexspace.h:82
union Realm::CopySrcDstField::@15 fill_data
size_t size
Definition indexspace.h:79
int indirect_index
Definition indexspace.h:85
size_t subfield_offset
Definition indexspace.h:84
CopySrcDstField & set_fill(const void *_data, size_t _size)
Definition dynamic_templates.h:277
Definition dynamic_templates.h:100
Definition dynamic_templates.h:57
Definition indexspace.h:107
RegionInstance inst
Definition indexspace.h:109
size_t field_offset
Definition indexspace.h:110
IS index_space
Definition indexspace.h:108
Definition indexspace.h:1249
IndexSpace< N, T > space
Definition indexspace.h:1251
void reset(const IndexSpace< N, T > &_space, const Rect< N, T > &_restrict)
IndexSpaceIterator(const IndexSpace< N, T > &_space, const Rect< N, T > &_restrict)
IndexSpaceIterator(const IndexSpace< N, T > &_space)
void reset(const Rect< N, T > &_bounds, const Rect< N, T > &_restrict, SparsityMapPublicImpl< N, T > *_s_impl)
void reset(const IndexSpace< N, T > &_space)
IndexSpaceIterator(const Rect< N, T > &_boudns, const Rect< N, T > &_restrict, SparsityMapPublicImpl< N, T > *_s_impl)
Definition indexspace.h:323
REALM_PUBLIC_API Event create_weighted_subspaces(size_t count, size_t granularity, const std::vector< int > &weights, std::vector< IndexSpace< N, T > > &subspaces, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
REALM_PUBLIC_API void foreach_subrect(LAMBDA lambda, const Rect< N, T > &restriction)
REALM_PUBLIC_API Event create_subspace_by_preimage(const std::vector< FieldDataDescriptor< IndexSpace< N, T >, Rect< N2, T2 > > > &field_data, const IndexSpace< N2, T2 > &target, IndexSpace< N, T > &preimage, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
REALM_PUBLIC_API Event create_subspaces_by_image(const TRANSFORM &transform, const std::vector< IndexSpace< N2, T2 > > &sources, std::vector< IndexSpace< N, T > > &images, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
REALM_PUBLIC_API Event create_subspaces_by_image(const std::vector< FieldDataDescriptor< IndexSpace< N2, T2 >, Point< N, T > > > &field_data, const std::vector< IndexSpace< N2, T2 > > &sources, std::vector< IndexSpace< N, T > > &images, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
void destroy(Event wait_on=Event::NO_EVENT)
static REALM_PUBLIC_API Event compute_union(const std::vector< IndexSpace< N, T > > &subspaces, IndexSpace< N, T > &result, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT)
REALM_PUBLIC_API Event create_subspaces_by_image_with_difference(const std::vector< FieldDataDescriptor< IndexSpace< N2, T2 >, Point< N, T > > > &field_data, const std::vector< IndexSpace< N2, T2 > > &sources, const std::vector< IndexSpace< N, T > > &diff_rhs, std::vector< IndexSpace< N, T > > &images, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
REALM_PUBLIC_API Event create_subspace_by_image(const std::vector< FieldDataDescriptor< IndexSpace< N2, T2 >, Point< N, T > > > &field_data, const IndexSpace< N2, T2 > &source, IndexSpace< N, T > &image, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
bool contains_any(const Rect< N, T > &r) const
REALM_PUBLIC_API Event create_subspace_by_preimage(const TRANSFORM &transform, const IndexSpace< N2, T2 > &target, IndexSpace< N, T > &preimage, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
bool contains(const Point< N, T > &p) const
static REALM_PUBLIC_API Event compute_differences(const std::vector< IndexSpace< N, T > > &lhss, const std::vector< IndexSpace< N, T > > &rhss, std::vector< IndexSpace< N, T > > &results, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT)
REALM_PUBLIC_API Event create_subspaces_by_image(const std::vector< FieldDataDescriptor< IndexSpace< N2, T2 >, Rect< N, T > > > &field_data, const std::vector< IndexSpace< N2, T2 > > &sources, std::vector< IndexSpace< N, T > > &images, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
REALM_PUBLIC_API Event fill(const std::vector< CopySrcDstField > &dsts, const ProfilingRequestSet &requests, const void *fill_value, size_t fill_value_size, Event wait_on=Event::NO_EVENT, int priority=0) const
static REALM_PUBLIC_API Event compute_difference(const IndexSpace< N, T > &lhs, const IndexSpace< N, T > &rhs, IndexSpace< N, T > &result, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT)
REALM_CUDA_HD bool dense(void) const
REALM_PUBLIC_API Event create_subspaces_by_field(const std::vector< FieldDataDescriptor< IndexSpace< N, T >, FT > > &field_data, const CodeDescriptor &codedesc, const std::vector< FT2 > &colors, std::vector< IndexSpace< N, T > > &subspaces, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
size_t volume_approx(void) const
REALM_PUBLIC_API Event copy(std::vector< CopySrcDstField > &&srcs, std::vector< CopySrcDstField > &&dsts, const std::vector< const typename CopyIndirection< N, T >::Base * > &indirects, const ProfilingRequestSet &requests, Event wait_on=Event::NO_EVENT, int priority=0) const
REALM_PUBLIC_API Event create_weighted_subspaces(size_t count, size_t granularity, const std::vector< size_t > &weights, std::vector< IndexSpace< N, T > > &subspaces, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
REALM_CUDA_HD IndexSpace(void)
static REALM_PUBLIC_API Event compute_unions(const IndexSpace< N, T > &lhs, const std::vector< IndexSpace< N, T > > &rhss, std::vector< IndexSpace< N, T > > &results, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT)
REALM_PUBLIC_API Event create_subspaces_by_preimage(const std::vector< FieldDataDescriptor< IndexSpace< N, T >, Point< N2, T2 > > > &field_data, const std::vector< IndexSpace< N2, T2 > > &targets, std::vector< IndexSpace< N, T > > &preimages, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
static REALM_PUBLIC_API Event compute_intersections(const std::vector< IndexSpace< N, T > > &lhss, const IndexSpace< N, T > &rhs, std::vector< IndexSpace< N, T > > &results, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT)
REALM_PUBLIC_API Event copy(const std::vector< CopySrcDstField > &srcs, const std::vector< CopySrcDstField > &dsts, const ProfilingRequestSet &requests, Event wait_on=Event::NO_EVENT, int priority=0) const
REALM_PUBLIC_API Event create_association(const std::vector< FieldDataDescriptor< IndexSpace< N, T >, Point< N2, T2 > > > &field_data, const IndexSpace< N2, T2 > &range, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
bool overlaps(const IndexSpace< N, T > &other) const
REALM_PUBLIC_API void foreach_subrect(LAMBDA lambda)
REALM_PUBLIC_API Event copy(const std::vector< CopySrcDstField > &srcs, const std::vector< CopySrcDstField > &dsts, const std::vector< const typename CopyIndirection< N, T >::Base * > &indirects, const ProfilingRequestSet &requests, Event wait_on=Event::NO_EVENT, int priority=0) const
static REALM_PUBLIC_API Event compute_intersections(const IndexSpace< N, T > &lhs, const std::vector< IndexSpace< N, T > > &rhss, std::vector< IndexSpace< N, T > > &results, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT)
static REALM_PUBLIC_API Event compute_intersection(const IndexSpace< N, T > &lhs, const IndexSpace< N, T > &rhs, IndexSpace< N, T > &result, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT)
IndexSpace(const std::vector< Rect< N, T > > &rects, bool disjoint=false)
REALM_PUBLIC_API bool compute_covering(size_t max_rects, int max_overhead, std::vector< Rect< N, T > > &covering) const
REALM_PUBLIC_API Event create_subspaces_by_image(const DomainTransform< N, T, N2, T2 > &domain_transform, const std::vector< IndexSpace< N2, T2 > > &sources, std::vector< IndexSpace< N, T > > &images, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
REALM_PUBLIC_API Event create_equal_subspaces(size_t count, size_t granularity, std::vector< IndexSpace< N, T > > &subspaces, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
REALM_PUBLIC_API Event create_subspace_by_image(const TRANSFORM &transform, const IndexSpace< N2, T2 > &source, const IndexSpace< N, T > &image, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
bool contains_approx(const Point< N, T > &p) const
REALM_PUBLIC_API Event create_subspaces_by_preimage(const DomainTransform< N2, T2, N, T > &domain_transform, const std::vector< IndexSpace< N2, T2 > > &targets, std::vector< IndexSpace< N, T > > &preimages, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
REALM_PUBLIC_API Event copy(std::vector< CopySrcDstField > &&srcs, std::vector< CopySrcDstField > &&dsts, const ProfilingRequestSet &requests, Event wait_on=Event::NO_EVENT, int priority=0) const
static REALM_PUBLIC_API Event compute_unions(const std::vector< IndexSpace< N, T > > &lhss, const IndexSpace< N, T > &rhs, std::vector< IndexSpace< N, T > > &results, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT)
REALM_CUDA_HD IndexSpace(const Rect< N, T > &_bounds)
REALM_PUBLIC_API Event create_subspace_by_field(const std::vector< FieldDataDescriptor< IndexSpace< N, T >, FT > > &field_data, const CodeDescriptor &codedesc, FT2 color, IndexSpace< N, T > &subspace, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
bool contains_all(const Rect< N, T > &r) const
Rect< N, T > bounds
Definition indexspace.h:324
bool contains_any_approx(const Rect< N, T > &r) const
static REALM_PUBLIC_API Event compute_differences(const std::vector< IndexSpace< N, T > > &lhss, const IndexSpace< N, T > &rhs, std::vector< IndexSpace< N, T > > &results, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT)
static REALM_PUBLIC_API Event compute_union(const IndexSpace< N, T > &lhs, const IndexSpace< N, T > &rhs, IndexSpace< N, T > &result, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT)
REALM_PUBLIC_API Event create_subspaces_by_image_with_difference(const DomainTransform< N, T, N2, T2 > &domain_transform, const std::vector< IndexSpace< N2, T2 > > &sources, const std::vector< IndexSpace< N, T > > &diff_rhs, std::vector< IndexSpace< N, T > > &images, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
REALM_CUDA_HD bool empty(void) const
static REALM_CUDA_HD IndexSpace< N, T > make_empty(void)
static REALM_PUBLIC_API Event compute_unions(const std::vector< IndexSpace< N, T > > &lhss, const std::vector< IndexSpace< N, T > > &rhss, std::vector< IndexSpace< N, T > > &results, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT)
REALM_PUBLIC_API Event create_subspaces_by_preimage(const TRANSFORM &transform, const std::vector< IndexSpace< N2, T2 > > &targets, std::vector< IndexSpace< N, T > > &preimages, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
size_t volume(void) const
IndexSpace(const std::vector< Point< N, T > > &points, bool disjoint=false)
static REALM_PUBLIC_API Event compute_intersection(const std::vector< IndexSpace< N, T > > &subspaces, IndexSpace< N, T > &result, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT)
static REALM_PUBLIC_API Event compute_intersections(const std::vector< IndexSpace< N, T > > &lhss, const std::vector< IndexSpace< N, T > > &rhss, std::vector< IndexSpace< N, T > > &results, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT)
bool contains_all_approx(const Rect< N, T > &r) const
SparsityMap< N, T > sparsity
Definition indexspace.h:325
bool overlaps_approx(const IndexSpace< N, T > &other) const
Event make_valid(bool precise=true) const
REALM_PUBLIC_API Event create_subspaces_by_field(const std::vector< FieldDataDescriptor< IndexSpace< N, T >, FT > > &field_data, const std::vector< FT > &colors, std::vector< IndexSpace< N, T > > &subspaces, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
IndexSpace(const Rect< N, T > &_bounds, SparsityMap< N, T > _sparsity)
REALM_PUBLIC_API Event create_subspace_by_preimage(const std::vector< FieldDataDescriptor< IndexSpace< N, T >, Point< N2, T2 > > > &field_data, const IndexSpace< N2, T2 > &target, IndexSpace< N, T > &preimage, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
bool is_valid(bool precise=true) const
static REALM_PUBLIC_API Event compute_differences(const IndexSpace< N, T > &lhs, const std::vector< IndexSpace< N, T > > &rhss, std::vector< IndexSpace< N, T > > &results, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT)
REALM_PUBLIC_API Event create_subspaces_by_preimage(const std::vector< FieldDataDescriptor< IndexSpace< N, T >, Rect< N2, T2 > > > &field_data, const std::vector< IndexSpace< N2, T2 > > &targets, std::vector< IndexSpace< N, T > > &preimages, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
REALM_PUBLIC_API Event create_subspace_by_field(const std::vector< FieldDataDescriptor< IndexSpace< N, T >, FT > > &field_data, FT color, IndexSpace< N, T > &subspace, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
REALM_PUBLIC_API Event create_subspace_by_image(const std::vector< FieldDataDescriptor< IndexSpace< N2, T2 >, Rect< N, T > > > &field_data, const IndexSpace< N2, T2 > &source, IndexSpace< N, T > &image, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
REALM_PUBLIC_API Event create_equal_subspace(size_t count, size_t granularity, unsigned index, IndexSpace< N, T > &subspace, const ProfilingRequestSet &reqs, Event wait_on=Event::NO_EVENT) const
IndexSpace< N, T > tighten(bool precise=true) const