Automatic Code Generation and Data Management for an Asynchronous Task-based Runtime
Muthu Baskaran, Benoît Pradelle, Benoît Meister, Athanasios Konstantinidis, and Richard Lethin
Publication Source: 5th Workshop on Extreme-scale Programming Tools (ESPT-2016) at The International Conference for High Performance Computing, Networking, Storage and Analysis (SC16)
Hardware scaling and low-power considerations associated with the quest for exascale and extreme scale computing are driving system designers to consider new runtime and execution models such as the event-driven-task (EDT) models that enable more concurrency and reduce the amount of synchronization. Further, for performance, productivity, and code sustainability reasons, there is an increasing demand for autoparallelizing compiler technologies to automatically produce code for EDT-based runtimes. However achieving scalable performance in extreme-scale systems with auto-generated codes is a non-trivial challenge. Some of the key requirements that are important for achieving good scalable performance across many EDT-based systems are: (1) scalable dynamic creation of task-dependence graph and spawning of tasks, (2) scalable creation and management of data and communications, and (3) dynamic scheduling of tasks and movement of data for scalable asynchronous execution. In this paper, we develop capabilities within R-Stream – an automatic source-to-source optimization compiler – for automatic generation and optimization of code and data management targeted towards Open Community Runtime (OCR) – an exascale-ready asynchronous task-based runtime. We demonstrate the effectiveness of our techniques through performance improvements on various benchmarks and proxy application kernels that are relevant to the extreme-scale computing community.