73 static_assert(N > 0,
"N must be positive");
74 static_assert(N <= LEGION_MAX_DIM,
"N must be <= LEGION_MAX_DIM");
75 static_assert(std::is_integral<COORD_T>::value,
"must be integral type");
82 size_t actual_field_size =
sizeof(FT),
84 bool check_field_size =
true,
86 bool check_field_size =
false,
88 bool silence_warnings =
false,
const char* warning_string =
nullptr,
89 size_t subfield_offset = 0)
97 const Rect<N, COORD_T> bounds,
100 size_t actual_field_size =
sizeof(FT),
102 bool check_field_size =
true,
104 bool check_field_size =
false,
106 bool silence_warnings =
false,
const char* warning_string =
nullptr,
107 size_t subfield_offset = 0)
114 const AffineTransform<M, N, COORD_T> transform,
117 size_t actual_field_size =
sizeof(FT),
119 bool check_field_size =
true,
121 bool check_field_size =
false,
123 bool silence_warnings =
false,
const char* warning_string =
nullptr,
124 size_t subfield_offset = 0)
131 const AffineTransform<M, N, COORD_T> transform,
132 const Rect<N, COORD_T> bounds,
135 size_t actual_field_size =
sizeof(FT),
137 bool check_field_size =
true,
139 bool check_field_size =
false,
141 bool silence_warnings =
false,
const char* warning_string =
nullptr,
142 size_t subfield_offset = 0)
147 const Future& future, Memory::Kind kind = Memory::NO_MEMKIND,
150 size_t actual_field_size =
sizeof(FT),
152 bool check_field_size =
true,
154 bool check_field_size =
false,
156 bool silence_warnings =
false,
const char* warning_string =
nullptr,
157 size_t subfield_offset = 0)
162 const Future& future,
const Rect<N, COORD_T> bounds,
163 Memory::Kind kind = Memory::NO_MEMKIND,
166 size_t actual_field_size =
sizeof(FT),
168 bool check_field_size =
true,
170 bool check_field_size =
false,
172 bool silence_warnings =
false,
const char* warning_string =
nullptr,
173 size_t subfield_offset = 0)
179 template<
typename InputIterator>
181 InputIterator start_region, InputIterator stop_region, FieldID fid,
184 size_t actual_field_size =
sizeof(FT),
186 bool check_field_size =
true,
188 bool check_field_size =
false,
190 bool silence_warnings =
false,
const char* warning_string =
nullptr,
191 size_t subfield_offset = 0)
198 template<
typename InputIterator>
200 InputIterator start_region, InputIterator stop_region, FieldID fid,
201 const Rect<N, COORD_T> bounds,
204 size_t actual_field_size =
sizeof(FT),
206 bool check_field_size =
true,
208 bool check_field_size =
false,
210 bool silence_warnings =
false,
const char* warning_string =
nullptr,
211 size_t subfield_offset = 0)
216 template<
typename InputIterator,
int M>
218 InputIterator start_region, InputIterator stop_region, FieldID fid,
219 const AffineTransform<M, N, COORD_T> transform,
222 size_t actual_field_size =
sizeof(FT),
224 bool check_field_size =
true,
226 bool check_field_size =
false,
228 bool silence_warnings =
false,
const char* warning_string =
nullptr,
229 size_t subfield_offset = 0)
234 template<
typename InputIterator,
int M>
236 InputIterator start_region, InputIterator stop_region, FieldID fid,
237 const AffineTransform<M, N, COORD_T> transform,
238 const Rect<N, COORD_T> bounds,
241 size_t actual_field_size =
sizeof(FT),
243 bool check_field_size =
true,
245 bool check_field_size =
false,
247 bool silence_warnings =
false,
const char* warning_string =
nullptr,
248 size_t subfield_offset = 0)
257 size_t actual_field_size =
sizeof(FT),
259 bool check_field_size =
true,
261 bool check_field_size =
false,
263 bool silence_warnings =
false,
const char* warning_string =
nullptr,
264 size_t subfield_offset = 0)
273 size_t actual_field_size =
sizeof(FT),
275 bool check_field_size =
true,
277 bool check_field_size =
false,
279 bool silence_warnings =
false,
const char* warning_string =
nullptr,
280 size_t subfield_offset = 0)
286 const UntypedDeferredBuffer<COORD_T>& buffer,
289 size_t actual_field_size =
sizeof(FT),
291 bool check_field_size =
true,
293 bool check_field_size =
false,
295 bool silence_warnings =
false,
const char* warning_string =
nullptr,
296 size_t subfield_offset = 0)
302 const UntypedDeferredBuffer<COORD_T>& buffer,
303 const Rect<N, COORD_T>& bounds,
306 size_t actual_field_size =
sizeof(FT),
308 bool check_field_size =
true,
310 bool check_field_size =
false,
312 bool silence_warnings =
false,
const char* warning_string =
nullptr,
313 size_t subfield_offset = 0)
320 const UntypedDeferredBuffer<COORD_T>& buffer,
321 const AffineTransform<M, N, COORD_T>& transform,
324 size_t actual_field_size =
sizeof(FT),
326 bool check_field_size =
true,
328 bool check_field_size =
false,
330 bool silence_warnings =
false,
const char* warning_string =
nullptr,
331 size_t subfield_offset = 0)
338 const UntypedDeferredBuffer<COORD_T>& buffer,
339 const AffineTransform<M, N, COORD_T>& transform,
340 const Rect<N, COORD_T>& bounds,
343 size_t actual_field_size =
sizeof(FT),
345 bool check_field_size =
true,
347 bool check_field_size =
false,
349 bool silence_warnings =
false,
const char* warning_string =
nullptr,
350 size_t subfield_offset = 0)
353 typedef FT value_type;
354 typedef FT& reference;
355 typedef const FT& const_reference;
356 static const int dim = N;
381 static_assert(N > 0,
"N must be positive");
382 static_assert(N <= LEGION_MAX_DIM,
"N must be <= LEGION_MAX_DIM");
383 static_assert(std::is_integral<COORD_T>::value,
"must be integral type");
388 bool silence_warnings =
false,
const char* warning_string =
nullptr,
389 size_t subfield_offset = 0,
390 size_t actual_field_size =
sizeof(
typename REDOP::RHS),
392 bool check_field_size =
true
394 bool check_field_size =
false
404 const Rect<N, COORD_T> bounds,
bool silence_warnings =
false,
405 const char* warning_string =
nullptr,
size_t subfield_offset = 0,
406 size_t actual_field_size =
sizeof(
typename REDOP::RHS),
408 bool check_field_size =
true
410 bool check_field_size =
false
419 const AffineTransform<M, N, COORD_T> transform,
420 bool silence_warnings =
false,
const char* warning_string =
nullptr,
421 size_t subfield_offset = 0,
422 size_t actual_field_size =
sizeof(
typename REDOP::RHS),
424 bool check_field_size =
true
426 bool check_field_size =
false
435 const AffineTransform<M, N, COORD_T> transform,
436 const Rect<N, COORD_T> bounds,
bool silence_warnings =
false,
437 const char* warning_string =
nullptr,
size_t subfield_offset = 0,
438 size_t actual_field_size =
sizeof(
typename REDOP::RHS),
440 bool check_field_size =
true
442 bool check_field_size =
false
450 template<
typename InputIterator>
452 InputIterator start_region, InputIterator stop_region, FieldID fid,
453 ReductionOpID redop,
bool silence_warnings =
false,
454 const char* warning_string =
nullptr,
size_t subfield_offset = 0,
455 size_t actual_field_size =
sizeof(
typename REDOP::RHS),
457 bool check_field_size =
true
459 bool check_field_size =
false
468 template<
typename InputIterator>
470 InputIterator start_region, InputIterator stop_region, FieldID fid,
471 ReductionOpID redop,
const Rect<N, COORD_T> bounds,
472 bool silence_warnings =
false,
const char* warning_string =
nullptr,
473 size_t subfield_offset = 0,
474 size_t actual_field_size =
sizeof(
typename REDOP::RHS),
476 bool check_field_size =
true
478 bool check_field_size =
false
485 template<
typename InputIterator,
int M>
487 InputIterator start_region, InputIterator stop_region, FieldID fid,
488 ReductionOpID redop,
const AffineTransform<M, N, COORD_T> transform,
489 bool silence_warnings =
false,
const char* warning_string =
nullptr,
490 size_t subfield_offset = 0,
491 size_t actual_field_size =
sizeof(
typename REDOP::RHS),
493 bool check_field_size =
true
495 bool check_field_size =
false
502 template<
typename InputIterator,
int M>
504 InputIterator start_region, InputIterator stop_region, FieldID fid,
505 ReductionOpID redop,
const AffineTransform<M, N, COORD_T> transform,
506 const Rect<N, COORD_T> bounds,
bool silence_warnings =
false,
507 const char* warning_string =
nullptr,
size_t subfield_offset = 0,
508 size_t actual_field_size =
sizeof(
typename REDOP::RHS),
510 bool check_field_size =
true
512 bool check_field_size =
false
521 const char* warning_string =
nullptr,
size_t subfield_offset = 0,
522 size_t actual_field_size =
sizeof(
typename REDOP::RHS),
524 bool check_field_size =
true
526 bool check_field_size =
false
535 bool silence_warnings =
false,
const char* warning_string =
nullptr,
536 size_t subfield_offset = 0,
537 size_t actual_field_size =
sizeof(
typename REDOP::RHS),
539 bool check_field_size =
true
541 bool check_field_size =
false
549 const UntypedDeferredBuffer<COORD_T>& buffer,
550 bool silence_warnings =
false,
const char* warning_string =
nullptr,
551 size_t subfield_offset = 0,
552 size_t actual_field_size =
sizeof(
typename REDOP::RHS),
554 bool check_field_size =
true
556 bool check_field_size =
false
564 const UntypedDeferredBuffer<COORD_T>& buffer,
565 const Rect<N, COORD_T>& bounds,
bool silence_warnings =
false,
566 const char* warning_string =
nullptr,
size_t subfield_offset = 0,
567 size_t actual_field_size =
sizeof(
typename REDOP::RHS),
569 bool check_field_size =
true
571 bool check_field_size =
false
580 const UntypedDeferredBuffer<COORD_T>& buffer,
581 const AffineTransform<M, N, COORD_T>& transform,
582 bool silence_warnings =
false,
const char* warning_string =
nullptr,
583 size_t subfield_offset = 0,
584 size_t actual_field_size =
sizeof(
typename REDOP::RHS),
586 bool check_field_size =
true
588 bool check_field_size =
false
597 const UntypedDeferredBuffer<COORD_T>& buffer,
598 const AffineTransform<M, N, COORD_T>& transform,
599 const Rect<N, COORD_T>& bounds,
bool silence_warnings =
false,
600 const char* warning_string =
nullptr,
size_t subfield_offset = 0,
601 size_t actual_field_size =
sizeof(
typename REDOP::RHS),
603 bool check_field_size =
true
605 bool check_field_size =
false
610 typedef typename REDOP::RHS value_type;
611 typedef typename REDOP::RHS& reference;
612 typedef const typename REDOP::RHS& const_reference;
613 static const int dim = N;