|
Legion Runtime
|
#include <mapping.h>
Public Member Functions | |
| TaskSlice (const Domain &d, Processor p, bool r, bool s, bool own=false) | |
| TaskSlice (IndexSpace is, Processor p, bool r, bool s) | |
Public Attributes | |
| IndexSpace | domain_is |
| Domain | domain |
| Processor | proc |
| bool | recurse |
| bool | stealable |
| bool | take_ownership |
Instead of needing to map an index space of tasks as a single domain, Legion allows index space of tasks to be decomposed into smaller sets of tasks that are mapped in parallel on different processors. To achieve this, the domain of the index space task launch must be sliced into subsets of points and distributed to the different processors which will actually run the tasks. Decomposing arbitrary domains in a way that matches the target architecture is clearly a mapping decision. Slicing the domain can be done recursively to match the hierarchical nature of modern machines. By setting the 'recurse' field on a DomainSlice struct to true, the runtime will invoke slice_domain again on the destination node. It is acceptable to return a single slice consisting of the entire domain, but this will guarantee that all points in an index space will map on the same node. The mapper can request that the runtime check the correctness of the slicing (e.g. each point is in exactly one slice) dynamically by setting the 'verify_correctness' flag. Note that verification can be expensive and should only be used in testing or rare cases.