CARP: Correct and Efficient Accelerator Programming

About CARP

The CARP European research project aims at improving the programmability of accelerated systems, particularly systems accelerated with GPUs, at all levels.

This involves designing high-level programming formalisms geared towards accelerators, writing highly optimizing compilers to compile high-level code into efficient OpenCL, verifying correctness of accelerator kernels, and employing intensive symbolic testing techniques to find bugs.

Further details are below. See also the project fact sheet and our HiPEAC 2012 overview poster. Check out the project news and dissemination pages for the latest updates and technical achievements.

Key Innovation

Massively parallel accelerator processors, primarily graphics processing units (GPUs), have become widely available to end-users. Accelerators offer tremendous compute power at a low cost, and tasks such as media processing, medical imaging and eye-tracking can be accelerated to beat CPU performance by orders of magnitude, both in energy efficiency and execution speed. Despite these advantages, accelerators present a serious challenge for software development. Designing software for the diverse and growing range of platforms on the market is not feasible without better programming languages and tool support.

The aim of CARP is to design techniques and tools for correct and efficient accelerator programming:

These methods will provide a unified development flow for accelerated software, reducing cost and time-to-market quotas, increasing energy efficiency (and thus battery life in mobile devices) and improving reliability. With respect to key case studies, the CARP technology is anticipated to provide:

Technical Approach

Check out the CARP home page for an interactive overview of the CARP approach.

CARP is centred around the design of a novel language, PENCIL (Platform-Neutral Compute Intermediate Language), for productive accelerator programming. Advanced compilation tools will be investigated, extending and relaxing the polyhedral model to generate highly optimised low-level code from PENCIL programs, targeting the widely adopted industry standard OpenCL. Portable performance will be achieved through profile-based auto-tuning, enabling compiled code to run efficiently across a range of accelerator platforms.

We are designing PENCIL to be a suitable target language for the compilation of domain-specific languages (DSLs). Using DSLs for image processing and linear algebra DSLs we will investigate the CARP compilation tools as a compile path from high-level DSL programs to highly efficient OpenCL code.

Compiler optimisations will be geared towards reducing execution time and increasing energy efficiency. To analyse energy efficiency, we are investigating techniques based on constraint solving and stochastic model checking, as well as dynamic analysis.

To aid design of portably correct accelerator software, we are investigating formal analysis at both at the high- and low-level, developing a formal semantics and verification tools for PENCIL, as well as formal verification techniques for software written or compiled into OpenCL. The aim of these techniques is to automatically discover bugs in accelerator software, establish correctness for critical portions of code, e.g. libraries, and aid program understanding.

Demonstration and Use

The CARP technology will be demonstrated via the implementation of real-time eye-tracking algorithms by Realeyes. Currently, Realeyes perform post-processing to extract and analyse gaze information from video streams. The CARP compilation techniques will enable this to be performed in real-time, across multiple platforms including mobile devices, in an energy-efficient manner. The verification technology will provide maximum confidence in the reliability and probity of this software.

The CARP verification techniques will also be demonstrated by Rightware and ARM, through analysis of their OpenCL benchmark and demo suites.

Monoidics and ARM will use the state-of-the-art program analysis techniques developed during CARP to enhance their software development tool-chains. In addition, selected software tools arising from CARP will be made publicly available, enabling general adoption.

More Information

CARP project fact sheet | HiPEAC 2012 overview poster | Poster on PENCIL | Latest project news | Dissemination activities

Project number 287767. Coordinator: Dr Alastair F. Donaldson,