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: