Legion Runtime
Public Member Functions | Protected Attributes | List of all members
Legion::PieceIterator Class Reference

#include <legion.h>

Inheritance diagram for Legion::PieceIterator:
Legion::PieceIteratorT< DIM, coord_t > Legion::PieceIteratorT< DIM, COORD_T >

Public Member Functions

 PieceIterator (const PieceIterator &rhs)
 
 PieceIterator (PieceIterator &&rhs) noexcept
 
 PieceIterator (const PhysicalRegion &region, FieldID fid, bool privilege_only=true, bool silence_warnings=false, const char *warning_string=NULL)
 
PieceIteratoroperator= (const PieceIterator &rhs)
 
PieceIteratoroperator= (PieceIterator &&rhs) noexcept
 
bool valid (void) const
 
bool step (void)
 
 operator bool (void) const
 
bool operator() (void) const
 
const Domainoperator* (void) const
 
const Domainoperator-> (void) const
 
PieceIteratoroperator++ (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
 

Detailed Description

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.


The documentation for this class was generated from the following file: