Runtime systems provide an interface between hardware and software. The purpose of a runtime system is to implement this interface efficiently by leveraging fully the capabilities of hardware, while at the same time making complex hardware easy to use for software developers. Runtime systems are critical components of any parallel computing system, whether a chip multi-processor or a data center. A runtime system implements performance-critical operations such as the instantiation, scheduling and synchronization of concurrent activities, and the associated data transfers and memory management. At the same time, a runtime system implements abstractions that hopefully make parallel programming easier, by neutralizing the hardware, therefore simplifying the software.
Productivity in parallel programming depends essentially on the ability of runtime systems to hide from the programmer hardware details such as the number and type of cores, layers and topology of the memory hierarchy, and communication/synchronization mechanisms. Over the years, runtime systems have evolved from passive software components that implement capabilities for parallel execution to active software components that perform dynamic optimization. Modern runtime systems can effectively replace hardware in a number of tasks that would otherwise require extreme complexity, such as maintaining data consistency and analyzing data and control dependences for extracting parallelism. Modern runtime systems also replace programmers by performing many of the arduous tasks that make parallel programming hard.
CARV is conducting cutting-edge research on active runtime systems for productive and accessible parallel programming on systems of all scales, including single-chip many-core processors, accelerator-type parallel architectures, datacenters, and supercomputers. The focus of this research is on improving the scalability and energy-efficiency of parallel software, while accelerating software development and adaptation to new hardware platforms. Current activities include the following projects:
ENCORE. In ENCORE,
CARV develops runtime systems
for processors with hundreds of cores, where it is infeasible to implement a
scalable cache coherence protocol in hardware. Based on the
OpenMP programming model enriched with
data annotations to express data ownership, we investigate runtime systems
that automatically analyze dependences, schedule tasks, and perform the
necessary data transfers across non-coherent memories, all transparently to
programmers. We take a hardware-software co-design approach, investigating
how new capabilities in the runtime system can simplify the design of the
memory hierarchy of a many-core processor.
- TEXT: In TEXT, CARV explores the integration of the Message-Passing Interface (MPI) with task-based dataflow execution models, as a way to extract more parallelism out of scientific applications and enable scalability to future exascale platforms. TEXT provides an incremental path to extending the large existing body of MPI applications, so that they can leverage millions of cores by dynamic and asynchronous execution of fine-grain tasks. Topics of research in CARV include the optimization of critical paths in the runtime system to minimize overheads, new methods for dynamic dependence analysis in the runtime system, and resource management issues that arise due to the interaction between MPI and the node-level runtime system that manages task parallelism.