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.
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:
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.
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.
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.
Project number 287767. Coordinator: Dr Alastair F. Donaldson, email@example.com