Recent applications impose various needs on computing environments. These needs include, but not exhaustively, high throughput, low latency, energy efficiency, reliability, or any combinations of them. For instance, both mobile and datacenter applications ask for high performance and energy efficiency. Furthermore, the increasing possibility of faults due to the aggressive semiconductor technology scaling gives the emphasis on reliability.
In order to meet such complex requirements without unduly burdening programmers, compilers must become smart. They have to understand programs better with accurate analysis and generate optimized code that properly exploits the underlying architecture support for the specific goals. To achieve high performance with the multitude of features that current generation microprocessors provide, for example, compilers should be able to extract the required levels of parallelism from the program and orchestrate the code so as to efficiently use the underlying hardware. They also need to provide mechanisms for reliability. The CCCP group conducts diverse research on smart compilation techniques to address the complex requirements.
The LLVM compiler framework is used to develop and implement compiler optimization passes to realize those research ideas.
Below is a list of the research work we have been doing in the area of compilers.
- Compilation for Streaming Applications: A higher level of programming abstraction along with intelligent static and dynamic compiler optimizations can solve the issues of programming heterogeneous parallel systems while maintaining portability and retargetability. One such abstraction is offered by the streaming paradigm. We propose new techniques and compilation frameworks for streaming domain to various components of heterogeneous systems.
- Reliability against Soft Errors: We are developing minimally invasive software solutions that provide high soft error coverage with very little overhead, enabling deployment even in commodity processors with "shoestring" reliability budgets. Leveraging intelligent analysis at compile time, we are able to focus efforts on protecting statistically-vulnerable portions of program code. We effectively apply instruction duplication to protect only those segments of code that, when subjected to a soft error, are likely to result in user-visible faults.
- Support for Concurrent Programs: Reasoning about concurrency is formidably difficult for human programmers due to the numerous possible interleavings of basic operations. We seek for compiler techniques to make parallel programming easier while fully exploiting the computational power provided by multicore architectures.
- Past Projects: Here you can find a list of our past projects in this domain.
Page last modified January 22, 2016.