Legion Runtime
|
#include <legion.h>
Public Member Functions | |
PieceIterator (const PieceIterator &rhs) | |
PieceIterator (PieceIterator &&rhs) noexcept | |
PieceIterator (const PhysicalRegion ®ion, FieldID fid, bool privilege_only=true, bool silence_warnings=false, const char *warning_string=NULL) | |
PieceIterator & | operator= (const PieceIterator &rhs) |
PieceIterator & | operator= (PieceIterator &&rhs) noexcept |
bool | valid (void) const |
bool | step (void) |
operator bool (void) const | |
bool | operator() (void) const |
const Domain & | operator* (void) const |
const Domain * | operator-> (void) const |
PieceIterator & | operator++ (void) |
PieceIterator | operator++ (int) |
bool | operator< (const PieceIterator &rhs) const |
bool | operator== (const PieceIterator &rhs) const |
bool | operator!= (const PieceIterator &rhs) const |
Protected Attributes | |
Domain | current_piece |
When mappers create a physical instance of a logical region, they have the option of choosing a layout that is affine or compact. Affine layouts have space for the convex hull of a logical region and support O(1) memory accesses. Compact layouts have affine "pieces" of memory for subsets of the points in the logical region. A PieceIterator object supports iteration over all such affine pieces in a compact instance so that an accessor can be made for each one. Note that you can also make a PieceIterator for a instance with an affine layout: it is just a special case that contains a single piece. Note that the pieces are rectangles which maybe different than the the rectangles in the original index space for the logical region of this physical region. Furthermore, the pieces are iterated in the order that they are laid out in memory which is unrelated to the order rectangles are iterated for the index space of the logical region for the physical region. The application can control whether only rectangles with privileges are presented with the privilege_only flag. If the privilege_only flag is set to true then each rectangles will be for a dense set of points for which the task has privileges. If it is set to false, the the iterator will just return the rectangles for the pieces of the instance regardless of whether the application has privileges on them or not.