78 static_assert(N > 0,
"N must be positive");
79 static_assert(N <= LEGION_MAX_DIM,
"N must be <= LEGION_MAX_DIM");
80 static_assert(std::is_integral<COORD_T>::value,
"must be integral type");
87 size_t actual_field_size =
sizeof(FT),
89 bool check_field_size =
true,
91 bool check_field_size =
false,
93 bool silence_warnings =
false,
const char* warning_string =
nullptr,
94 size_t subfield_offset = 0)
102 const Rect<N, COORD_T> bounds,
105 size_t actual_field_size =
sizeof(FT),
107 bool check_field_size =
true,
109 bool check_field_size =
false,
111 bool silence_warnings =
false,
const char* warning_string =
nullptr,
112 size_t subfield_offset = 0)
119 const AffineTransform<M, N, COORD_T> transform,
122 size_t actual_field_size =
sizeof(FT),
124 bool check_field_size =
true,
126 bool check_field_size =
false,
128 bool silence_warnings =
false,
const char* warning_string =
nullptr,
129 size_t subfield_offset = 0)
136 const AffineTransform<M, N, COORD_T> transform,
137 const Rect<N, COORD_T> bounds,
140 size_t actual_field_size =
sizeof(FT),
142 bool check_field_size =
true,
144 bool check_field_size =
false,
146 bool silence_warnings =
false,
const char* warning_string =
nullptr,
147 size_t subfield_offset = 0)
152 const Future& future, Memory::Kind kind = Memory::NO_MEMKIND,
155 size_t actual_field_size =
sizeof(FT),
157 bool check_field_size =
true,
159 bool check_field_size =
false,
161 bool silence_warnings =
false,
const char* warning_string =
nullptr,
162 size_t subfield_offset = 0)
167 const Future& future,
const Rect<N, COORD_T> bounds,
168 Memory::Kind kind = Memory::NO_MEMKIND,
171 size_t actual_field_size =
sizeof(FT),
173 bool check_field_size =
true,
175 bool check_field_size =
false,
177 bool silence_warnings =
false,
const char* warning_string =
nullptr,
178 size_t subfield_offset = 0)
184 template<
typename InputIterator>
186 InputIterator start_region, InputIterator stop_region, FieldID fid,
189 size_t actual_field_size =
sizeof(FT),
191 bool check_field_size =
true,
193 bool check_field_size =
false,
195 bool silence_warnings =
false,
const char* warning_string =
nullptr,
196 size_t subfield_offset = 0)
203 template<
typename InputIterator>
205 InputIterator start_region, InputIterator stop_region, FieldID fid,
206 const Rect<N, COORD_T> bounds,
209 size_t actual_field_size =
sizeof(FT),
211 bool check_field_size =
true,
213 bool check_field_size =
false,
215 bool silence_warnings =
false,
const char* warning_string =
nullptr,
216 size_t subfield_offset = 0)
221 template<
typename InputIterator,
int M>
223 InputIterator start_region, InputIterator stop_region, FieldID fid,
224 const AffineTransform<M, N, COORD_T> transform,
227 size_t actual_field_size =
sizeof(FT),
229 bool check_field_size =
true,
231 bool check_field_size =
false,
233 bool silence_warnings =
false,
const char* warning_string =
nullptr,
234 size_t subfield_offset = 0)
239 template<
typename InputIterator,
int M>
241 InputIterator start_region, InputIterator stop_region, FieldID fid,
242 const AffineTransform<M, N, COORD_T> transform,
243 const Rect<N, COORD_T> bounds,
246 size_t actual_field_size =
sizeof(FT),
248 bool check_field_size =
true,
250 bool check_field_size =
false,
252 bool silence_warnings =
false,
const char* warning_string =
nullptr,
253 size_t subfield_offset = 0)
262 size_t actual_field_size =
sizeof(FT),
264 bool check_field_size =
true,
266 bool check_field_size =
false,
268 bool silence_warnings =
false,
const char* warning_string =
nullptr,
269 size_t subfield_offset = 0)
278 size_t actual_field_size =
sizeof(FT),
280 bool check_field_size =
true,
282 bool check_field_size =
false,
284 bool silence_warnings =
false,
const char* warning_string =
nullptr,
285 size_t subfield_offset = 0)
291 const UntypedDeferredBuffer<COORD_T>& buffer,
294 size_t actual_field_size =
sizeof(FT),
296 bool check_field_size =
true,
298 bool check_field_size =
false,
300 bool silence_warnings =
false,
const char* warning_string =
nullptr,
301 size_t subfield_offset = 0)
307 const UntypedDeferredBuffer<COORD_T>& buffer,
308 const Rect<N, COORD_T>& bounds,
311 size_t actual_field_size =
sizeof(FT),
313 bool check_field_size =
true,
315 bool check_field_size =
false,
317 bool silence_warnings =
false,
const char* warning_string =
nullptr,
318 size_t subfield_offset = 0)
325 const UntypedDeferredBuffer<COORD_T>& buffer,
326 const AffineTransform<M, N, COORD_T>& transform,
329 size_t actual_field_size =
sizeof(FT),
331 bool check_field_size =
true,
333 bool check_field_size =
false,
335 bool silence_warnings =
false,
const char* warning_string =
nullptr,
336 size_t subfield_offset = 0)
343 const UntypedDeferredBuffer<COORD_T>& buffer,
344 const AffineTransform<M, N, COORD_T>& transform,
345 const Rect<N, COORD_T>& bounds,
348 size_t actual_field_size =
sizeof(FT),
350 bool check_field_size =
true,
352 bool check_field_size =
false,
354 bool silence_warnings =
false,
const char* warning_string =
nullptr,
355 size_t subfield_offset = 0)
358 typedef FT value_type;
359 typedef FT& reference;
360 typedef const FT& const_reference;
361 static const int dim = N;
386 static_assert(N > 0,
"N must be positive");
387 static_assert(N <= LEGION_MAX_DIM,
"N must be <= LEGION_MAX_DIM");
388 static_assert(std::is_integral<COORD_T>::value,
"must be integral type");
393 bool silence_warnings =
false,
const char* warning_string =
nullptr,
394 size_t subfield_offset = 0,
395 size_t actual_field_size =
sizeof(
typename REDOP::RHS),
397 bool check_field_size =
true
399 bool check_field_size =
false
409 const Rect<N, COORD_T> bounds,
bool silence_warnings =
false,
410 const char* warning_string =
nullptr,
size_t subfield_offset = 0,
411 size_t actual_field_size =
sizeof(
typename REDOP::RHS),
413 bool check_field_size =
true
415 bool check_field_size =
false
424 const AffineTransform<M, N, COORD_T> transform,
425 bool silence_warnings =
false,
const char* warning_string =
nullptr,
426 size_t subfield_offset = 0,
427 size_t actual_field_size =
sizeof(
typename REDOP::RHS),
429 bool check_field_size =
true
431 bool check_field_size =
false
440 const AffineTransform<M, N, COORD_T> transform,
441 const Rect<N, COORD_T> bounds,
bool silence_warnings =
false,
442 const char* warning_string =
nullptr,
size_t subfield_offset = 0,
443 size_t actual_field_size =
sizeof(
typename REDOP::RHS),
445 bool check_field_size =
true
447 bool check_field_size =
false
455 template<
typename InputIterator>
457 InputIterator start_region, InputIterator stop_region, FieldID fid,
458 ReductionOpID redop,
bool silence_warnings =
false,
459 const char* warning_string =
nullptr,
size_t subfield_offset = 0,
460 size_t actual_field_size =
sizeof(
typename REDOP::RHS),
462 bool check_field_size =
true
464 bool check_field_size =
false
473 template<
typename InputIterator>
475 InputIterator start_region, InputIterator stop_region, FieldID fid,
476 ReductionOpID redop,
const Rect<N, COORD_T> bounds,
477 bool silence_warnings =
false,
const char* warning_string =
nullptr,
478 size_t subfield_offset = 0,
479 size_t actual_field_size =
sizeof(
typename REDOP::RHS),
481 bool check_field_size =
true
483 bool check_field_size =
false
490 template<
typename InputIterator,
int M>
492 InputIterator start_region, InputIterator stop_region, FieldID fid,
493 ReductionOpID redop,
const AffineTransform<M, N, COORD_T> transform,
494 bool silence_warnings =
false,
const char* warning_string =
nullptr,
495 size_t subfield_offset = 0,
496 size_t actual_field_size =
sizeof(
typename REDOP::RHS),
498 bool check_field_size =
true
500 bool check_field_size =
false
507 template<
typename InputIterator,
int M>
509 InputIterator start_region, InputIterator stop_region, FieldID fid,
510 ReductionOpID redop,
const AffineTransform<M, N, COORD_T> transform,
511 const Rect<N, COORD_T> bounds,
bool silence_warnings =
false,
512 const char* warning_string =
nullptr,
size_t subfield_offset = 0,
513 size_t actual_field_size =
sizeof(
typename REDOP::RHS),
515 bool check_field_size =
true
517 bool check_field_size =
false
526 const char* warning_string =
nullptr,
size_t subfield_offset = 0,
527 size_t actual_field_size =
sizeof(
typename REDOP::RHS),
529 bool check_field_size =
true
531 bool check_field_size =
false
540 bool silence_warnings =
false,
const char* warning_string =
nullptr,
541 size_t subfield_offset = 0,
542 size_t actual_field_size =
sizeof(
typename REDOP::RHS),
544 bool check_field_size =
true
546 bool check_field_size =
false
554 const UntypedDeferredBuffer<COORD_T>& buffer,
555 bool silence_warnings =
false,
const char* warning_string =
nullptr,
556 size_t subfield_offset = 0,
557 size_t actual_field_size =
sizeof(
typename REDOP::RHS),
559 bool check_field_size =
true
561 bool check_field_size =
false
569 const UntypedDeferredBuffer<COORD_T>& buffer,
570 const Rect<N, COORD_T>& bounds,
bool silence_warnings =
false,
571 const char* warning_string =
nullptr,
size_t subfield_offset = 0,
572 size_t actual_field_size =
sizeof(
typename REDOP::RHS),
574 bool check_field_size =
true
576 bool check_field_size =
false
585 const UntypedDeferredBuffer<COORD_T>& buffer,
586 const AffineTransform<M, N, COORD_T>& transform,
587 bool silence_warnings =
false,
const char* warning_string =
nullptr,
588 size_t subfield_offset = 0,
589 size_t actual_field_size =
sizeof(
typename REDOP::RHS),
591 bool check_field_size =
true
593 bool check_field_size =
false
602 const UntypedDeferredBuffer<COORD_T>& buffer,
603 const AffineTransform<M, N, COORD_T>& transform,
604 const Rect<N, COORD_T>& bounds,
bool silence_warnings =
false,
605 const char* warning_string =
nullptr,
size_t subfield_offset = 0,
606 size_t actual_field_size =
sizeof(
typename REDOP::RHS),
608 bool check_field_size =
true
610 bool check_field_size =
false
615 typedef typename REDOP::RHS value_type;
616 typedef typename REDOP::RHS& reference;
617 typedef const typename REDOP::RHS& const_reference;
618 static const int dim = N;