Concrete Ingredients for Flexible Programming Abstractions on Exascale Systems
From Modelado Foundation
Principal Investigator
Pacific Northwest National Laboratory
Project Summary
Exascale systems are expected to incur variations in their execution environment due to architectural heterogeneity, variable data access latencies, system noise and selective fault recovery. Difficulties in programming such systems have led to a renewed interest in abstractions for finer-grained concurrency. These abstractions allow the programmer to express the essential characteristics of the applications -- concurrency, synchronization, locality, etc. -- that are then used by the software stack to map the computation to the target platform and react to events without onerous programmer involvement. While elegant and inherently adaptive due to fewer synchronizations, effective realizations of such programming abstractions require fundamental advancements in techniques for automated management of concurrency, data movement, and resilience. We propose to transform exascale programming models and runtime systems for scientific applications through the design and characterization of the algorithms that automate concurrency, data movement, and resilience management. These algorithms will target the key features shared among several candidate exascale programming abstractions: finer-grained concurrency, irregular data structures, and flexible data movement and synchronization semantics. This concerted effort exploits the shared characteristics of distinct abstractions to develop an interwoven suite of algorithms that build on each other. The suite of algorithms developed will support the design of flexible programming abstractions for the exascale by helping determine: the mechanisms to effectively execute applications written using specific programming model constructs, the computation characteristics required to support these constructs, and the behavior of these constructs on future systems.