The Legion programming system provides high-level abstractions for application and middleware developers to describe properties of the data on which they compute, enabling the underlying runtime to automate many aspects of achieving high performance, such as extracting task- and data-level parallelism.
A primary goal of this project is to develop and integrate new and modified features into Legion, such as better support for complex data structures, scalable data partitioning mechanisms, and more flexible and performant ways of mapping computations and data to hardware. We will work directly with ECP teams to co-design these features in the context of their exascale applications.
Specifically, we will focus on three areas:
- Improvements to our data model to enable application developers to easily express a variety of simple and complex data organizations found in application motifs;
- Improvements to the application programmer interface and our tools for optimizing performance on exascale architectures, easing the burden for developers building new or porting existing applications to Legion;
- Integration with other elements of the ECP software stack and Path Forward activities, targeting improved fault tolerance, scalability and performance of networking and resource management, better interoperability with other runtime systems, and better integration with storage system I/O services.